1
0

In TLBPermissions, don't merge regions of different types

This commit is contained in:
Andrew Waterman 2017-04-14 16:18:11 -07:00 committed by Andrew Waterman
parent 7871ec82c4
commit 74a7838de0

View File

@ -18,6 +18,7 @@ case class TLBPermissions(
object TLBPageLookup object TLBPageLookup
{ {
private case class TLBFixedPermissions( private case class TLBFixedPermissions(
t: RegionType.T,
r: Boolean, // readable r: Boolean, // readable
w: Boolean, // writeable w: Boolean, // writeable
x: Boolean, // executable x: Boolean, // executable
@ -47,6 +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,
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,