Merge pull request #288 from betrusted-io/expand-satp
Expand SATP register to 22 bits per spec
This commit is contained in:
commit
8a6a926401
|
@ -94,7 +94,8 @@ class MmuPlugin(ioRange : UInt => Bool,
|
||||||
val satp = new Area {
|
val satp = new Area {
|
||||||
val mode = RegInit(False)
|
val mode = RegInit(False)
|
||||||
val asid = Reg(Bits(9 bits))
|
val asid = Reg(Bits(9 bits))
|
||||||
val ppn = Reg(UInt(20 bits))
|
// Bottom 20 bits are used in implementation, but top 2 bits are still stored for OS use.
|
||||||
|
val ppn = Reg(UInt(22 bits))
|
||||||
}
|
}
|
||||||
|
|
||||||
for(offset <- List(CSR.MSTATUS, CSR.SSTATUS)) csrService.rw(offset, 19 -> status.mxr, 18 -> status.sum, 17 -> status.mprv)
|
for(offset <- List(CSR.MSTATUS, CSR.SSTATUS)) csrService.rw(offset, 19 -> status.mxr, 18 -> status.sum, 17 -> status.mprv)
|
||||||
|
@ -233,7 +234,8 @@ class MmuPlugin(ioRange : UInt => Bool,
|
||||||
}
|
}
|
||||||
is(State.L1_CMD){
|
is(State.L1_CMD){
|
||||||
dBusAccess.cmd.valid := True
|
dBusAccess.cmd.valid := True
|
||||||
dBusAccess.cmd.address := csr.satp.ppn @@ vpn(1) @@ U"00"
|
// RV spec allows for 34-bit phys address in Sv32 mode; we only implement 32 bits and ignore the top 2 bits of satp.
|
||||||
|
dBusAccess.cmd.address := csr.satp.ppn(19 downto 0) @@ vpn(1) @@ U"00"
|
||||||
when(dBusAccess.cmd.ready){
|
when(dBusAccess.cmd.ready){
|
||||||
state := State.L1_RSP
|
state := State.L1_RSP
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue