看起来您在询问ARM 故障状态寄存器 (FSR)位。我查看了内核代码(arch/arm/mm/fault.c),发现这实际上是作为参数传递给 Oops 代码的:
static void
__do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
struct pt_regs *regs)
{
[...]
pr_alert("Unable to handle kernel %s at virtual address %08lx\n",
(addr < PAGE_SIZE) ? "NULL pointer dereference" :
"paging request", addr);
show_pte(mm, addr);
die("Oops", regs, **fsr**);
[...]
}
所以,无论如何,我追踪到了 ARM(v4 及更高版本?)MMU 上的 FSR 寄存器:
来源: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0438d/ BABFFDFD.html
...
[3:0] FS[3:0]
Fault Status bits. This field indicates the type of exception generated. Any encoding not listed is reserved:
b00001
Alignment fault.
b00100
Instruction cache maintenance fault[a].
b01100
Synchronous external abort on translation table walk, 1st level.
b01110
Synchronous external abort on translation table walk, 2nd level.
b11100
Synchronous parity error on translation table walk, 1st level.
b11110
Synchronous parity error on translation table walk, 2nd level.
b00101
Translation fault, 1st level.
b00111
Translation fault, 2nd level.
b00011
Access flag fault, 1st level.
b00110
Access flag fault, 2nd level.
b01001
Domain fault, 1st level.
b01011
Domain fault, 2nd level.
b01101
Permission fault, 1st level.
b01111
Permission fault, 2nd level.
b00010
Debug event.
b01000
Synchronous external abort, non-translation.
b11001
Synchronous parity error on memory access.
b10110
Asynchronous external abort.
b11000
Asynchronous parity error on memory access.
...
免责声明:我不知道此信息是否仍然相关;该文档声明它适用于 ARM Cortex A15,并且该页面被标记为已取代。
也可以看到这个页面:
ARM926EJ-S 故障地址和故障状态寄存器