1 #include <lunaix/trace.h>
2 #include <asm/aa64_exception.h>
3 #include <sys-generic/trace_arch.h>
6 __type_name(reg_t syndrome)
8 switch (BITS_GET(syndrome, SYNDROME_ETYPE))
17 return "async (serr)";
24 trace_print_transistion_short(struct hart_state* hstate)
26 struct exec_param* execp;
29 execp = &hstate->execp;
30 syndrome = execp->syndrome;
32 trace_log("%s from EL%d: ec=%04x, iss=%08lx, il=%d",
33 __type_name(syndrome), !spsr_from_el0(execp->syndrome),
34 esr_ec(syndrome), esr_iss(syndrome), esr_inst32(syndrome));
38 trace_print_transition_full(struct hart_state* hstate)
40 struct exec_param* execp;
43 execp = &hstate->execp;
44 syndrome = execp->syndrome;
46 trace_log("exception %s from EL%d",
47 __type_name(syndrome), !spsr_from_el0(execp->syndrome));
48 trace_log(" ec=0x%08lx, iss=0x%08lx, il=%d",
49 esr_ec(syndrome), esr_iss(syndrome), esr_inst32(syndrome));
50 trace_log(" esr=0x%016lx, spsr=0x%016lx",
51 syndrome, execp->spsr);
52 trace_log(" sp_el0=0x%016lx, sp_el1=0x%016lx",
53 execp->sp_el0, hart_sp(hstate));
54 trace_log(" pc=0x%016lx", execp->link);
58 trace_dump_state(struct hart_state* hstate)
62 r = &hstate->registers;
64 trace_log("hart state dump (depth=%d)", hstate->depth);
66 for (int i = 0; i < 30; i+=3)
68 trace_log(" x%02d=0x%016lx x%02d=0x%016lx x%02d=0x%016lx",
74 trace_log(" x30=0x%016lx x31=0x%016lx (sp)",
75 r->x[30], hart_sp(hstate));