arm: AArch64 report cache size correctly when reading CTR_EL0
Trying to read MISCREG_CTR_EL0 on AArch64 returned 0 as is was not implmemented. With that an operating system relying on the cache line sizes reported in order to manage the caches would (a) panic given the returned value 0 is not valid (high bit is RES1) or (b) worst case would assume a cache line size of 4 doing a tremendous amount of extra instruction work (including fetching). Return the same values as for ARMv7 as the fields seem to be the same, or RES0/1 seem to be reported accordingly for AArch64 In collaboration with: Andrew Turner Testing Done: Checked on FreeBSD boots with extra printfs; also observed a reduction of a factor of about 10 in instruction fetches for a simple micro-test. Reviewed at http://reviews.gem5.org/r/3667/ Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
parent
653b4657e6
commit
f0786704db
|
@ -594,7 +594,8 @@ ISA::readMiscReg(int misc_reg, ThreadContext *tc)
|
|||
warn_once("The ccsidr register isn't implemented and "
|
||||
"always reads as 0.\n");
|
||||
break;
|
||||
case MISCREG_CTR:
|
||||
case MISCREG_CTR: // AArch32, ARMv7, top bit set
|
||||
case MISCREG_CTR_EL0: // AArch64
|
||||
{
|
||||
//all caches have the same line size in gem5
|
||||
//4 byte words in ARM
|
||||
|
|
Loading…
Reference in a new issue