summaryrefslogtreecommitdiff
path: root/src/dev/arm
diff options
context:
space:
mode:
authorGiacomo Travaglini <giacomo.travaglini@arm.com>2019-07-22 17:38:29 +0100
committerGiacomo Travaglini <giacomo.travaglini@arm.com>2019-07-25 12:49:27 +0000
commitaf1838be8d1efbbbb7133262f23f9f757033589d (patch)
treeb92975b101bbf556e837e3f7c415df4217fa7006 /src/dev/arm
parent404b86813e73762cdce537c440abb16f6ab1bb97 (diff)
downloadgem5-af1838be8d1efbbbb7133262f23f9f757033589d.tar.xz
dev-arm: Define enum masks for SMMU_CR0 register
The configuration register is a vital register in the SMMU, and using enum masks will make the code more readable/understandable Change-Id: Ia117db56c457fe876ae38be391c386e502f34384 Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com> Reviewed-by: Michiel Van Tol <michiel.vantol@arm.com> Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19632 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com> Tested-by: kokoro <noreply+kokoro@google.com>
Diffstat (limited to 'src/dev/arm')
-rw-r--r--src/dev/arm/smmu_v3_defs.hh9
-rw-r--r--src/dev/arm/smmu_v3_transl.cc3
2 files changed, 10 insertions, 2 deletions
diff --git a/src/dev/arm/smmu_v3_defs.hh b/src/dev/arm/smmu_v3_defs.hh
index 991e90c7b..d993fd715 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 c1d998ea0..d7d576883 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));