When not using a cache, LR/SC isn't legal even on cacheable memory
This commit is contained in:
parent
1be13d6b4c
commit
67404a665b
@ -188,9 +188,10 @@ class TLB(lgMaxSize: Int, nEntries: Int)(implicit edge: TLEdgeOut, p: Parameters
|
|||||||
(if (vpnBits == vpnBitsExtended) Bool(false)
|
(if (vpnBits == vpnBitsExtended) Bool(false)
|
||||||
else vpn(vpnBits) =/= vpn(vpnBits-1))
|
else vpn(vpnBits) =/= vpn(vpnBits-1))
|
||||||
|
|
||||||
|
val lrscAllowed = Mux(Bool(usingDataScratchpad), 0.U, c_array)
|
||||||
val ae_array =
|
val ae_array =
|
||||||
Mux(misaligned, eff_array, 0.U) |
|
Mux(misaligned, eff_array, 0.U) |
|
||||||
Mux(Bool(usingAtomics) && io.req.bits.cmd.isOneOf(M_XLR, M_XSC), ~c_array, 0.U)
|
Mux(Bool(usingAtomics) && io.req.bits.cmd.isOneOf(M_XLR, M_XSC), ~lrscAllowed, 0.U)
|
||||||
val ae_ld_array = Mux(isRead(io.req.bits.cmd), ae_array | ~pr_array, 0.U)
|
val ae_ld_array = Mux(isRead(io.req.bits.cmd), ae_array | ~pr_array, 0.U)
|
||||||
val ae_st_array =
|
val ae_st_array =
|
||||||
Mux(isWrite(io.req.bits.cmd), ae_array | ~pw_array, 0.U) |
|
Mux(isWrite(io.req.bits.cmd), ae_array | ~pw_array, 0.U) |
|
||||||
|
Loading…
Reference in New Issue
Block a user