在Linux / ARM上有没有可靠的(最好没有假阴性和假阳性)方法来检测运行时LDREX / STREXprimefaces操作的可用性? 我在auxvector的AT_HWCAP字段中查找了一些东西,发现了一些可能间接暗示可用性的东西(例如, HWCAP_LPAE可能HWCAP_LPAE ),但它们可能会有误报。
ARM如何在IRQ处理程序中切换到svc模式?
ARM Linux引导的一些细节
Linux内核空闲循环
如何debuggingARM Linux内核(msleep())locking?
在写入/ dev / mem时,是否真的需要msync?
LDREX / STREX是在ARMv6架构中引入的,所以你只需要检查架构版本 – 如果是v6或更高版本,你就可以拥有它们。 如果没有,你不这样做。 从特权代码你可以直接读取MIDR,否则一些用户空间接口,如/proc/cpuinfo 。
如果你真的需要实现在所有体系结构版本中工作的原子,你可能最好依靠由coreel User助手提供的cmpxchg ,而不是试图推出你自己的。
Mpcore,TRM不会说如果你可以或不能访问这在一个非priveledged模式。
MRC p15,<Rd>,c0,0; reads Main ID register
cpu id注册了一些之后明确地说:仅在特权模式下可访问所以我希望/假设arm文档会说主要id注册相同的事情。 当然有多少主要的注册答案,你必须通过核实这是什么核心?
嗯,MIDR =主要ID注册,Notlikethat提到的MIDR,我想这是一个简单的测试,看看你是否可以在用户模式下访问MIDR …
编辑:
1176明确说明了MIDR。
只能在特权模式下访问。
我想知道这个限制是否消失了。
EDIT2:
在mpcore上验证,您无法在用户模式下访问MIDR。
EDIT3:
我认为你必须依靠内核来帮助用户空间。 和/或如果你只支持ARMv6或更新版本,那么ldrex / strex将在那里,你不必检查,假设这不是运行在cortex-m上,而是运行在arm11或cortex-a / r上。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。