summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2015-03-12 23:09:06 -0700
committerAndrew Waterman <waterman@cs.berkeley.edu>2015-03-12 23:09:06 -0700
commitbd2090129b328fa9803275df0e52459d645e8ceb (patch)
tree3122d39fe7d9b463508979c1291f0460fbaed0be
parent3a2ed4c0966add8f9730c3962a784cc423891663 (diff)
downloadenv-bd2090129b328fa9803275df0e52459d645e8ceb.zip
env-bd2090129b328fa9803275df0e52459d645e8ceb.tar.gz
env-bd2090129b328fa9803275df0e52459d645e8ceb.tar.bz2
Use hcall instead of mcall
-rw-r--r--encoding.h17
-rw-r--r--p/riscv_test.h12
2 files changed, 17 insertions, 12 deletions
diff --git a/encoding.h b/encoding.h
index 4b929d3..354e67d 100644
--- a/encoding.h
+++ b/encoding.h
@@ -72,6 +72,8 @@
#define PTE_SR 0x040 // Supervisor Read permission
#define PTE_SW 0x080 // Supervisor Write permission
#define PTE_SX 0x100 // Supervisor eXecute permission
+#define PTE_R 0x200 // Referenced
+#define PTE_D 0x400 // Dirty
#define PTE_PERM (PTE_SR | PTE_SW | PTE_SX | PTE_UR | PTE_UW | PTE_UX)
#ifdef __riscv
@@ -148,10 +150,12 @@
#define MASK_AMOMAX_D 0xf800707f
#define MATCH_BLTU 0x6063
#define MASK_BLTU 0x707f
+#define MATCH_FCLASS_S 0xe0001053
+#define MASK_FCLASS_S 0xfff0707f
#define MATCH_FSGNJN_D 0x22001053
#define MASK_FSGNJN_D 0xfe00707f
-#define MATCH_FMIN_S 0x28000053
-#define MASK_FMIN_S 0xfe00707f
+#define MATCH_HCALL 0x10000073
+#define MASK_HCALL 0xffffffff
#define MATCH_MRET 0x30200073
#define MASK_MRET 0xffffffff
#define MATCH_CSRRW 0x1073
@@ -240,8 +244,8 @@
#define MASK_BLT 0x707f
#define MATCH_SCALL 0x73
#define MASK_SCALL 0xffffffff
-#define MATCH_FCLASS_S 0xe0001053
-#define MASK_FCLASS_S 0xfff0707f
+#define MATCH_FMIN_S 0x28000053
+#define MASK_FMIN_S 0xfe00707f
#define MATCH_SFENCE_VM 0x10400073
#define MASK_SFENCE_VM 0xfff07fff
#define MATCH_SC_W 0x1800202f
@@ -528,8 +532,9 @@ DECLARE_INSN(remuw, MATCH_REMUW, MASK_REMUW)
DECLARE_INSN(fmin_d, MATCH_FMIN_D, MASK_FMIN_D)
DECLARE_INSN(amomax_d, MATCH_AMOMAX_D, MASK_AMOMAX_D)
DECLARE_INSN(bltu, MATCH_BLTU, MASK_BLTU)
+DECLARE_INSN(fclass_s, MATCH_FCLASS_S, MASK_FCLASS_S)
DECLARE_INSN(fsgnjn_d, MATCH_FSGNJN_D, MASK_FSGNJN_D)
-DECLARE_INSN(fmin_s, MATCH_FMIN_S, MASK_FMIN_S)
+DECLARE_INSN(hcall, MATCH_HCALL, MASK_HCALL)
DECLARE_INSN(mret, MATCH_MRET, MASK_MRET)
DECLARE_INSN(csrrw, MATCH_CSRRW, MASK_CSRRW)
DECLARE_INSN(slliw, MATCH_SLLIW, MASK_SLLIW)
@@ -574,7 +579,7 @@ DECLARE_INSN(xor, MATCH_XOR, MASK_XOR)
DECLARE_INSN(sub, MATCH_SUB, MASK_SUB)
DECLARE_INSN(blt, MATCH_BLT, MASK_BLT)
DECLARE_INSN(scall, MATCH_SCALL, MASK_SCALL)
-DECLARE_INSN(fclass_s, MATCH_FCLASS_S, MASK_FCLASS_S)
+DECLARE_INSN(fmin_s, MATCH_FMIN_S, MASK_FMIN_S)
DECLARE_INSN(sfence_vm, MATCH_SFENCE_VM, MASK_SFENCE_VM)
DECLARE_INSN(sc_w, MATCH_SC_W, MASK_SC_W)
DECLARE_INSN(rem, MATCH_REM, MASK_REM)
diff --git a/p/riscv_test.h b/p/riscv_test.h
index 36d723d..0c677f7 100644
--- a/p/riscv_test.h
+++ b/p/riscv_test.h
@@ -110,7 +110,7 @@
.text; \
.align 6; \
tvec_user: \
- la t5, mcall; \
+ la t5, hcall; \
csrr t6, mepc; \
beq t5, t6, write_tohost; \
li t5, 0xbadbad0; \
@@ -131,7 +131,7 @@ tvec_hypervisor: \
.align 6; \
tvec_machine: \
.weak mtvec; \
- la t5, mcall; \
+ la t5, hcall; \
csrr t6, mepc; \
beq t5, t6, write_tohost; \
la t5, mtvec; \
@@ -157,8 +157,8 @@ _start: \
//-----------------------------------------------------------------------
#define RVTEST_CODE_END \
-mcall: mcall; \
- j mcall
+hcall: hcall; \
+ j hcall
//-----------------------------------------------------------------------
// Pass/Fail Macro
@@ -167,7 +167,7 @@ mcall: mcall; \
#define RVTEST_PASS \
fence; \
li TESTNUM, 1; \
- j mcall
+ j hcall
#define TESTNUM x28
#define RVTEST_FAIL \
@@ -175,7 +175,7 @@ mcall: mcall; \
1: beqz TESTNUM, 1b; \
sll TESTNUM, TESTNUM, 1; \
or TESTNUM, TESTNUM, 1; \
- j mcall
+ j hcall
//-----------------------------------------------------------------------
// Data Section Macro