在Linux内核中,该文件是ARM数据中止异常处理代码的一部分,该代码未定义CPU_DABORT_HANDLER,然后检查是否在更下层定义。
为什么有此代码?您将如何使用它?
答案 0 :(得分:0)
在Linux内核中,该文件是ARM数据中止异常处理代码的一部分,该代码未定义CPU_DABORT_HANDLER,然后检查是否在更下层定义。
...
为什么会有这个代码?
正在处理两种情况。一种是针对特定CPU的定制内核构建。如果Linux内核可以在多个板(Debian,Ubuntu等)上运行,则为第二个。您需要检查难题的其他方面。
重要的部分在entry-armv.S宏dabt_helper
中。
.macro dabt_helper
@
@ Call the processor-specific abort handler:
@
@ r2 - pt_regs
@ r4 - aborted context pc
@ r5 - aborted context psr
@
@ The abort handler must return the aborted address in r0, and
@ the fault status register in r1. r9 must be preserved.
@
#ifdef MULTI_DABORT
ldr ip, .LCprocfns
mov lr, pc
ldr pc, [ip, #PROCESSOR_DABT_FUNC]
#else
bl CPU_DABORT_HANDLER
#endif
.endm
通用代码将调用dabt_helper
。这是针对CPU特定版本的直接函数调用。否则,这是一个函数指针查找(对于CPU来说很难预取),它会稍微慢一些,并且会增加代码。
您将如何使用它?
您可以将其与内核“ kconfig”选项一起使用。如果您针对特定的CPU进行编译,则将获得直接函数调用。