1
0

In TLBPermissions, merge across some region types

We only care whether they have side effects or not.
This commit is contained in:
Andrew Waterman 2017-04-17 20:44:29 -07:00 committed by Andrew Waterman
parent 6de6f38894
commit a956b78dd2

View File

@ -18,7 +18,7 @@ case class TLBPermissions(
object TLBPageLookup object TLBPageLookup
{ {
private case class TLBFixedPermissions( private case class TLBFixedPermissions(
t: RegionType.T, e: Boolean, // get-/put-effects
r: Boolean, // readable r: Boolean, // readable
w: Boolean, // writeable w: Boolean, // writeable
x: Boolean, // executable x: Boolean, // executable
@ -48,7 +48,7 @@ object TLBPageLookup
require (m.supportsAcquireT || !m.supportsAcquireB, s"MemoryMap region ${m.name} supports AcquireB (cached read) but not AcquireT (cached write)... and rocket assumes this") require (m.supportsAcquireT || !m.supportsAcquireB, s"MemoryMap region ${m.name} supports AcquireB (cached read) but not AcquireT (cached write)... and rocket assumes this")
(m.address, TLBFixedPermissions( (m.address, TLBFixedPermissions(
t = m.regionType, e = Seq(RegionType.PUT_EFFECTS, RegionType.GET_EFFECTS) contains m.regionType,
r = m.supportsGet || m.supportsAcquireB, // if cached, never uses Get r = m.supportsGet || m.supportsAcquireB, // if cached, never uses Get
w = m.supportsPutFull || m.supportsAcquireT, // if cached, never uses Put w = m.supportsPutFull || m.supportsAcquireT, // if cached, never uses Put
x = m.executable, x = m.executable,