首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

_REG,REG1,REG2,该如何处理

2012-02-23 
__REG,__REG1,__REG2今天看了几段2410的代码,其中头文件定义部分,有以下定义#definebMEMCTL(Nb)__REG1(MEM

__REG,__REG1,__REG2
今天看了几段2410的代码,其中头文件定义部分,有以下定义
#define   bMEMCTL(Nb)       __REG1(MEM_CTL_BASE+(Nb))
#define   bNAND_CTL(Nb)       __REG(NAND_CTL_BASE+(Nb))
还看到有__REGb,和__REG2
这些__REG,__REG1,__REG2,__REGb都代表什么意思,在什么地方查看呢?


[解决办法]
硬件相关的,应该跟地址有关吧..

在Hardware.h \include\asm-arm\arch-lh7a40x\hardware.h 里

typedef struct { volatile u32 offset[4096]; } __regbase;
# define __REGP(x)((__regbase *)((x)&~4095))-> offset[((x)&4095)> > 2]
# define __REG(x)__REGP(io_p2v(x))
typedef struct { volatile u16 offset[4096]; } __regbase16;
# define __REGP16(x)((__regbase16 *)((x)&~4095))-> offset[((x)&4095)> > 1]
# define __REG16(x)__REGP16(io_p2v(x))
typedef struct { volatile u8 offset[4096]; } __regbase8;
# define __REGP8(x)((__regbase8 *)((x)&~4095))-> offset[(x)&4095]
# define __REG8(x)__REGP8(io_p2v(x))
#endif

/* Let 's kick gcc 's ass again... */
# define __REG2(x,y)\
( __builtin_constant_p(y) ? (__REG((x) + (y))) \
: (*(volatile u32 *)((u32)&__REG(x) + (y))) )

# define __PREG(x)(io_v2p((u32)&(x)))

热点排行