aboutsummaryrefslogtreecommitdiff
path: root/pk/entry.S
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@s144.Millennium.Berkeley.EDU>2010-10-15 17:51:37 -0700
committerAndrew Waterman <waterman@s144.Millennium.Berkeley.EDU>2010-10-15 17:51:37 -0700
commitb4fd490d689415205cf315c02f673b9386ece337 (patch)
tree73f93d81b6241b1d1204d7add68af065f9638ea9 /pk/entry.S
parent2b7fd5fa6ac24f3d6d6cb8f0d6c1c32b85c39f02 (diff)
downloadriscv-pk-b4fd490d689415205cf315c02f673b9386ece337.zip
riscv-pk-b4fd490d689415205cf315c02f673b9386ece337.tar.gz
riscv-pk-b4fd490d689415205cf315c02f673b9386ece337.tar.bz2
[pk, sim] added FPU emulation support to proxy kernel
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