我想知道这段代码如何将指针与64位边界对齐?我在uboot cpu / mpc85xx / ether_fcc.c中找到了这段代码。这里底层的以太网控制器要求缓冲区指针与64位边界对齐。
uint cbd_bufaddr;
volatile uchar *NetRxPackets[PKTBUFSRX];
cbd_bufaddr = (uint)NetRxPackets[i];
我认为以下检查是必须的,以确保指针是 64位对齐,但我在uboot代码中没有看到它。
if (cbd_bufaddr % 8 != 0)
cbd_bufaddr += 8 - cbd_bufaddr % 8;
我真的很感激,如果有人能指出我是否遗漏了一些明显的东西?
答案 0 :(得分:4)
原始代码中没有任何内容可以保证对齐的任何内容。您的第一个代码块只是将指针从NetRxPackets
数组中拉出并将其粘贴到cbd_bufaddr
中。您提供的代码中没有任何迹象表明该数组中的指针有任何对齐限制。您需要向我们展示初始化该数组的代码,以便我们告诉您有关正在发生的事情的更多信息。