diff --git a/src/dev/arm/smmu_v3_defs.hh b/src/dev/arm/smmu_v3_defs.hh index 991e90c7bf..d993fd7151 100644 --- a/src/dev/arm/smmu_v3_defs.hh +++ b/src/dev/arm/smmu_v3_defs.hh @@ -311,6 +311,15 @@ struct ContextDescriptor uint64_t _pad[3]; }; +enum { + CR0_SMMUEN_MASK = 0x1, + CR0_PRIQEN_MASK = 0x2, + CR0_EVENTQEN_MASK = 0x4, + CR0_CMDQEN_MASK = 0x8, + CR0_ATSCHK_MASK = 0x10, + CR0_VMW_MASK = 0x1C0, +}; + enum SMMUCommandType { CMD_PRF_CONFIG = 0x1000, CMD_PRF_ADDR = 0x1001, diff --git a/src/dev/arm/smmu_v3_transl.cc b/src/dev/arm/smmu_v3_transl.cc index c1d998ea0f..d7d5768830 100644 --- a/src/dev/arm/smmu_v3_transl.cc +++ b/src/dev/arm/smmu_v3_transl.cc @@ -155,8 +155,7 @@ SMMUTranslationProcess::main(Yield &yield) recvTick = curTick(); - - if (!(smmu.regs.cr0 & 0x1)) { + if (!(smmu.regs.cr0 & CR0_SMMUEN_MASK)) { // SMMU disabled doDelay(yield, Cycles(1)); completeTransaction(yield, bypass(request.addr));