发现S5pv210 uboot 一个 Inp32(_addr) 和readl(_addr)奇葩问题
在S5pv210 的uboot里面,有
#define Inp32(_addr) readl(_addr)
但是
if(!(Inp32(0xE0200C04)&0x02))和if(!(readl(0xE0200C04)&0x02))
使用效果完全不一样,让人大跌眼镜,
搞的我整了一天,发现以前我用的是f(!(Inp32(0xE0200C04)&0x02))OK ,
但是一看定义,一个样子的,真是奇葩啊。居然会这样,搞不懂,请整过的人来说说。
if(!(readl(0xE0200C04)&0x02)) 完全不按照正常程序章法运行。
#define Inp32(_addr) readl(_addr)
但是
if(!(Inp32(0xE0200C04)&0x02))和if(!(readl(0xE0200C04)&0x02))
使用效果完全不一样,让人大跌眼镜,
搞的我整了一天,发现以前我用的是f(!(Inp32(0xE0200C04)&0x02))OK ,
但是一看定义,一个样子的,真是奇葩啊。居然会这样,搞不懂,请整过的人来说说。
if(!(readl(0xE0200C04)&0x02)) 完全不按照正常程序章法运行。
本文探讨了S5PV210 U-Boot中Inp32宏与readl函数在特定条件下的表现差异。在检查寄存器0xE0200C04的状态时,Inp32与readl虽然被定义为相同,但在实际应用中却产生了截然不同的结果。
1084

被折叠的 条评论
为什么被折叠?



