Dump machine registers in OpenSBI
This commit is contained in:
parent
62bd702929
commit
1419473a08
56
JOURNAL.md
56
JOURNAL.md
@ -3531,3 +3531,59 @@ address:
|
||||
|
||||
Let's revert the stvec to its original value and try again and see if we can see
|
||||
the delegation properly being handed to the supervisor handler.
|
||||
|
||||
It continues to do the same trap in machine mode, rather than handing the
|
||||
interrupt over to supervisor.
|
||||
|
||||
Boot HART MIDELEG : 0x0000000000000222
|
||||
Boot HART MEDELEG : 0x000000000000b109
|
||||
><E
|
||||
><E<><Ed><Ee><Eb><Eu><Eg><E_><Eu><Ea><Er><Et><E>><E
|
||||
><E><E>Core: 11 devices, 8 uclasses, devicetree: board
|
||||
Loading Environment from nowhere... OK
|
||||
In: serial,usbkbd
|
||||
Out: serial,vidconsole
|
||||
Err: serial,vidconsole
|
||||
No working controllers found
|
||||
Net: No ethernet found.
|
||||
Working FDT set to c0000000
|
||||
Hit any key to stop autoboot: 0
|
||||
=> exception sregs
|
||||
stvec : 0x00000000af6f4400
|
||||
sie : 0x0000000000000000
|
||||
sip : 0x0000000000000000
|
||||
sstatus : 0x8000000200006000
|
||||
=> exception enable
|
||||
=> exception sregs
|
||||
stvec : 0x00000000af6f4400 <-------- now stvec is left as-is
|
||||
sie : 0x0000000000000222
|
||||
sip : 0x0000000000000000
|
||||
sstatus : 0x8000000200006002
|
||||
=> mw 0x40014000 0xffffffff # Disable clock interrupt
|
||||
=> md 0x40801000 1 # Show pending interrupts (should be 0x10)
|
||||
40801000: 00000010 ....
|
||||
=> mw 0x40802000 0x10 # Enable interrupt for source 4 (timer)
|
||||
=> mw 0x40800010 0xff # Make source 4 priority large
|
||||
<i
|
||||
sbi_trap_error: hart0: trap0: unhandled local interrupt (error -1000)
|
||||
|
||||
sbi_trap_error: hart0: trap0: mcause=0x800000000000000b mtval=0x0000000000000000
|
||||
sbi_trap_error: hart0: trap0: mepc=0x00000000af71df40 mstatus=0x8000000a00006802
|
||||
sbi_trap_error: hart0: trap0: ra=0x00000000af71df24 sp=0x00000000aeed2b00
|
||||
sbi_trap_error: hart0: trap0: gp=0x00000000aeed2dd0 tp=0x0000000000000000
|
||||
sbi_trap_error: hart0: trap0: s0=0x00000000af7cca38 s1=0x0000000000000000
|
||||
sbi_trap_error: hart0: trap0: a0=0x0000000000000000 a1=0x0000000000000002
|
||||
sbi_trap_error: hart0: trap0: a2=0x0000000000000008 a3=0x0000000000000004
|
||||
sbi_trap_error: hart0: trap0: a4=0x0000000000000001 a5=0x0000000000000001
|
||||
sbi_trap_error: hart0: trap0: a6=0x0000000000000008 a7=0x00000000af794b08
|
||||
sbi_trap_error: hart0: trap0: s2=0x0000000000000000 s3=0x00000000aeed4b90
|
||||
sbi_trap_error: hart0: trap0: s4=0x0000000000000003 s5=0x00000000af7f7754
|
||||
sbi_trap_error: hart0: trap0: s6=0x0000000000000000 s7=0x0000000000000000
|
||||
sbi_trap_error: hart0: trap0: s8=0x0000000000000000 s9=0x0000000000000000
|
||||
sbi_trap_error: hart0: trap0: s10=0x00000000aeed4bc0 s11=0x0000000000000000
|
||||
sbi_trap_error: hart0: trap0: t0=0x00000000aeed2ac0 t1=0x0000000000000039
|
||||
sbi_trap_error: hart0: trap0: t2=0x3b3d74696e695f64 t3=0x0000000000000010
|
||||
sbi_trap_error: hart0: trap0: t4=0x0000000000000000 t5=0x61745f746f6f627b
|
||||
sbi_trap_error: hart0: trap0: t6=0x00000000aeed2aa0
|
||||
|
||||
Let's dump the machine registers too.
|
||||
|
@ -333,6 +333,7 @@
|
||||
patches = [
|
||||
./opensbi-timer-debug.patch
|
||||
./opensbi-enable-meip.patch
|
||||
./opensbi-dump-mregs.patch
|
||||
#./opensbi-dont-delegate.patch
|
||||
#./ox-alveo-platform-plic.patch
|
||||
];
|
||||
|
19
opensbi-dump-mregs.patch
Normal file
19
opensbi-dump-mregs.patch
Normal file
@ -0,0 +1,19 @@
|
||||
diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
|
||||
index c366701..1ef6145 100644
|
||||
--- a/lib/sbi/sbi_hart.c
|
||||
+++ b/lib/sbi/sbi_hart.c
|
||||
@@ -241,6 +241,14 @@ void sbi_hart_delegation_dump(struct sbi_scratch *scratch,
|
||||
prefix, suffix, csr_read(CSR_MIDELEG));
|
||||
sbi_printf("%sMEDELEG%s: 0x%" PRILX "\n",
|
||||
prefix, suffix, csr_read(CSR_MEDELEG));
|
||||
+ sbi_printf("%sMTVEC%s : 0x%" PRILX "\n",
|
||||
+ prefix, suffix, csr_read(CSR_MTVEC));
|
||||
+ sbi_printf("%sMIE%s : 0x%" PRILX "\n",
|
||||
+ prefix, suffix, csr_read(CSR_MIE));
|
||||
+ sbi_printf("%sMIP%s : 0x%" PRILX "\n",
|
||||
+ prefix, suffix, csr_read(CSR_MIP));
|
||||
+ sbi_printf("%sMSTATUS%s: 0x%" PRILX "\n",
|
||||
+ prefix, suffix, csr_read(CSR_MSTATUS));
|
||||
}
|
||||
|
||||
unsigned int sbi_hart_mhpm_mask(struct sbi_scratch *scratch)
|
Loading…
Reference in New Issue
Block a user