aboutsummaryrefslogtreecommitdiff
path: root/env
diff options
context:
space:
mode:
Diffstat (limited to 'env')
-rw-r--r--env/p/riscv_test.h4
-rw-r--r--env/pt/riscv_test.h54
-rw-r--r--env/v/entry.S3
-rw-r--r--env/v/riscv_test.h4
4 files changed, 28 insertions, 37 deletions
diff --git a/env/p/riscv_test.h b/env/p/riscv_test.h
index 955afc0..8cc7955 100644
--- a/env/p/riscv_test.h
+++ b/env/p/riscv_test.h
@@ -57,9 +57,9 @@
2:fssr x0; \
#define RVTEST_VEC_ENABLE \
- setpcr status, SR_EV; \
+ setpcr status, SR_EA; \
mfpcr a0, status; \
- and a0, a0, SR_EV; \
+ and a0, a0, SR_EA; \
bnez a0, 2f; \
RVTEST_PASS; \
2: \
diff --git a/env/pt/riscv_test.h b/env/pt/riscv_test.h
index e56267f..66eb59c 100644
--- a/env/pt/riscv_test.h
+++ b/env/pt/riscv_test.h
@@ -43,38 +43,7 @@ regspill: \
.dword 0xdeadbeefcafebabe; \
.dword 0xdeadbeefcafebabe; \
evac: \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
- .dword 0xdeadbeefcafebabe; \
+ .skip 32768; \
//-----------------------------------------------------------------------
// Misc
@@ -84,7 +53,9 @@ evac: \
mtpcr x0,clear_ipi; \
mfpcr a0,status; \
li a1,SR_IM; \
+ or a0,a0,a1; \
mtpcr a0,status; \
+ setpcr status,SR_EI; \
la a0,_handler; \
mtpcr a0,evec; \
mtpcr x0,count; \
@@ -95,6 +66,23 @@ evac: \
_handler: \
mtpcr a0,sup0; \
mtpcr a1,sup1; \
+ vxcptcause x0; \
+ la a0,evac; \
+ vxcptsave a0; \
+ vxcptrestore a0; \
+ setpcr status,SR_PEI; \
+ mfpcr a0,count; \
+ addi a0,a0,60; \
+ mtpcr a0,compare; \
+ mfpcr a0,sup0; \
+ mfpcr a1,sup1; \
+ eret; \
+
+#if 0
+#define XCPT_HANDLER \
+_handler: \
+ mtpcr a0,sup0; \
+ mtpcr a1,sup1; \
la a0,regspill; \
sd a2,0(a0); \
sd a3,8(a0); \
@@ -167,3 +155,5 @@ _done_skip: \
eret; \
#endif
+
+#endif
diff --git a/env/v/entry.S b/env/v/entry.S
index 77107ff..541abae 100644
--- a/env/v/entry.S
+++ b/env/v/entry.S
@@ -156,7 +156,8 @@ trap_entry:
2:jal handle_trap
# when coming from kernel, continue below its stack
-1:add x2, sp, -SIZEOF_TRAPFRAME_T
+1:li x2,17712
+ sub x2, sp, x2
jal save_tf
move sp,x2
setpcr status, SR_EI
diff --git a/env/v/riscv_test.h b/env/v/riscv_test.h
index 75a1388..d9b23fb 100644
--- a/env/v/riscv_test.h
+++ b/env/v/riscv_test.h
@@ -86,7 +86,7 @@ userstart: \
#define PGSHIFT 13
#define PGSIZE (1 << PGSHIFT)
-#define SIZEOF_TRAPFRAME_T 1328
+#define SIZEOF_TRAPFRAME_T 20784
#ifndef __ASSEMBLER__
@@ -147,7 +147,7 @@ typedef struct
long cause;
long insn;
long hwacha_cause;
- long evac[128];
+ long evac[2560];
} trapframe_t;
#endif