diff options
author | Olivier Martin <olivier.martin@arm.com> | 2015-02-16 10:23:42 +0000 |
---|---|---|
committer | oliviermartin <oliviermartin@Edk2> | 2015-02-16 10:23:42 +0000 |
commit | 41fb5d4634c17c042e0a3b2be0e8db85d2a083ad (patch) | |
tree | 12aca0d20fbd7fd1758ba182fd36ee07b1e2708a /ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c | |
parent | 8705cb380654b80fc7b4c2863b1bed521d2a9f82 (diff) | |
download | edk2-41fb5d4634c17c042e0a3b2be0e8db85d2a083ad.tar.gz edk2-41fb5d4634c17c042e0a3b2be0e8db85d2a083ad.tar.bz2 edk2-41fb5d4634c17c042e0a3b2be0e8db85d2a083ad.zip |
ArmPkg/ArmGic: Use the GIC Redistributor instead of GIC Distributor for GICv3
GICv3 controller with no GICv2 legacy support must use the GIC
Redistributor registers instead of the GIC Distributor registers
for some operations (eg: enable/disable interrupts).
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
Tested-by: Ard Biesheuvel <ard@linaro.org>
Reviewed-by: Ard Biesheuvel <ard@linaro.org>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16874 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c')
-rw-r--r-- | ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c b/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c index 06367f9d77..e2538f1798 100644 --- a/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c +++ b/ArmPkg/Drivers/ArmGic/ArmGicNonSecLib.c @@ -1,6 +1,6 @@ /** @file
*
-* Copyright (c) 2011-2014, ARM Limited. All rights reserved.
+* Copyright (c) 2011-2015, ARM Limited. All rights reserved.
*
* This program and the accompanying materials
* are licensed and made available under the terms and conditions of the BSD License
@@ -22,9 +22,16 @@ ArmGicEnableDistributor ( IN INTN GicDistributorBase
)
{
+ ARM_GIC_ARCH_REVISION Revision;
+
/*
* Enable GIC distributor in Non-Secure world.
* Note: The ICDDCR register is banked when Security extensions are implemented
*/
- MmioWrite32 (GicDistributorBase + ARM_GIC_ICDDCR, 0x1);
+ Revision = ArmGicGetSupportedArchRevision ();
+ if (Revision == ARM_GIC_ARCH_REVISION_2) {
+ MmioWrite32 (GicDistributorBase + ARM_GIC_ICDDCR, 0x1);
+ } else {
+ MmioWrite32 (GicDistributorBase + ARM_GIC_ICDDCR, 0x2);
+ }
}
|