aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <andrew@sifive.com>2017-03-30 00:21:52 -0700
committerAndrew Waterman <andrew@sifive.com>2017-03-30 00:21:52 -0700
commit078ea399c6c1f2d6e8461559bf8cc1ba34ca89b6 (patch)
tree65ee1c8f1e7df3e2f1c67577e164047759f6c52c
parent52d46dd684ecb8c2fabda82b5246964d69dc867c (diff)
downloadriscv-pk-078ea399c6c1f2d6e8461559bf8cc1ba34ca89b6.zip
riscv-pk-078ea399c6c1f2d6e8461559bf8cc1ba34ca89b6.tar.gz
riscv-pk-078ea399c6c1f2d6e8461559bf8cc1ba34ca89b6.tar.bz2
New PMP encoding
-rw-r--r--machine/encoding.h11
-rw-r--r--machine/minit.c2
2 files changed, 7 insertions, 6 deletions
diff --git a/machine/encoding.h b/machine/encoding.h
index b07d976..55f8461 100644
--- a/machine/encoding.h
+++ b/machine/encoding.h
@@ -127,13 +127,14 @@
#define PMP_R 0x01
#define PMP_W 0x02
#define PMP_X 0x04
-#define PMP_M 0x08
-#define PMP_NAPOT 0x10
-#define PMP_TOR 0x20
-#define PMP_EN 0x40
-#define PMP_LOCK 0x80
+#define PMP_A 0x18
+#define PMP_L 0x80
#define PMP_SHIFT 2
+#define PMP_TOR 0x08
+#define PMP_NA4 0x10
+#define PMP_NAPOT 0x18
+
#define IRQ_S_SOFT 1
#define IRQ_H_SOFT 2
#define IRQ_M_SOFT 3
diff --git a/machine/minit.c b/machine/minit.c
index c584e9d..68c29ad 100644
--- a/machine/minit.c
+++ b/machine/minit.c
@@ -153,7 +153,7 @@ void enter_supervisor_mode(void (*fn)(uintptr_t), uintptr_t arg0, uintptr_t arg1
{
// Set up a PMP to permit access to all of memory.
// Ignore the illegal-instruction trap if PMPs aren't supported.
- uintptr_t pmpc = PMP_EN | PMP_NAPOT | PMP_M | PMP_R | PMP_W | PMP_X;
+ uintptr_t pmpc = PMP_NAPOT | PMP_R | PMP_W | PMP_X;
asm volatile ("la t0, 1f\n\t"
"csrrw t0, mtvec, t0\n\t"
"csrw pmpaddr0, %1\n\t"