aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2020-09-24 17:05:15 -0700
committerAndrew Waterman <andrew@sifive.com>2020-09-24 17:05:43 -0700
commit77024fa1d1303b1274ff25de335ef8e67092b201 (patch)
treea8951c0eb33db7b27c253ae98483c13faa72307e
parent43003ea3ed9d2c1a1c060416da91ccf5b044c55c (diff)
downloadriscv-isa-sim-77024fa1d1303b1274ff25de335ef8e67092b201.zip
riscv-isa-sim-77024fa1d1303b1274ff25de335ef8e67092b201.tar.gz
riscv-isa-sim-77024fa1d1303b1274ff25de335ef8e67092b201.tar.bz2
Fix priority of virtual vs. illegal instruction exceptions for HLV/HSV
Resolves #551
-rw-r--r--riscv/insns/hlv_b.h2
-rw-r--r--riscv/insns/hlv_bu.h2
-rw-r--r--riscv/insns/hlv_d.h2
-rw-r--r--riscv/insns/hlv_h.h2
-rw-r--r--riscv/insns/hlv_hu.h2
-rw-r--r--riscv/insns/hlv_w.h2
-rw-r--r--riscv/insns/hlv_wu.h2
-rw-r--r--riscv/insns/hlvx_hu.h2
-rw-r--r--riscv/insns/hlvx_wu.h2
-rw-r--r--riscv/insns/hsv_b.h2
-rw-r--r--riscv/insns/hsv_d.h2
-rw-r--r--riscv/insns/hsv_h.h2
-rw-r--r--riscv/insns/hsv_w.h2
13 files changed, 13 insertions, 13 deletions
diff --git a/riscv/insns/hlv_b.h b/riscv/insns/hlv_b.h
index 213c4b8..86192c6 100644
--- a/riscv/insns/hlv_b.h
+++ b/riscv/insns/hlv_b.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
WRITE_RD(MMU.guest_load_int8(RS1));
diff --git a/riscv/insns/hlv_bu.h b/riscv/insns/hlv_bu.h
index 7c7805b..2f95194 100644
--- a/riscv/insns/hlv_bu.h
+++ b/riscv/insns/hlv_bu.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
WRITE_RD(MMU.guest_load_uint8(RS1));
diff --git a/riscv/insns/hlv_d.h b/riscv/insns/hlv_d.h
index 38728fa..1bbd027 100644
--- a/riscv/insns/hlv_d.h
+++ b/riscv/insns/hlv_d.h
@@ -1,5 +1,5 @@
require_extension('H');
require_rv64;
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
WRITE_RD(MMU.guest_load_int64(RS1));
diff --git a/riscv/insns/hlv_h.h b/riscv/insns/hlv_h.h
index 2887a94..6825fe4 100644
--- a/riscv/insns/hlv_h.h
+++ b/riscv/insns/hlv_h.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
WRITE_RD(MMU.guest_load_int16(RS1));
diff --git a/riscv/insns/hlv_hu.h b/riscv/insns/hlv_hu.h
index 488a1ea..3d9d98e 100644
--- a/riscv/insns/hlv_hu.h
+++ b/riscv/insns/hlv_hu.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
WRITE_RD(MMU.guest_load_uint16(RS1));
diff --git a/riscv/insns/hlv_w.h b/riscv/insns/hlv_w.h
index 08b3611..be420d3 100644
--- a/riscv/insns/hlv_w.h
+++ b/riscv/insns/hlv_w.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
WRITE_RD(MMU.guest_load_int32(RS1));
diff --git a/riscv/insns/hlv_wu.h b/riscv/insns/hlv_wu.h
index 4f8b747..851be27 100644
--- a/riscv/insns/hlv_wu.h
+++ b/riscv/insns/hlv_wu.h
@@ -1,5 +1,5 @@
require_extension('H');
require_rv64;
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
WRITE_RD(MMU.guest_load_uint32(RS1));
diff --git a/riscv/insns/hlvx_hu.h b/riscv/insns/hlvx_hu.h
index 4aad1f1..19dbcfb 100644
--- a/riscv/insns/hlvx_hu.h
+++ b/riscv/insns/hlvx_hu.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
WRITE_RD(MMU.guest_load_x_uint16(RS1));
diff --git a/riscv/insns/hlvx_wu.h b/riscv/insns/hlvx_wu.h
index cb4477a..4dfe702 100644
--- a/riscv/insns/hlvx_wu.h
+++ b/riscv/insns/hlvx_wu.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
WRITE_RD(MMU.guest_load_x_uint32(RS1));
diff --git a/riscv/insns/hsv_b.h b/riscv/insns/hsv_b.h
index 4c7426f..a5c34ff 100644
--- a/riscv/insns/hsv_b.h
+++ b/riscv/insns/hsv_b.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
MMU.guest_store_uint8(RS1, RS2);
diff --git a/riscv/insns/hsv_d.h b/riscv/insns/hsv_d.h
index 2952c65..14c6d5d 100644
--- a/riscv/insns/hsv_d.h
+++ b/riscv/insns/hsv_d.h
@@ -1,5 +1,5 @@
require_extension('H');
require_rv64;
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
MMU.guest_store_uint64(RS1, RS2);
diff --git a/riscv/insns/hsv_h.h b/riscv/insns/hsv_h.h
index be831d4..1cfe77a 100644
--- a/riscv/insns/hsv_h.h
+++ b/riscv/insns/hsv_h.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
MMU.guest_store_uint16(RS1, RS2);
diff --git a/riscv/insns/hsv_w.h b/riscv/insns/hsv_w.h
index c9d937a..d54f673 100644
--- a/riscv/insns/hsv_w.h
+++ b/riscv/insns/hsv_w.h
@@ -1,4 +1,4 @@
require_extension('H');
-require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
require_novirt();
+require_privilege(get_field(STATE.hstatus, HSTATUS_HU) ? PRV_U : PRV_S);
MMU.guest_store_uint32(RS1, RS2);