Remove registers storing PMP region bounds
This commit is contained in:
parent
828ea96006
commit
6c13e6458f
|
@ -86,8 +86,8 @@ case class PmpRegister(previous : PmpRegister) extends Area {
|
||||||
val addr = UInt(32 bits)
|
val addr = UInt(32 bits)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Last assignment wins; nothing happens if a user-initiated write did not
|
// Last valid assignment wins; nothing happens if a user-initiated write did
|
||||||
// occur on this clock cycle.
|
// not occur on this clock cycle.
|
||||||
csr.r := state.r
|
csr.r := state.r
|
||||||
csr.w := state.w
|
csr.w := state.w
|
||||||
csr.x := state.x
|
csr.x := state.x
|
||||||
|
@ -97,8 +97,8 @@ case class PmpRegister(previous : PmpRegister) extends Area {
|
||||||
|
|
||||||
// Computed PMP region bounds
|
// Computed PMP region bounds
|
||||||
val region = new Area {
|
val region = new Area {
|
||||||
val valid = Bool
|
val valid, locked = Bool
|
||||||
val start, end = Reg(UInt(32 bits))
|
val start, end = UInt(32 bits)
|
||||||
}
|
}
|
||||||
|
|
||||||
when(~state.l) {
|
when(~state.l) {
|
||||||
|
@ -114,32 +114,31 @@ case class PmpRegister(previous : PmpRegister) extends Area {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val shifted = csr.addr |<< 2
|
val shifted = state.addr |<< 2
|
||||||
|
val mask = state.addr & ~(state.addr + 1)
|
||||||
|
val masked = (state.addr & ~mask) |<< 2
|
||||||
|
|
||||||
|
// PMP changes take effect two clock cycles after the initial CSR write (i.e.,
|
||||||
|
// settings propagate from csr -> state -> region).
|
||||||
|
region.locked := state.l
|
||||||
region.valid := True
|
region.valid := True
|
||||||
|
|
||||||
switch(state.a) {
|
switch(csr.a) {
|
||||||
is(TOR) {
|
is(TOR) {
|
||||||
if (previous == null) {
|
if (previous == null) region.start := 0
|
||||||
region.start := 0
|
else region.start := previous.region.end
|
||||||
} else {
|
|
||||||
region.start := previous.region.end
|
|
||||||
}
|
|
||||||
region.end := shifted
|
region.end := shifted
|
||||||
}
|
}
|
||||||
|
|
||||||
is(NA4) {
|
is(NA4) {
|
||||||
region.start := shifted
|
region.start := shifted
|
||||||
region.end := shifted + 4
|
region.end := shifted + 4
|
||||||
}
|
}
|
||||||
|
|
||||||
is(NAPOT) {
|
is(NAPOT) {
|
||||||
val mask = state.addr & ~(state.addr + 1)
|
|
||||||
val masked = (state.addr & ~mask) |<< 2
|
|
||||||
region.start := masked
|
region.start := masked
|
||||||
region.end := masked + ((mask + 1) |<< 3)
|
region.end := masked + ((mask + 1) |<< 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
default {
|
default {
|
||||||
|
region.start := 0
|
||||||
region.end := shifted
|
region.end := shifted
|
||||||
region.valid := False
|
region.valid := False
|
||||||
}
|
}
|
||||||
|
@ -221,7 +220,7 @@ class PmpPlugin(regions : Int, ioRange : UInt => Bool) extends Plugin[VexRiscv]
|
||||||
val hits = pmps.map(pmp => pmp.region.valid &
|
val hits = pmps.map(pmp => pmp.region.valid &
|
||||||
pmp.region.start <= address &
|
pmp.region.start <= address &
|
||||||
pmp.region.end > address &
|
pmp.region.end > address &
|
||||||
(pmp.state.l | ~privilegeService.isMachine()))
|
(pmp.region.locked | ~privilegeService.isMachine()))
|
||||||
|
|
||||||
// M-mode has full access by default, others have none.
|
// M-mode has full access by default, others have none.
|
||||||
when(CountOne(hits) === 0) {
|
when(CountOne(hits) === 0) {
|
||||||
|
|
|
@ -17,21 +17,21 @@ Disassembly of section .crt_section:
|
||||||
80000018 <test0>:
|
80000018 <test0>:
|
||||||
80000018: 00000e13 li t3,0
|
80000018: 00000e13 li t3,0
|
||||||
8000001c: 00000f17 auipc t5,0x0
|
8000001c: 00000f17 auipc t5,0x0
|
||||||
80000020: 270f0f13 addi t5,t5,624 # 8000028c <fail>
|
80000020: 27cf0f13 addi t5,t5,636 # 80000298 <fail>
|
||||||
80000024: 800000b7 lui ra,0x80000
|
80000024: 800000b7 lui ra,0x80000
|
||||||
80000028: 80008237 lui tp,0x80008
|
80000028: 80008237 lui tp,0x80008
|
||||||
8000002c: deadc137 lui sp,0xdeadc
|
8000002c: deadc137 lui sp,0xdeadc
|
||||||
80000030: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc57>
|
80000030: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc4b>
|
||||||
80000034: 0020a023 sw sp,0(ra) # 80000000 <pass+0xfffffd68>
|
80000034: 0020a023 sw sp,0(ra) # 80000000 <pass+0xfffffd5c>
|
||||||
80000038: 00222023 sw sp,0(tp) # 80008000 <pass+0x7d68>
|
80000038: 00222023 sw sp,0(tp) # 80008000 <pass+0x7d5c>
|
||||||
8000003c: 0000a183 lw gp,0(ra)
|
8000003c: 0000a183 lw gp,0(ra)
|
||||||
80000040: 24311663 bne sp,gp,8000028c <fail>
|
80000040: 24311c63 bne sp,gp,80000298 <fail>
|
||||||
80000044: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
80000044: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
||||||
80000048: 24311263 bne sp,gp,8000028c <fail>
|
80000048: 24311863 bne sp,gp,80000298 <fail>
|
||||||
8000004c: 071202b7 lui t0,0x7120
|
8000004c: 071202b7 lui t0,0x7120
|
||||||
80000050: 3a029073 csrw pmpcfg0,t0
|
80000050: 3a029073 csrw pmpcfg0,t0
|
||||||
80000054: 3a002373 csrr t1,pmpcfg0
|
80000054: 3a002373 csrr t1,pmpcfg0
|
||||||
80000058: 22629a63 bne t0,t1,8000028c <fail>
|
80000058: 24629063 bne t0,t1,80000298 <fail>
|
||||||
8000005c: 191f02b7 lui t0,0x191f0
|
8000005c: 191f02b7 lui t0,0x191f0
|
||||||
80000060: 30428293 addi t0,t0,772 # 191f0304 <_start-0x66e0fcfc>
|
80000060: 30428293 addi t0,t0,772 # 191f0304 <_start-0x66e0fcfc>
|
||||||
80000064: 3a129073 csrw pmpcfg1,t0
|
80000064: 3a129073 csrw pmpcfg1,t0
|
||||||
|
@ -44,7 +44,7 @@ Disassembly of section .crt_section:
|
||||||
80000080: 200002b7 lui t0,0x20000
|
80000080: 200002b7 lui t0,0x20000
|
||||||
80000084: 3b029073 csrw pmpaddr0,t0
|
80000084: 3b029073 csrw pmpaddr0,t0
|
||||||
80000088: 3b002373 csrr t1,pmpaddr0
|
80000088: 3b002373 csrr t1,pmpaddr0
|
||||||
8000008c: 20629063 bne t0,t1,8000028c <fail>
|
8000008c: 20629663 bne t0,t1,80000298 <fail>
|
||||||
80000090: fff00293 li t0,-1
|
80000090: fff00293 li t0,-1
|
||||||
80000094: 3b129073 csrw pmpaddr1,t0
|
80000094: 3b129073 csrw pmpaddr1,t0
|
||||||
80000098: 200022b7 lui t0,0x20002
|
80000098: 200022b7 lui t0,0x20002
|
||||||
|
@ -85,116 +85,119 @@ Disassembly of section .crt_section:
|
||||||
80000124: 0020a023 sw sp,0(ra)
|
80000124: 0020a023 sw sp,0(ra)
|
||||||
80000128: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
80000128: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
||||||
8000012c: 0000a183 lw gp,0(ra)
|
8000012c: 0000a183 lw gp,0(ra)
|
||||||
80000130: 14311e63 bne sp,gp,8000028c <fail>
|
80000130: 16311463 bne sp,gp,80000298 <fail>
|
||||||
80000134: 00000193 li gp,0
|
80000134: 00000193 li gp,0
|
||||||
80000138: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
80000138: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
||||||
8000013c: 14311863 bne sp,gp,8000028c <fail>
|
8000013c: 14311e63 bne sp,gp,80000298 <fail>
|
||||||
|
|
||||||
80000140 <test1>:
|
80000140 <test1>:
|
||||||
80000140: 00100e13 li t3,1
|
80000140: 00100e13 li t3,1
|
||||||
80000144: 00000f17 auipc t5,0x0
|
80000144: 00000f17 auipc t5,0x0
|
||||||
80000148: 148f0f13 addi t5,t5,328 # 8000028c <fail>
|
80000148: 154f0f13 addi t5,t5,340 # 80000298 <fail>
|
||||||
8000014c: 079212b7 lui t0,0x7921
|
8000014c: 079212b7 lui t0,0x7921
|
||||||
80000150: 80828293 addi t0,t0,-2040 # 7920808 <_start-0x786df7f8>
|
80000150: 80828293 addi t0,t0,-2040 # 7920808 <_start-0x786df7f8>
|
||||||
80000154: 3a029073 csrw pmpcfg0,t0
|
80000154: 3a029073 csrw pmpcfg0,t0
|
||||||
80000158: 3a002373 csrr t1,pmpcfg0
|
80000158: 3a002373 csrr t1,pmpcfg0
|
||||||
8000015c: 12629863 bne t0,t1,8000028c <fail>
|
8000015c: 12629e63 bne t0,t1,80000298 <fail>
|
||||||
80000160: 800080b7 lui ra,0x80008
|
80000160: 800080b7 lui ra,0x80008
|
||||||
80000164: deadc137 lui sp,0xdeadc
|
80000164: deadc137 lui sp,0xdeadc
|
||||||
80000168: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc57>
|
80000168: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc4b>
|
||||||
8000016c: 0020a023 sw sp,0(ra) # 80008000 <pass+0x7d68>
|
8000016c: 0020a023 sw sp,0(ra) # 80008000 <pass+0x7d5c>
|
||||||
80000170: 00000f17 auipc t5,0x0
|
80000170: 00000f17 auipc t5,0x0
|
||||||
80000174: 010f0f13 addi t5,t5,16 # 80000180 <test2>
|
80000174: 010f0f13 addi t5,t5,16 # 80000180 <test2>
|
||||||
80000178: 0000a183 lw gp,0(ra)
|
80000178: 0000a183 lw gp,0(ra)
|
||||||
8000017c: 1100006f j 8000028c <fail>
|
8000017c: 11c0006f j 80000298 <fail>
|
||||||
|
|
||||||
80000180 <test2>:
|
80000180 <test2>:
|
||||||
80000180: 00200e13 li t3,2
|
80000180: 00200e13 li t3,2
|
||||||
80000184: 00000f17 auipc t5,0x0
|
80000184: 00000f17 auipc t5,0x0
|
||||||
80000188: 108f0f13 addi t5,t5,264 # 8000028c <fail>
|
80000188: 114f0f13 addi t5,t5,276 # 80000298 <fail>
|
||||||
8000018c: 071202b7 lui t0,0x7120
|
8000018c: 071202b7 lui t0,0x7120
|
||||||
80000190: 3a029073 csrw pmpcfg0,t0
|
80000190: 3a029073 csrw pmpcfg0,t0
|
||||||
80000194: 3a002373 csrr t1,pmpcfg0
|
80000194: 3a002373 csrr t1,pmpcfg0
|
||||||
80000198: 0e628a63 beq t0,t1,8000028c <fail>
|
80000198: 3b205073 csrwi pmpaddr2,0
|
||||||
8000019c: 800080b7 lui ra,0x80008
|
8000019c: 3b202373 csrr t1,pmpaddr2
|
||||||
800001a0: deadc137 lui sp,0xdeadc
|
800001a0: 0e030c63 beqz t1,80000298 <fail>
|
||||||
800001a4: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc57>
|
800001a4: 0e628a63 beq t0,t1,80000298 <fail>
|
||||||
800001a8: 0020a023 sw sp,0(ra) # 80008000 <pass+0x7d68>
|
800001a8: 800080b7 lui ra,0x80008
|
||||||
800001ac: 00000f17 auipc t5,0x0
|
800001ac: deadc137 lui sp,0xdeadc
|
||||||
800001b0: 010f0f13 addi t5,t5,16 # 800001bc <test3>
|
800001b0: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc4b>
|
||||||
800001b4: 0000a183 lw gp,0(ra)
|
800001b4: 0020a023 sw sp,0(ra) # 80008000 <pass+0x7d5c>
|
||||||
800001b8: 0d40006f j 8000028c <fail>
|
800001b8: 00000f17 auipc t5,0x0
|
||||||
|
800001bc: 010f0f13 addi t5,t5,16 # 800001c8 <test3>
|
||||||
|
800001c0: 0000a183 lw gp,0(ra)
|
||||||
|
800001c4: 0d40006f j 80000298 <fail>
|
||||||
|
|
||||||
800001bc <test3>:
|
800001c8 <test3>:
|
||||||
800001bc: 00300e13 li t3,3
|
800001c8: 00300e13 li t3,3
|
||||||
800001c0: 00000f17 auipc t5,0x0
|
800001cc: 00000f17 auipc t5,0x0
|
||||||
800001c4: 0ccf0f13 addi t5,t5,204 # 8000028c <fail>
|
800001d0: 0ccf0f13 addi t5,t5,204 # 80000298 <fail>
|
||||||
800001c8: 00000117 auipc sp,0x0
|
800001d4: 00000117 auipc sp,0x0
|
||||||
800001cc: 01010113 addi sp,sp,16 # 800001d8 <test4>
|
800001d8: 01010113 addi sp,sp,16 # 800001e4 <test4>
|
||||||
800001d0: 34111073 csrw mepc,sp
|
800001dc: 34111073 csrw mepc,sp
|
||||||
800001d4: 30200073 mret
|
800001e0: 30200073 mret
|
||||||
|
|
||||||
800001d8 <test4>:
|
800001e4 <test4>:
|
||||||
800001d8: 00400e13 li t3,4
|
800001e4: 00400e13 li t3,4
|
||||||
800001dc: 00000f17 auipc t5,0x0
|
800001e8: 00000f17 auipc t5,0x0
|
||||||
800001e0: 0b0f0f13 addi t5,t5,176 # 8000028c <fail>
|
800001ec: 0b0f0f13 addi t5,t5,176 # 80000298 <fail>
|
||||||
800001e4: deadc137 lui sp,0xdeadc
|
800001f0: deadc137 lui sp,0xdeadc
|
||||||
800001e8: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc57>
|
800001f4: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc4b>
|
||||||
800001ec: 800080b7 lui ra,0x80008
|
800001f8: 800080b7 lui ra,0x80008
|
||||||
800001f0: 0020a023 sw sp,0(ra) # 80008000 <pass+0x7d68>
|
800001fc: 0020a023 sw sp,0(ra) # 80008000 <pass+0x7d5c>
|
||||||
800001f4: 00000f17 auipc t5,0x0
|
80000200: 00000f17 auipc t5,0x0
|
||||||
800001f8: 010f0f13 addi t5,t5,16 # 80000204 <test5>
|
80000204: 010f0f13 addi t5,t5,16 # 80000210 <test5>
|
||||||
800001fc: 0000a183 lw gp,0(ra)
|
80000208: 0000a183 lw gp,0(ra)
|
||||||
80000200: 08c0006f j 8000028c <fail>
|
8000020c: 08c0006f j 80000298 <fail>
|
||||||
|
|
||||||
80000204 <test5>:
|
80000210 <test5>:
|
||||||
80000204: 00500e13 li t3,5
|
80000210: 00500e13 li t3,5
|
||||||
80000208: deadc137 lui sp,0xdeadc
|
80000214: deadc137 lui sp,0xdeadc
|
||||||
8000020c: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc57>
|
80000218: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc4b>
|
||||||
80000210: 800000b7 lui ra,0x80000
|
8000021c: 800000b7 lui ra,0x80000
|
||||||
80000214: 0020a023 sw sp,0(ra) # 80000000 <pass+0xfffffd68>
|
80000220: 0020a023 sw sp,0(ra) # 80000000 <pass+0xfffffd5c>
|
||||||
80000218: 0000a183 lw gp,0(ra)
|
80000224: 0000a183 lw gp,0(ra)
|
||||||
8000021c: 06311863 bne sp,gp,8000028c <fail>
|
80000228: 06311863 bne sp,gp,80000298 <fail>
|
||||||
|
|
||||||
80000220 <test6>:
|
8000022c <test6>:
|
||||||
80000220: 00600e13 li t3,6
|
8000022c: 00600e13 li t3,6
|
||||||
80000224: 800100b7 lui ra,0x80010
|
80000230: 800100b7 lui ra,0x80010
|
||||||
80000228: 0000a183 lw gp,0(ra) # 80010000 <pass+0xfd68>
|
80000234: 0000a183 lw gp,0(ra) # 80010000 <pass+0xfd5c>
|
||||||
8000022c: 00000f17 auipc t5,0x0
|
80000238: 00000f17 auipc t5,0x0
|
||||||
80000230: 06cf0f13 addi t5,t5,108 # 80000298 <pass>
|
8000023c: 06cf0f13 addi t5,t5,108 # 800002a4 <pass>
|
||||||
80000234: 0030a023 sw gp,0(ra)
|
80000240: 0030a023 sw gp,0(ra)
|
||||||
80000238: 0540006f j 8000028c <fail>
|
80000244: 0540006f j 80000298 <fail>
|
||||||
|
|
||||||
8000023c <test7>:
|
80000248 <test7>:
|
||||||
8000023c: 00700e13 li t3,7
|
80000248: 00700e13 li t3,7
|
||||||
80000240: 00000f17 auipc t5,0x0
|
8000024c: 00000f17 auipc t5,0x0
|
||||||
80000244: 04cf0f13 addi t5,t5,76 # 8000028c <fail>
|
80000250: 04cf0f13 addi t5,t5,76 # 80000298 <fail>
|
||||||
80000248: deadc137 lui sp,0xdeadc
|
80000254: deadc137 lui sp,0xdeadc
|
||||||
8000024c: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc57>
|
80000258: eef10113 addi sp,sp,-273 # deadbeef <pass+0x5eadbc4b>
|
||||||
80000250: 800300b7 lui ra,0x80030
|
8000025c: 800300b7 lui ra,0x80030
|
||||||
80000254: ff808093 addi ra,ra,-8 # 8002fff8 <pass+0x2fd60>
|
80000260: ff808093 addi ra,ra,-8 # 8002fff8 <pass+0x2fd54>
|
||||||
80000258: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
80000264: 00222023 sw sp,0(tp) # 0 <_start-0x80000000>
|
||||||
8000025c: 00000f17 auipc t5,0x0
|
80000268: 00000f17 auipc t5,0x0
|
||||||
80000260: fa8f0f13 addi t5,t5,-88 # 80000204 <test5>
|
8000026c: fa8f0f13 addi t5,t5,-88 # 80000210 <test5>
|
||||||
80000264: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
80000270: 00022183 lw gp,0(tp) # 0 <_start-0x80000000>
|
||||||
80000268: 0240006f j 8000028c <fail>
|
80000274: 0240006f j 80000298 <fail>
|
||||||
|
|
||||||
8000026c <test8>:
|
80000278 <test8>:
|
||||||
8000026c: 00800e13 li t3,8
|
80000278: 00800e13 li t3,8
|
||||||
80000270: 800400b7 lui ra,0x80040
|
8000027c: 800400b7 lui ra,0x80040
|
||||||
80000274: ff808093 addi ra,ra,-8 # 8003fff8 <pass+0x3fd60>
|
80000280: ff808093 addi ra,ra,-8 # 8003fff8 <pass+0x3fd54>
|
||||||
80000278: 0000a183 lw gp,0(ra)
|
80000284: 0000a183 lw gp,0(ra)
|
||||||
8000027c: 00000f17 auipc t5,0x0
|
80000288: 00000f17 auipc t5,0x0
|
||||||
80000280: 01cf0f13 addi t5,t5,28 # 80000298 <pass>
|
8000028c: 01cf0f13 addi t5,t5,28 # 800002a4 <pass>
|
||||||
80000284: 0030a023 sw gp,0(ra)
|
80000290: 0030a023 sw gp,0(ra)
|
||||||
80000288: 0040006f j 8000028c <fail>
|
80000294: 0040006f j 80000298 <fail>
|
||||||
|
|
||||||
8000028c <fail>:
|
80000298 <fail>:
|
||||||
8000028c: f0100137 lui sp,0xf0100
|
|
||||||
80000290: f2410113 addi sp,sp,-220 # f00fff24 <pass+0x700ffc8c>
|
|
||||||
80000294: 01c12023 sw t3,0(sp)
|
|
||||||
|
|
||||||
80000298 <pass>:
|
|
||||||
80000298: f0100137 lui sp,0xf0100
|
80000298: f0100137 lui sp,0xf0100
|
||||||
8000029c: f2010113 addi sp,sp,-224 # f00fff20 <pass+0x700ffc88>
|
8000029c: f2410113 addi sp,sp,-220 # f00fff24 <pass+0x700ffc80>
|
||||||
800002a0: 00012023 sw zero,0(sp)
|
800002a0: 01c12023 sw t3,0(sp)
|
||||||
|
|
||||||
|
800002a4 <pass>:
|
||||||
|
800002a4: f0100137 lui sp,0xf0100
|
||||||
|
800002a8: f2010113 addi sp,sp,-224 # f00fff20 <pass+0x700ffc7c>
|
||||||
|
800002ac: 00012023 sw zero,0(sp)
|
||||||
|
|
Binary file not shown.
|
@ -1,13 +1,13 @@
|
||||||
:0200000480007A
|
:0200000480007A
|
||||||
:100000009700000093800001739050306F00C00093
|
:100000009700000093800001739050306F00C00093
|
||||||
:1000100073101F3473002030130E0000170F000000
|
:1000100073101F3473002030130E0000170F000000
|
||||||
:10002000130F0F27B70000803782008037C1ADDE85
|
:10002000130FCF27B70000803782008037C1ADDEC5
|
||||||
:100030001301F1EE23A020002320220083A1000061
|
:100030001301F1EE23A020002320220083A1000061
|
||||||
:10004000631631248321020063123124B7021207A0
|
:10004000631C31248321020063183124B702120794
|
||||||
:100050007390023A7323003A639A6222B7021F191F
|
:100050007390023A7323003A63906224B7021F1927
|
||||||
:10006000938242307390123AB7020F00938262502B
|
:10006000938242307390123AB7020F00938262502B
|
||||||
:100070007390223AB7221E0F938202907390323A05
|
:100070007390223AB7221E0F938202907390323A05
|
||||||
:10008000B70200207390023B7323003B6390622011
|
:10008000B70200207390023B7323003B639662200B
|
||||||
:100090009302F0FF7390123BB72200207390223B33
|
:100090009302F0FF7390123BB72200207390223B33
|
||||||
:1000A000B74200209382F2FF7390323BB7420020A8
|
:1000A000B74200209382F2FF7390323BB7420020A8
|
||||||
:1000B0009382F2FF7390423BB74200209382F2FF9B
|
:1000B0009382F2FF7390423BB74200209382F2FF9B
|
||||||
|
@ -18,29 +18,29 @@
|
||||||
:100100007390C23B930200007390D23B93020000B5
|
:100100007390C23B930200007390D23B93020000B5
|
||||||
:100110007390E23B930200007390F23B3701C10001
|
:100110007390E23B930200007390F23B3701C10001
|
||||||
:100120001301E1FE23A020002320220083A1000070
|
:100120001301E1FE23A020002320220083A1000070
|
||||||
:10013000631E3114930100008321020063183114FF
|
:10013000631431169301000083210200631E311401
|
||||||
:10014000130E1000170F0000130F8F14B712920731
|
:10014000130E1000170F0000130F4F15B712920770
|
||||||
:10015000938282807390023A7323003A639862120A
|
:10015000938282807390023A7323003A639E621204
|
||||||
:10016000B780008037C1ADDE1301F1EE23A020007F
|
:10016000B780008037C1ADDE1301F1EE23A020007F
|
||||||
:10017000170F0000130F0F0183A100006F00001183
|
:10017000170F0000130F0F0183A100006F00C011C3
|
||||||
:10018000130E2000170F0000130F8F10B702120775
|
:10018000130E2000170F0000130F4F11B7021207B4
|
||||||
:100190007390023A7323003A638A620EB78000803C
|
:100190007390023A7323003A7350203B7323203B41
|
||||||
:1001A00037C1ADDE1301F1EE23A02000170F0000D0
|
:1001A000630C030E638A620EB780008037C1ADDE38
|
||||||
:1001B000130F0F0183A100006F00400D130E3000DC
|
:1001B0001301F1EE23A02000170F0000130F0F0111
|
||||||
:1001C000170F0000130FCF0C1701000013010101DE
|
:1001C00083A100006F00400D130E3000170F0000D8
|
||||||
:1001D0007310113473002030130E4000170F00000D
|
:1001D000130FCF0C1701000013010101731011342C
|
||||||
:1001E000130F0F0B37C1ADDE1301F1EEB7800080A6
|
:1001E00073002030130E4000170F0000130F0F0B89
|
||||||
:1001F00023A02000170F0000130F0F0183A10000A0
|
:1001F00037C1ADDE1301F1EEB780008023A02000EF
|
||||||
:100200006F00C008130E500037C1ADDE1301F1EED0
|
:10020000170F0000130F0F0183A100006F00C0083B
|
||||||
:10021000B700008023A0200083A1000063183106EE
|
:10021000130E500037C1ADDE1301F1EEB7000080C0
|
||||||
:10022000130E6000B700018083A10000170F0000CB
|
:1002200023A0200083A1000063183106130E600094
|
||||||
:10023000130FCF0623A030006F004005130E70008F
|
:10023000B700018083A10000170F0000130FCF0645
|
||||||
:10024000170F0000130FCF0437C1ADDE1301F1EE1D
|
:1002400023A030006F004005130E7000170F000050
|
||||||
:10025000B7000380938080FF23202200170F000047
|
:10025000130FCF0437C1ADDE1301F1EEB7000380F9
|
||||||
:10026000130F8FFA832102006F004002130E8000EB
|
:10026000938080FF23202200170F0000130F8FFAC6
|
||||||
:10027000B7000480938080FF83A10000170F000067
|
:10027000832102006F004002130E8000B70004804B
|
||||||
:10028000130FCF0123A030006F004000370110F0A2
|
:10028000938080FF83A10000170F0000130FCF01A0
|
||||||
:10029000130141F22320C101370110F0130101F2D3
|
:1002900023A030006F004000370110F0130141F23D
|
||||||
:0402A0002320010016
|
:1002A0002320C101370110F0130101F223200100C6
|
||||||
:040000058000000077
|
:040000058000000077
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|
|
@ -15,19 +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 0x2a4
|
.crt_section 0x0000000080000000 0x2b0
|
||||||
0x0000000080000000 . = ALIGN (0x4)
|
0x0000000080000000 . = ALIGN (0x4)
|
||||||
*crt.o(.text)
|
*crt.o(.text)
|
||||||
.text 0x0000000080000000 0x2a4 build/src/crt.o
|
.text 0x0000000080000000 0x2b0 build/src/crt.o
|
||||||
0x0000000080000000 _start
|
0x0000000080000000 _start
|
||||||
0x0000000080000010 trap
|
0x0000000080000010 trap
|
||||||
OUTPUT(build/pmp.elf elf32-littleriscv)
|
OUTPUT(build/pmp.elf elf32-littleriscv)
|
||||||
|
|
||||||
.data 0x00000000800002a4 0x0
|
.data 0x00000000800002b0 0x0
|
||||||
.data 0x00000000800002a4 0x0 build/src/crt.o
|
.data 0x00000000800002b0 0x0 build/src/crt.o
|
||||||
|
|
||||||
.bss 0x00000000800002a4 0x0
|
.bss 0x00000000800002b0 0x0
|
||||||
.bss 0x00000000800002a4 0x0 build/src/crt.o
|
.bss 0x00000000800002b0 0x0 build/src/crt.o
|
||||||
|
|
||||||
.riscv.attributes
|
.riscv.attributes
|
||||||
0x0000000000000000 0x1e
|
0x0000000000000000 0x1e
|
||||||
|
|
|
@ -132,6 +132,9 @@ test2:
|
||||||
li x5, PMPCFG0
|
li x5, PMPCFG0
|
||||||
csrw pmpcfg0, x5 // "unlock" region 2
|
csrw pmpcfg0, x5 // "unlock" region 2
|
||||||
csrr x6, pmpcfg0
|
csrr x6, pmpcfg0
|
||||||
|
csrwi pmpaddr2, 0x0
|
||||||
|
csrr x6, pmpaddr2
|
||||||
|
beqz x6, fail
|
||||||
beq x5, x6, fail
|
beq x5, x6, fail
|
||||||
li x1, 0x80008000
|
li x1, 0x80008000
|
||||||
li x2, 0xdeadbeef
|
li x2, 0xdeadbeef
|
||||||
|
|
Loading…
Reference in New Issue