summaryrefslogtreecommitdiff
path: root/v/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'v/entry.S')
-rw-r--r--v/entry.S16
1 files changed, 15 insertions, 1 deletions
diff --git a/v/entry.S b/v/entry.S
index 7b9230d..6933771 100644
--- a/v/entry.S
+++ b/v/entry.S
@@ -152,7 +152,21 @@ trap_entry:
and ra,ra,SR_EA
beqz ra, 2f
addi x2,x2,38*REGBYTES
- vxcptsave x2
+
+ # rocket currently doesn't support vxcptsave/vxcptrestore natively
+ csrr x3,impl
+ li x4,IMPL_ROCKET
+ bne x3,x4,3f
+ vgetcfg x4
+ sd x4,0(x2)
+ vgetvl x4
+ sd x4,8(x2)
+ addi x2,x2,16
+ vxcptevac x2
+ j 2f
+
+ # native vxcptsave
+3:vxcptsave x2
2:jal handle_trap
# when coming from kernel, continue below its stack