mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-06 16:09:30 +00:00
Kernel/aarch64: Dump ESR_EL1 in dump_registers and remove backtracing
This commit is contained in:
parent
3295137224
commit
cf5b02e3a4
|
@ -18,6 +18,17 @@
|
|||
|
||||
namespace Kernel {
|
||||
|
||||
static void dump_exception_syndrome_register(Aarch64::ESR_EL1 const& esr_el1)
|
||||
{
|
||||
dbgln("esr_el1: EC({:#b}) IL({:#b}) ISS({:#b}) ISS2({:#b})", esr_el1.EC, esr_el1.IL, esr_el1.ISS, esr_el1.ISS2);
|
||||
dbgln("Exception Class: {}", Aarch64::exception_class_to_string(esr_el1.EC));
|
||||
if (Aarch64::exception_class_has_set_far(esr_el1.EC))
|
||||
dbgln("Faulting Virtual Address: 0x{:x}", Aarch64::FAR_EL1::read().virtual_address);
|
||||
|
||||
if (Aarch64::exception_class_is_data_abort(esr_el1.EC))
|
||||
dbgln("Data Fault Status Code: {}", Aarch64::data_fault_status_code_to_string(esr_el1.ISS));
|
||||
}
|
||||
|
||||
void dump_registers(RegisterState const& regs)
|
||||
{
|
||||
dbgln(" x0={:p} x1={:p} x2={:p} x3={:p} x4={:p}", regs.x[0], regs.x[1], regs.x[2], regs.x[3], regs.x[4]);
|
||||
|
@ -37,23 +48,8 @@ void dump_registers(RegisterState const& regs)
|
|||
dbgln("tpidr_el0: 0x{:x}", regs.tpidr_el0);
|
||||
dbgln("sp_el0: 0x{:x}", regs.sp_el0);
|
||||
|
||||
constexpr bool print_backtrace = true;
|
||||
if constexpr (print_backtrace) {
|
||||
auto const* symbol = symbolicate_kernel_address(regs.elr_el1);
|
||||
dbgln("{:p} {} +{}", regs.elr_el1, (symbol ? symbol->name : "(k?)"), (symbol ? regs.elr_el1 - symbol->address : 0));
|
||||
dump_backtrace_from_base_pointer(regs.x[29]);
|
||||
}
|
||||
}
|
||||
|
||||
static void dump_exception_syndrome_register(Aarch64::ESR_EL1 const& esr_el1)
|
||||
{
|
||||
dbgln("esr_el1: EC({:#b}) IL({:#b}) ISS({:#b}) ISS2({:#b})", esr_el1.EC, esr_el1.IL, esr_el1.ISS, esr_el1.ISS2);
|
||||
dbgln("Exception Class: {}", Aarch64::exception_class_to_string(esr_el1.EC));
|
||||
if (Aarch64::exception_class_has_set_far(esr_el1.EC))
|
||||
dbgln("Faulting Virtual Address: 0x{:x}", Aarch64::FAR_EL1::read().virtual_address);
|
||||
|
||||
if (Aarch64::exception_class_is_data_abort(esr_el1.EC))
|
||||
dbgln("Data Fault Status Code: {}", Aarch64::data_fault_status_code_to_string(esr_el1.ISS));
|
||||
auto esr_el1 = Kernel::Aarch64::ESR_EL1::read();
|
||||
dump_exception_syndrome_register(esr_el1);
|
||||
}
|
||||
|
||||
static PageFault page_fault_from_exception_syndrome_register(VirtualAddress fault_address, Aarch64::ESR_EL1 esr_el1)
|
||||
|
@ -92,7 +88,6 @@ extern "C" void exception_common(Kernel::TrapFrame* trap_frame)
|
|||
if constexpr (print_state) {
|
||||
dbgln("Exception Generated by processor!");
|
||||
dump_registers(*trap_frame->regs);
|
||||
dump_exception_syndrome_register(esr_el1);
|
||||
}
|
||||
|
||||
if (Aarch64::exception_class_is_data_abort(esr_el1.EC) || Aarch64::exception_class_is_instruction_abort(esr_el1.EC)) {
|
||||
|
@ -100,7 +95,6 @@ extern "C" void exception_common(Kernel::TrapFrame* trap_frame)
|
|||
page_fault.handle(*trap_frame->regs);
|
||||
} else {
|
||||
dump_registers(*trap_frame->regs);
|
||||
dump_exception_syndrome_register(esr_el1);
|
||||
PANIC("Unexpected exception!");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue