当前位置: 技术问答>linux和unix
__REG,__REG1,__REG2
来源: 互联网 发布时间:2016-01-25
本文导语: 今天看了几段2410的代码,其中头文件定义部分,有以下定义 #define bMEMCTL(Nb) __REG1(MEM_CTL_BASE+(Nb)) #define bNAND_CTL(Nb) __REG(NAND_CTL_BASE+(Nb)) 还看到有__REGb,和__REG2 这些__REG,__REG1,__REG2,__REGb都代表什么意思,在什么地...
今天看了几段2410的代码,其中头文件定义部分,有以下定义
#define bMEMCTL(Nb) __REG1(MEM_CTL_BASE+(Nb))
#define bNAND_CTL(Nb) __REG(NAND_CTL_BASE+(Nb))
还看到有__REGb,和__REG2
这些__REG,__REG1,__REG2,__REGb都代表什么意思,在什么地方查看呢?
#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 includeasm-armarch-lh7a40xhardware.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)))
在Hardware.h includeasm-armarch-lh7a40xhardware.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)))
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。