直接读取寄存器地址时,REG() 还是REG32~~

xiaoke3344 2008-12-09 09:33:48
如题:

直接读取寄存器地址时,REG() 还是REG32~~ 2者区别?

直接在源码中 读取, REG(0x00000f4)

用到这些需要什么头文件~~
...全文
985 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
x86 2008-12-10
  • 打赏
  • 举报
回复
readl不是命令或者系统调用,man找不到的。
#define __raw_readl readl
所以__raw_readl也是readl
#define readl(x) __readl(x)

最后的定义是
static __always_inline __u32 __readl(const volatile void __iomem *addr)
{
return *(__force volatile __u32 *)addr;
}

所以实际上你也可以直接操作内存指针,不过不知道那些修饰符会不会有特别的影响。

用grep -r可以很容易找到一个定义的
xiaoke3344 2008-12-09
  • 打赏
  • 举报
回复
那那这样子的话,直接用 readl/writel 函数 可以替代了?

需要什么头文件吗?

我man readl 找不到信息

x86 2008-12-09
  • 打赏
  • 举报
回复
grep -r REG32 .
“.”在最后。
估计最后都会去调用readl指令去读寄存器。
x86 2008-12-09
  • 打赏
  • 举报
回复
这个多半都是宏,你grep一下源码看看怎么定义的
在kernel源码目录下,
grep -r . REG32

xiaoke3344 2008-12-09
  • 打赏
  • 举报
回复
??顶下

xiaoke3344 2008-12-09
  • 打赏
  • 举报
回复
怎么直接修改寄存器地址里的存储的值


??

joyself 2008-12-09
  • 打赏
  • 举报
回复
寄存器不是映射到memory空间的嘛?

用__raw_readl或者它的朋友们-- __raw_readw等,呵呵。。。。

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧