对于ARM处理器同时支持ARM和Thumb-2状态(指令集),如何设置运行内核模式代码的状态,如中断和系统调用的内核代码。如何设置内核代码的默认ARM处理器状态?
回答
在v7架构*中,SCTLR
的位30确定是否在ARM或Thumb状态下执行异常,除非外部信号另有说明,否则默认为ARM。对于v6及更早版本,异常总是在ARM状态下进行。在实际编写操作系统的上下文中,如果您想以向后兼容的方式在Thumb中编写异常处理程序,我想您也可以简单地使用异常向量中的ARM互操作分支到处理程序代码本身 - 我尽管如此,我不是专家,所以我不能肯定地说这没有什么可怕的陷阱。
*和在两者之间古怪即1156
听起来像你可以得到中断一样正确......我刚刚找到了SCTLR的ArmV7 bit30。当然,对于Cortex-M系列,它始终是Thumb。 UnixSmurf具有用于跳转/引导初始Linux映像的API期望。 –
谢谢。如果SCTLR指示中断是在ARM状态下进行的,则Thumb模式中断时,状态是否会自动转换到ARM模式? – Thomson
@Thomson事实上 - 在一个'SVC'上,中止,中断等返回地址和SPSR被隐藏,CPSR被设置为适当的模式_和指令集_,并且PC被设置为相关的异常向量地址并继续从那里。从异常中返回将通过SPSR恢复Thumb状态。 ARM ARM比我更清楚地解释异常输入,因此请检查以获取更多详细信息。 – Notlikethat
- 1. 如何设置UISegmentedControl的默认状态?
- 2. 如何为无服务器功能设置默认状态码?
- 3. Linux内核3.9 KVM for ARM处理器
- 4. 如何设置默认烬CLI代理
- 5. 设置数组的默认状态
- 6. 如何更改TFS中源代码管理的默认设置?
- 7. 设置状态代码和内容
- 8. 将状态设置为默认按钮
- 9. jQuery延迟设置默认状态
- 10. 设置http状态代码
- 11. AuthorizationPolicy设置状态代码
- 12. 何处放置默认内容?代码或数据库?
- 13. 如何设置JavaScript的默认复选框状态?
- 14. 如何在ListView中设置复选框的默认状态[Android]
- 15. 如何设置UIButton的默认状态图像?
- 16. 如何在AngularJS中以默认的回退状态设置嵌套状态
- 17. 处理PHPUnit_Extensions_Selenium2TestCase中的HTTP状态代码
- 18. Linux内核如何处理写入/ sys/power /状态
- 19. 如何设置VB应用程序代理服务器设置为默认系统代理设置
- 20. ASP.NET默认静态处理
- 21. 如何将代码分散到核心多核处理器
- 22. ARM/DSP Linux工具链内核设置
- 23. 如何为映射的HttpMethods设置默认成功状态码Spring MVC @RestControllers?
- 24. 如何找到默认信号处理函数的源代码?
- 25. 如何在超HTTP服务器处理程序中设置HTTP状态码?
- 26. ui-router如何设置默认状态和“未找到(404)”状态
- 27. 我如何设置默认对齐的变量与arm gcc
- 28. 如何使用Angular UI设置默认状态
- 29. 如何在ARM处理器上设置软件断点?
- 30. 使用默认代理设置与httplib
通常,它总是默认为** ** ARM,除非CPU仅支持** **拇指。即,Cortex-M系列。在某些特定的CPU上可能会有一些CP15寄存器来支持这一点,但肯定没有通用的** ARM **机制。 –
当配置的目标支持Thumb-2时,Linux有CONFIG_THUMB2_KERNEL来设置构建内核的指令集。但是,如果处理器支持ARM,则入口点始终是ARM状态。 – unixsmurf