有人知道如何通过GDB打印scr_el3寄存器的内容吗?它是针对ARM平台的。
汇编代码的转储如下所示:
0x0000000000004394 <+20>: msr scr_el3, x18
0x0000000000004398 <+24>: msr spsr_el3, x16
0x000000000000439c <+28>: msr elr_el3, x17
Run Code Online (Sandbox Code Playgroud)
我试过了:
(gdb) print $pc
$10 = (void (*)()) 0x43a0 <el3_exit+32>
(gdb) print $spsr_el3
$11 = void
Run Code Online (Sandbox Code Playgroud)
但这没有帮助。
已知如何从异常级别返回到上一个异常级别(set elr_el3 -> set spsr_el3 ->execute eret),但是如何从 EL3 ERET 到同一个 EL3?在ARM的官方文档中,我发现这样一句话说这是可能的:“从异常返回可以保持在相同的异常级别或进入较低的异常级别。它不能移动到更高的异常级别。”。