当前位置:  技术问答>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都代表什么意思,在什么地方查看呢?

|
硬件相关的,应该跟地址有关吧..

在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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 局域网设备管理 IP Reg
  • sco unix中类似reg.sco的文件怎么执行?
  • VIM具有多个剪切板,":reg"命令查看各剪切板。系统剪切板的编号就是"+。
  • Jakarta.reg导不进注册表啊,怎么办啊
  • 2.VIM具有多个剪切板,目的是为了用户在做较复杂的字符处理的时候,可以更方便的复制粘贴。使用一下":reg"命令(先按ESC键,退出编辑模式,然后按:进入命令


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3