aboutsummaryrefslogtreecommitdiff
path: root/pk/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'pk/entry.S')
-rw-r--r--pk/entry.S10
1 files changed, 8 insertions, 2 deletions
diff --git a/pk/entry.S b/pk/entry.S
index 67fb025..b128e93 100644
--- a/pk/entry.S
+++ b/pk/entry.S
@@ -52,14 +52,20 @@ save_tf: # write the trap frame onto the stack
# get sr, epc, badvaddr, cause, cr29 (tid)
mfpcr $x2,ASM_CR(PCR_SR) # sr
STORE $x2,32*REGBYTES($x1)
- mfpcr $x2,ASM_CR(PCR_EPC) # epc
- STORE $x2,33*REGBYTES($x1)
+ mfpcr $x3,ASM_CR(PCR_EPC) # epc
+ STORE $x3,33*REGBYTES($x1)
mfpcr $x2,ASM_CR(PCR_BADVADDR) # badvaddr
STORE $x2,34*REGBYTES($x1)
mfpcr $x2,ASM_CR(PCR_CAUSE) # cause
STORE $x2,35*REGBYTES($x1)
mfcr $x2,ASM_CR(29) # cr29 (tid)
STORE $x2,36*REGBYTES($x1)
+
+ # get insn
+ and $x3,$x3,~3
+ lw $x2,0($x3)
+ STORE $x2, 37*REGBYTES($x1)
+
jr $ra
.end save_tf