PMP passes test with GenZephyr, but pipeline flushes have been disabled
This commit is contained in:
parent
987de8fb6a
commit
5cb5061d9b
|
@ -10,6 +10,7 @@ object GenZephyr extends App{
|
||||||
config = VexRiscvConfig(
|
config = VexRiscvConfig(
|
||||||
plugins = List(
|
plugins = List(
|
||||||
new IBusCachedPlugin(
|
new IBusCachedPlugin(
|
||||||
|
resetVector = 0x80000000l,
|
||||||
prediction = STATIC,
|
prediction = STATIC,
|
||||||
config = InstructionCacheConfig(
|
config = InstructionCacheConfig(
|
||||||
cacheSize = 4096,
|
cacheSize = 4096,
|
||||||
|
|
|
@ -153,8 +153,8 @@ class PmpPlugin(regions : Int, ioRange : UInt => Bool) extends Plugin[VexRiscv]
|
||||||
pmps += PmpRegister()
|
pmps += PmpRegister()
|
||||||
csrService.rw(0x3b0 + i, pmps(i).csr.addr)
|
csrService.rw(0x3b0 + i, pmps(i).csr.addr)
|
||||||
csrService.onWrite(0x3b0 + i) {
|
csrService.onWrite(0x3b0 + i) {
|
||||||
execute.arbitration.flushNext := True
|
//execute.arbitration.flushNext := True
|
||||||
redoInterface.valid := True
|
//redoInterface.valid := True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,8 +173,8 @@ class PmpPlugin(regions : Int, ioRange : UInt => Bool) extends Plugin[VexRiscv]
|
||||||
1 -> pmps((i * 4) ).csr.w, 0 -> pmps((i * 4) ).csr.r
|
1 -> pmps((i * 4) ).csr.w, 0 -> pmps((i * 4) ).csr.r
|
||||||
)
|
)
|
||||||
csrService.onWrite(0x3a0 + i) {
|
csrService.onWrite(0x3a0 + i) {
|
||||||
execute.arbitration.flushNext := True
|
//execute.arbitration.flushNext := True
|
||||||
redoInterface.valid := True
|
//redoInterface.valid := True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
target remote localhost:3333
|
||||||
|
monitor reset halt
|
||||||
|
load
|
|
@ -8,163 +8,159 @@ Disassembly of section .crt_section:
|
||||||
80000000: 00000097 auipc ra,0x0
|
80000000: 00000097 auipc ra,0x0
|
||||||
80000004: 01008093 addi ra,ra,16 # 80000010 <trap>
|
80000004: 01008093 addi ra,ra,16 # 80000010 <trap>
|
||||||
80000008: 30509073 csrw mtvec,ra
|
80000008: 30509073 csrw mtvec,ra
|
||||||
8000000c: 0240006f j 80000030 <test0>
|
8000000c: 00c0006f j 80000018 <test0>
|
||||||
|
|
||||||
80000010 <trap>:
|
80000010 <trap>:
|
||||||
80000010: 341f1073 csrw mepc,t5
|
80000010: 341f1073 csrw mepc,t5
|
||||||
80000014: 30200073 mret
|
80000014: 30200073 mret
|
||||||
|
|
||||||
80000018 <to_user>:
|
80000018 <test0>:
|
||||||
80000018: 00014137 lui sp,0x14
|
80000018: 00000e13 li t3,0
|
||||||
8000001c: 30013073 csrc mstatus,sp
|
8000001c: 00000f17 auipc t5,0x0
|
||||||
80000020: 20000113 li sp,512
|
80000020: 1f4f0f13 addi t5,t5,500 # 80000210 <fail>
|
||||||
80000024: 30012073 csrs mstatus,sp
|
80000024: 800000b7 lui ra,0x80000
|
||||||
80000028: 341e9073 csrw mepc,t4
|
80000028: 80008237 lui tp,0x80008
|
||||||
8000002c: 30200073 mret
|
8000002c: deadc137 lui sp,0xdeadc
|
||||||
|
80000030: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcd3>
|
||||||
80000030 <test0>:
|
80000034: 0020a023 sw sp,0(ra) # 80000000 <pass+0xfffffde4>
|
||||||
80000030: 00000e13 li t3,0
|
80000038: 00222023 sw sp,0(tp) # 80008000 <pass+0x7de4>
|
||||||
80000034: 00000f17 auipc t5,0x0
|
8000003c: 0000a183 lw gp,0(ra)
|
||||||
80000038: 1f0f0f13 addi t5,t5,496 # 80000224 <fail>
|
80000040: 1c311863 bne sp,gp,80000210 <fail>
|
||||||
8000003c: 800000b7 lui ra,0x80000
|
80000044: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
||||||
80000040: 80008237 lui tp,0x80008
|
80000048: 1c311463 bne sp,gp,80000210 <fail>
|
||||||
80000044: deadc137 lui sp,0xdeadc
|
8000004c: 071212b7 lui t0,0x7121
|
||||||
80000048: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcbf>
|
80000050: 80828293 addi t0,t0,-2040 # 7120808 <_start-0x78edf7f8>
|
||||||
8000004c: 0020a023 sw sp,0(ra) # 80000000 <pass+0xfffffdd0>
|
80000054: 3a029073 csrw pmpcfg0,t0
|
||||||
80000050: 00222023 sw sp,0(tp) # 80008000 <pass+0x7dd0>
|
80000058: 191f02b7 lui t0,0x191f0
|
||||||
80000054: 0000a183 lw gp,0(ra)
|
8000005c: 30428293 addi t0,t0,772 # 191f0304 <_start-0x66e0fcfc>
|
||||||
80000058: 1c311663 bne sp,gp,80000224 <fail>
|
80000060: 3a129073 csrw pmpcfg1,t0
|
||||||
8000005c: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
80000064: 01800293 li t0,24
|
||||||
80000060: 1c311263 bne sp,gp,80000224 <fail>
|
80000068: 3a229073 csrw pmpcfg2,t0
|
||||||
80000064: 071a12b7 lui t0,0x71a1
|
8000006c: 0f1e22b7 lui t0,0xf1e2
|
||||||
80000068: 80828293 addi t0,t0,-2040 # 71a0808 <_start-0x78e5f7f8>
|
80000070: 90028293 addi t0,t0,-1792 # f1e1900 <_start-0x70e1e700>
|
||||||
8000006c: 3a029073 csrw pmpcfg0,t0
|
80000074: 3a329073 csrw pmpcfg3,t0
|
||||||
80000070: 191c02b7 lui t0,0x191c0
|
80000078: 200002b7 lui t0,0x20000
|
||||||
80000074: 50428293 addi t0,t0,1284 # 191c0504 <_start-0x66e3fafc>
|
8000007c: 3b029073 csrw pmpaddr0,t0
|
||||||
80000078: 3a129073 csrw pmpcfg1,t0
|
80000080: fff00293 li t0,-1
|
||||||
8000007c: 01800293 li t0,24
|
80000084: 3b129073 csrw pmpaddr1,t0
|
||||||
80000080: 3a229073 csrw pmpcfg2,t0
|
80000088: 200022b7 lui t0,0x20002
|
||||||
80000084: 0f1e22b7 lui t0,0xf1e2
|
8000008c: 3b229073 csrw pmpaddr2,t0
|
||||||
80000088: 90028293 addi t0,t0,-1792 # f1e1900 <_start-0x70e1e700>
|
80000090: 200042b7 lui t0,0x20004
|
||||||
8000008c: 3a329073 csrw pmpcfg3,t0
|
80000094: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
||||||
80000090: 200002b7 lui t0,0x20000
|
80000098: 3b329073 csrw pmpaddr3,t0
|
||||||
80000094: 3b029073 csrw pmpaddr0,t0
|
8000009c: 200042b7 lui t0,0x20004
|
||||||
80000098: fff00293 li t0,-1
|
800000a0: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
||||||
8000009c: 3b129073 csrw pmpaddr1,t0
|
800000a4: 3b429073 csrw pmpaddr4,t0
|
||||||
800000a0: 200022b7 lui t0,0x20002
|
|
||||||
800000a4: 3b229073 csrw pmpaddr2,t0
|
|
||||||
800000a8: 200042b7 lui t0,0x20004
|
800000a8: 200042b7 lui t0,0x20004
|
||||||
800000ac: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
800000ac: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
||||||
800000b0: 3b329073 csrw pmpaddr3,t0
|
800000b0: 3b529073 csrw pmpaddr5,t0
|
||||||
800000b4: 200042b7 lui t0,0x20004
|
800000b4: 200022b7 lui t0,0x20002
|
||||||
800000b8: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
800000b8: fff28293 addi t0,t0,-1 # 20001fff <_start-0x5fffe001>
|
||||||
800000bc: 3b429073 csrw pmpaddr4,t0
|
800000bc: 3b629073 csrw pmpaddr6,t0
|
||||||
800000c0: 200042b7 lui t0,0x20004
|
800000c0: 200042b7 lui t0,0x20004
|
||||||
800000c4: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
800000c4: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
||||||
800000c8: 3b529073 csrw pmpaddr5,t0
|
800000c8: 3b729073 csrw pmpaddr7,t0
|
||||||
800000cc: 200022b7 lui t0,0x20002
|
800000cc: 200042b7 lui t0,0x20004
|
||||||
800000d0: fff28293 addi t0,t0,-1 # 20001fff <_start-0x5fffe001>
|
800000d0: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
||||||
800000d4: 3b629073 csrw pmpaddr6,t0
|
800000d4: 3b829073 csrw pmpaddr8,t0
|
||||||
800000d8: 200042b7 lui t0,0x20004
|
800000d8: 00000293 li t0,0
|
||||||
800000dc: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
800000dc: 3b929073 csrw pmpaddr9,t0
|
||||||
800000e0: 3b729073 csrw pmpaddr7,t0
|
800000e0: 00000293 li t0,0
|
||||||
800000e4: 200042b7 lui t0,0x20004
|
800000e4: 3ba29073 csrw pmpaddr10,t0
|
||||||
800000e8: fff28293 addi t0,t0,-1 # 20003fff <_start-0x5fffc001>
|
800000e8: 00000293 li t0,0
|
||||||
800000ec: 3b829073 csrw pmpaddr8,t0
|
800000ec: 3bb29073 csrw pmpaddr11,t0
|
||||||
800000f0: 00000293 li t0,0
|
800000f0: 00000293 li t0,0
|
||||||
800000f4: 3b929073 csrw pmpaddr9,t0
|
800000f4: 3bc29073 csrw pmpaddr12,t0
|
||||||
800000f8: 00000293 li t0,0
|
800000f8: 00000293 li t0,0
|
||||||
800000fc: 3ba29073 csrw pmpaddr10,t0
|
800000fc: 3bd29073 csrw pmpaddr13,t0
|
||||||
80000100: 00000293 li t0,0
|
80000100: 00000293 li t0,0
|
||||||
80000104: 3bb29073 csrw pmpaddr11,t0
|
80000104: 3be29073 csrw pmpaddr14,t0
|
||||||
80000108: 00000293 li t0,0
|
80000108: 00000293 li t0,0
|
||||||
8000010c: 3bc29073 csrw pmpaddr12,t0
|
8000010c: 3bf29073 csrw pmpaddr15,t0
|
||||||
80000110: 00000293 li t0,0
|
80000110: 00c10137 lui sp,0xc10
|
||||||
80000114: 3bd29073 csrw pmpaddr13,t0
|
80000114: fee10113 addi sp,sp,-18 # c0ffee <_start-0x7f3f0012>
|
||||||
80000118: 00000293 li t0,0
|
80000118: 0020a023 sw sp,0(ra)
|
||||||
8000011c: 3be29073 csrw pmpaddr14,t0
|
8000011c: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
||||||
80000120: 00000293 li t0,0
|
80000120: 0000a183 lw gp,0(ra)
|
||||||
80000124: 3bf29073 csrw pmpaddr15,t0
|
80000124: 0e311663 bne sp,gp,80000210 <fail>
|
||||||
80000128: 00c10137 lui sp,0xc10
|
80000128: 00000193 li gp,0
|
||||||
8000012c: fee10113 addi sp,sp,-18 # c0ffee <_start-0x7f3f0012>
|
8000012c: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
||||||
80000130: 0020a023 sw sp,0(ra)
|
80000130: 0e311063 bne sp,gp,80000210 <fail>
|
||||||
80000134: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
|
||||||
80000138: 0000a183 lw gp,0(ra)
|
|
||||||
8000013c: 0e311463 bne sp,gp,80000224 <fail>
|
|
||||||
80000140: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
|
||||||
80000144: 0e311063 bne sp,gp,80000224 <fail>
|
|
||||||
|
|
||||||
80000148 <test1>:
|
80000134 <test1>:
|
||||||
80000148: 00100e13 li t3,1
|
80000134: 00100e13 li t3,1
|
||||||
8000014c: 00000f17 auipc t5,0x0
|
80000138: 00000f17 auipc t5,0x0
|
||||||
80000150: 0d8f0f13 addi t5,t5,216 # 80000224 <fail>
|
8000013c: 0d8f0f13 addi t5,t5,216 # 80000210 <fail>
|
||||||
80000154: 079a12b7 lui t0,0x79a1
|
80000140: 079212b7 lui t0,0x7921
|
||||||
80000158: 80828293 addi t0,t0,-2040 # 79a0808 <_start-0x7865f7f8>
|
80000144: 80828293 addi t0,t0,-2040 # 7920808 <_start-0x786df7f8>
|
||||||
8000015c: 3a029073 csrw pmpcfg0,t0
|
80000148: 3a029073 csrw pmpcfg0,t0
|
||||||
80000160: deadc137 lui sp,0xdeadc
|
8000014c: deadc137 lui sp,0xdeadc
|
||||||
80000164: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcbf>
|
80000150: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcd3>
|
||||||
80000168: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
80000154: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
||||||
|
80000158: 00000f17 auipc t5,0x0
|
||||||
|
8000015c: 010f0f13 addi t5,t5,16 # 80000168 <test2>
|
||||||
|
80000160: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
||||||
|
80000164: 0ac0006f j 80000210 <fail>
|
||||||
|
|
||||||
|
80000168 <test2>:
|
||||||
|
80000168: 00200e13 li t3,2
|
||||||
8000016c: 00000f17 auipc t5,0x0
|
8000016c: 00000f17 auipc t5,0x0
|
||||||
80000170: 010f0f13 addi t5,t5,16 # 8000017c <test2>
|
80000170: 0a4f0f13 addi t5,t5,164 # 80000210 <fail>
|
||||||
80000174: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
80000174: 071212b7 lui t0,0x7121
|
||||||
80000178: 0ac0006f j 80000224 <fail>
|
80000178: 80828293 addi t0,t0,-2040 # 7120808 <_start-0x78edf7f8>
|
||||||
|
8000017c: 3a029073 csrw pmpcfg0,t0
|
||||||
|
80000180: deadc137 lui sp,0xdeadc
|
||||||
|
80000184: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcd3>
|
||||||
|
80000188: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
||||||
|
8000018c: 00000f17 auipc t5,0x0
|
||||||
|
80000190: 010f0f13 addi t5,t5,16 # 8000019c <test3>
|
||||||
|
80000194: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
||||||
|
80000198: 0780006f j 80000210 <fail>
|
||||||
|
|
||||||
8000017c <test2>:
|
8000019c <test3>:
|
||||||
8000017c: 00200e13 li t3,2
|
8000019c: 00300e13 li t3,3
|
||||||
80000180: 00000f17 auipc t5,0x0
|
|
||||||
80000184: 0a4f0f13 addi t5,t5,164 # 80000224 <fail>
|
|
||||||
80000188: 071a12b7 lui t0,0x71a1
|
|
||||||
8000018c: 80828293 addi t0,t0,-2040 # 71a0808 <_start-0x78e5f7f8>
|
|
||||||
80000190: 3a029073 csrw pmpcfg0,t0
|
|
||||||
80000194: deadc137 lui sp,0xdeadc
|
|
||||||
80000198: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcbf>
|
|
||||||
8000019c: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
|
||||||
800001a0: 00000f17 auipc t5,0x0
|
800001a0: 00000f17 auipc t5,0x0
|
||||||
800001a4: 010f0f13 addi t5,t5,16 # 800001b0 <test3>
|
800001a4: 070f0f13 addi t5,t5,112 # 80000210 <fail>
|
||||||
800001a8: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
800001a8: 00000117 auipc sp,0x0
|
||||||
800001ac: 0780006f j 80000224 <fail>
|
800001ac: 01010113 addi sp,sp,16 # 800001b8 <test4>
|
||||||
|
800001b0: 34111073 csrw mepc,sp
|
||||||
|
800001b4: 30200073 mret
|
||||||
|
|
||||||
800001b0 <test3>:
|
800001b8 <test4>:
|
||||||
800001b0: 00300e13 li t3,3
|
800001b8: 00400e13 li t3,4
|
||||||
800001b4: 00000f17 auipc t5,0x0
|
800001bc: 00000f17 auipc t5,0x0
|
||||||
800001b8: 070f0f13 addi t5,t5,112 # 80000224 <fail>
|
800001c0: 054f0f13 addi t5,t5,84 # 80000210 <fail>
|
||||||
800001bc: 00000e97 auipc t4,0x0
|
800001c4: deadc137 lui sp,0xdeadc
|
||||||
800001c0: 00ce8e93 addi t4,t4,12 # 800001c8 <test4>
|
800001c8: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcd3>
|
||||||
800001c4: e55ff06f j 80000018 <to_user>
|
800001cc: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
||||||
|
800001d0: 00000f17 auipc t5,0x0
|
||||||
|
800001d4: 010f0f13 addi t5,t5,16 # 800001e0 <test5>
|
||||||
|
800001d8: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
||||||
|
800001dc: 0340006f j 80000210 <fail>
|
||||||
|
|
||||||
800001c8 <test4>:
|
800001e0 <test5>:
|
||||||
800001c8: 00400e13 li t3,4
|
800001e0: 00500e13 li t3,5
|
||||||
800001cc: 00000f17 auipc t5,0x0
|
800001e4: deadc137 lui sp,0xdeadc
|
||||||
800001d0: 058f0f13 addi t5,t5,88 # 80000224 <fail>
|
800001e8: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcd3>
|
||||||
800001d4: deadc137 lui sp,0xdeadc
|
800001ec: 0020a023 sw sp,0(ra)
|
||||||
800001d8: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcbf>
|
800001f0: 0000a183 lw gp,0(ra)
|
||||||
800001dc: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
800001f4: 00311e63 bne sp,gp,80000210 <fail>
|
||||||
800001e0: 00000f17 auipc t5,0x0
|
|
||||||
800001e4: 010f0f13 addi t5,t5,16 # 800001f0 <test5>
|
|
||||||
800001e8: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
|
||||||
800001ec: 0380006f j 80000224 <fail>
|
|
||||||
|
|
||||||
800001f0 <test5>:
|
800001f8 <test6>:
|
||||||
800001f0: 00500e13 li t3,5
|
800001f8: 00600e13 li t3,6
|
||||||
800001f4: 00000f17 auipc t5,0x0
|
|
||||||
800001f8: 03cf0f13 addi t5,t5,60 # 80000230 <pass>
|
|
||||||
800001fc: 80010237 lui tp,0x80010
|
800001fc: 80010237 lui tp,0x80010
|
||||||
80000200: deadc137 lui sp,0xdeadc
|
80000200: 00022183 lw gp,0(tp) # 80010000 <pass+0xfde4>
|
||||||
80000204: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbcbf>
|
80000204: 00000f17 auipc t5,0x0
|
||||||
80000208: 0020a023 sw sp,0(ra)
|
80000208: 018f0f13 addi t5,t5,24 # 8000021c <pass>
|
||||||
8000020c: 0000a183 lw gp,0(ra)
|
8000020c: 00322023 sw gp,0(tp) # 0 <_start-0x80000000>
|
||||||
80000210: 00311a63 bne sp,gp,80000224 <fail>
|
|
||||||
80000214: 00022183 lw gp,0(tp) # 80010000 <pass+0xfdd0>
|
|
||||||
80000218: 00000f17 auipc t5,0x0
|
|
||||||
8000021c: 018f0f13 addi t5,t5,24 # 80000230 <pass>
|
|
||||||
80000220: 00322023 sw gp,0(tp) # 0 <_start-0x80000000>
|
|
||||||
|
|
||||||
80000224 <fail>:
|
80000210 <fail>:
|
||||||
80000224: f0100137 lui sp,0xf0100
|
80000210: f0100137 lui sp,0xf0100
|
||||||
80000228: f2410113 addi sp,sp,-220 # f00fff24 <pass+0x700ffcf4>
|
80000214: f2410113 addi sp,sp,-220 # f00fff24 <pass+0x700ffd08>
|
||||||
8000022c: 01c12023 sw t3,0(sp)
|
80000218: 01c12023 sw t3,0(sp)
|
||||||
|
|
||||||
80000230 <pass>:
|
8000021c <pass>:
|
||||||
80000230: f0100137 lui sp,0xf0100
|
8000021c: 29a00e13 li t3,666
|
||||||
80000234: f2010113 addi sp,sp,-224 # f00fff20 <pass+0x700ffcf0>
|
80000220: f0100137 lui sp,0xf0100
|
||||||
80000238: 00012023 sw zero,0(sp)
|
80000224: f2010113 addi sp,sp,-224 # f00fff20 <pass+0x700ffd04>
|
||||||
|
80000228: 00012023 sw zero,0(sp)
|
||||||
|
|
Binary file not shown.
|
@ -1,39 +1,38 @@
|
||||||
:0200000480007A
|
:0200000480007A
|
||||||
:100000009700000093800001739050306F00400211
|
:100000009700000093800001739050306F00C00093
|
||||||
:1000100073101F34730020303741010073300130FA
|
:1000100073101F3473002030130E0000170F000000
|
||||||
:10002000130100207320013073901E3473002030C0
|
:10002000130F4F1FB70000803782008037C1ADDE4D
|
||||||
:10003000130E0000170F0000130F0F1FB7000080F2
|
:100030001301F1EE23A020002320220083A1000061
|
||||||
:100040003782008037C1ADDE1301F1EE23A020001E
|
:100040006318311C832102006314311CB71212079C
|
||||||
:100050002320220083A100006316311C83210200AB
|
:10005000938282807390023AB7021F1993824230D2
|
||||||
:100060006312311CB7121A07938282807390023A8E
|
:100060007390123A930280017390223AB7221E0FC6
|
||||||
:10007000B7021C19938242507390123A9302800186
|
:10007000938202907390323AB70200207390023B51
|
||||||
:100080007390223AB7221E0F938202907390323AF5
|
:100080009302F0FF7390123BB72200207390223B43
|
||||||
:10009000B70200207390023B9302F0FF7390123B73
|
:10009000B74200209382F2FF7390323BB7420020B8
|
||||||
:1000A000B72200207390223BB74200209382F2FFD8
|
:1000A0009382F2FF7390423BB74200209382F2FFAB
|
||||||
:1000B0007390323BB74200209382F2FF7390423B31
|
:1000B0007390523BB72200209382F2FF7390623B11
|
||||||
:1000C000B74200209382F2FF7390523BB722002088
|
:1000C000B74200209382F2FF7390723BB742002048
|
||||||
:1000D0009382F2FF7390623BB74200209382F2FF5B
|
:1000D0009382F2FF7390823B930200007390923BF5
|
||||||
:1000E0007390723BB74200209382F2FF7390823B81
|
:1000E000930200007390A23B930200007390B23B16
|
||||||
:1000F000930200007390923B930200007390A23B26
|
:1000F000930200007390C23B930200007390D23BC6
|
||||||
:10010000930200007390B23B930200007390C23BD5
|
:10010000930200007390E23B930200007390F23B75
|
||||||
:10011000930200007390D23B930200007390E23B85
|
:100110003701C1001301E1FE23A0200023202200AB
|
||||||
:10012000930200007390F23B3701C1001301E1FE1E
|
:1001200083A100006316310E9301000083210200B9
|
||||||
:1001300023A020002320220083A100006314310E9D
|
:100130006310310E130E1000170F0000130F8F0DF8
|
||||||
:10014000832102006310310E130E1000170F000000
|
:10014000B7129207938282807390023A37C1ADDE74
|
||||||
:10015000130F8F0DB7129A07938282807390023A21
|
:100150001301F1EE23202200170F0000130F0F01EF
|
||||||
:1001600037C1ADDE1301F1EE23202200170F00008E
|
:10016000832102006F00C00A130E2000170F000049
|
||||||
:10017000130F0F01832102006F00C00A130E20002D
|
:10017000130F4F0AB7121207938282807390023ACC
|
||||||
:10018000170F0000130F4F0AB7121A0793828280CD
|
:1001800037C1ADDE1301F1EE23202200170F00006E
|
||||||
:100190007390023A37C1ADDE1301F1EE2320220045
|
:10019000130F0F01832102006F008007130E300040
|
||||||
:1001A000170F0000130F0F01832102006F0080075B
|
:1001A000170F0000130F0F071701000013010101C3
|
||||||
:1001B000130E3000170F0000130F0F07970E0000EB
|
:1001B0007310113473002030130E4000170F00002D
|
||||||
:1001C000938ECE006FF05FE5130E4000170F000016
|
:1001C000130F4F0537C1ADDE1301F1EE23202200DE
|
||||||
:1001D000130F8F0537C1ADDE1301F1EE232022008E
|
:1001D000170F0000130F0F01832102006F0040036F
|
||||||
:1001E000170F0000130F0F01832102006F0080031F
|
:1001E000130E500037C1ADDE1301F1EE23A0200045
|
||||||
:1001F000130E5000170F0000130FCF0337020180BA
|
:1001F00083A10000631E3100130E600037020180EE
|
||||||
:1002000037C1ADDE1301F1EE23A0200083A1000071
|
:1002000083210200170F0000130F8F0123203200FB
|
||||||
:10021000631A310083210200170F0000130F8F01B2
|
:10021000370110F0130141F22320C101130EA02970
|
||||||
:1002200023203200370110F0130141F22320C101D5
|
:0C022000370110F0130101F2232001004F
|
||||||
:0C023000370110F0130101F2232001003F
|
|
||||||
:040000058000000077
|
:040000058000000077
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|
|
@ -15,20 +15,19 @@ LOAD /opt/riscv/lib/gcc/riscv64-unknown-elf/10.2.0/../../../../riscv64-unknown-e
|
||||||
END GROUP
|
END GROUP
|
||||||
LOAD /opt/riscv/lib/gcc/riscv64-unknown-elf/10.2.0/libgcc.a
|
LOAD /opt/riscv/lib/gcc/riscv64-unknown-elf/10.2.0/libgcc.a
|
||||||
|
|
||||||
.crt_section 0x0000000080000000 0x23c
|
.crt_section 0x0000000080000000 0x22c
|
||||||
0x0000000080000000 . = ALIGN (0x4)
|
0x0000000080000000 . = ALIGN (0x4)
|
||||||
*crt.o(.text)
|
*crt.o(.text)
|
||||||
.text 0x0000000080000000 0x23c build/src/crt.o
|
.text 0x0000000080000000 0x22c build/src/crt.o
|
||||||
0x0000000080000000 _start
|
0x0000000080000000 _start
|
||||||
0x0000000080000010 trap
|
0x0000000080000010 trap
|
||||||
0x0000000080000018 to_user
|
|
||||||
OUTPUT(build/pmp.elf elf32-littleriscv)
|
OUTPUT(build/pmp.elf elf32-littleriscv)
|
||||||
|
|
||||||
.data 0x000000008000023c 0x0
|
.data 0x000000008000022c 0x0
|
||||||
.data 0x000000008000023c 0x0 build/src/crt.o
|
.data 0x000000008000022c 0x0 build/src/crt.o
|
||||||
|
|
||||||
.bss 0x000000008000023c 0x0
|
.bss 0x000000008000022c 0x0
|
||||||
.bss 0x000000008000023c 0x0 build/src/crt.o
|
.bss 0x000000008000022c 0x0 build/src/crt.o
|
||||||
|
|
||||||
.riscv.attributes
|
.riscv.attributes
|
||||||
0x0000000000000000 0x1e
|
0x0000000000000000 0x1e
|
||||||
|
|
|
@ -5,12 +5,11 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define TEST_ID x28
|
#define TEST_ID x28
|
||||||
#define USER_RA x29
|
|
||||||
#define TRAP_RA x30
|
#define TRAP_RA x30
|
||||||
|
|
||||||
#define PMPCFG0 0x071a0808
|
#define PMPCFG0 0x07120808
|
||||||
#define PMPCFG0_ 0x079a0808 // lock region 2
|
#define PMPCFG0_ 0x07920808 // lock region 2
|
||||||
#define PMPCFG1 0x191c0504
|
#define PMPCFG1 0x191f0304
|
||||||
#define PMPCFG2 0x00000018
|
#define PMPCFG2 0x00000018
|
||||||
#define PMPCFG3 0x0f1e1900
|
#define PMPCFG3 0x0f1e1900
|
||||||
|
|
||||||
|
@ -42,15 +41,6 @@ trap:
|
||||||
csrw mepc, TRAP_RA
|
csrw mepc, TRAP_RA
|
||||||
mret
|
mret
|
||||||
|
|
||||||
.global to_user
|
|
||||||
to_user:
|
|
||||||
li x2, 0x14000
|
|
||||||
csrc mstatus, x2
|
|
||||||
li x2, 0x200
|
|
||||||
csrs mstatus, x2
|
|
||||||
csrw mepc, USER_RA
|
|
||||||
mret
|
|
||||||
|
|
||||||
// configure PMP, attempt read/write from machine mode
|
// configure PMP, attempt read/write from machine mode
|
||||||
test0:
|
test0:
|
||||||
li TEST_ID, 0
|
li TEST_ID, 0
|
||||||
|
@ -112,6 +102,7 @@ test0:
|
||||||
sw x2, 0x0(x4)
|
sw x2, 0x0(x4)
|
||||||
lw x3, 0x0(x1)
|
lw x3, 0x0(x1)
|
||||||
bne x2, x3, fail
|
bne x2, x3, fail
|
||||||
|
li x3, 0x0
|
||||||
lw x3, 0x0(x4)
|
lw x3, 0x0(x4)
|
||||||
bne x2, x3, fail
|
bne x2, x3, fail
|
||||||
|
|
||||||
|
@ -143,8 +134,9 @@ test2:
|
||||||
test3:
|
test3:
|
||||||
li TEST_ID, 3
|
li TEST_ID, 3
|
||||||
la TRAP_RA, fail
|
la TRAP_RA, fail
|
||||||
la USER_RA, test4
|
la x2, test4
|
||||||
j to_user
|
csrw mepc, x2
|
||||||
|
mret
|
||||||
|
|
||||||
// attempt to read/write region 2 from user mode
|
// attempt to read/write region 2 from user mode
|
||||||
test4:
|
test4:
|
||||||
|
@ -159,12 +151,14 @@ test4:
|
||||||
// attempt to read/write other regions from user mode
|
// attempt to read/write other regions from user mode
|
||||||
test5:
|
test5:
|
||||||
li TEST_ID, 5
|
li TEST_ID, 5
|
||||||
la TRAP_RA, pass
|
|
||||||
li x4, 0x80010000
|
|
||||||
li x2, 0xdeadbeef
|
li x2, 0xdeadbeef
|
||||||
sw x2, 0x0(x1)
|
sw x2, 0x0(x1)
|
||||||
lw x3, 0x0(x1)
|
lw x3, 0x0(x1)
|
||||||
bne x2, x3, fail // should be OK
|
bne x2, x3, fail // should be OK (read/write 0x80000000)
|
||||||
|
|
||||||
|
test6:
|
||||||
|
li TEST_ID, 6
|
||||||
|
li x4, 0x80010000
|
||||||
lw x3, 0x0(x4) // should be OK (read 0x80010000)
|
lw x3, 0x0(x4) // should be OK (read 0x80010000)
|
||||||
la TRAP_RA, pass
|
la TRAP_RA, pass
|
||||||
sw x3, 0x0(x4) // should fault (write 0x80010000)
|
sw x3, 0x0(x4) // should fault (write 0x80010000)
|
||||||
|
@ -174,5 +168,6 @@ fail:
|
||||||
sw TEST_ID, 0(x2)
|
sw TEST_ID, 0(x2)
|
||||||
|
|
||||||
pass:
|
pass:
|
||||||
|
li TEST_ID, 666
|
||||||
li x2, 0xf00fff20
|
li x2, 0xf00fff20
|
||||||
sw x0, 0(x2)
|
sw x0, 0(x2)
|
||||||
|
|
|
@ -4054,7 +4054,7 @@ int main(int argc, char **argv, char **env) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef PMP
|
#ifdef PMP
|
||||||
redo(REDO,WorkspaceRegression("pmp").withRiscvRef()->loadHex(string(REGRESSION_PATH) + "../raw/pmp/build/pmp.hex")->bootAt(0x00000000u)->run(10e3););
|
redo(REDO,WorkspaceRegression("pmp").loadHex(string(REGRESSION_PATH) + "../raw/pmp/build/pmp.hex")->bootAt(0x00000000u)->run(10e3););
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef AMO
|
#ifdef AMO
|
||||||
|
|
Loading…
Reference in New Issue