Fix a typo in the 32-bit ARM version of the GICv3 driver, which uses
the wrong system register encoding to access ICC_IAR1, and attempted
to access ICC_IAR0 instead. This results in boot time hangs both
under QEMU emulation and on real hardware.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Ard Biesheuvel <[email protected]>
---
 ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S   | 2 +-
 ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S 
b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
index a72f3c865163..c308d2fa3e2f 100644
--- a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
+++ b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.S
@@ -66,7 +66,7 @@ ASM_FUNC(ArmGicV3EndOfInterrupt)
 //  VOID
 //  );
 ASM_FUNC(ArmGicV3AcknowledgeInterrupt)
-        mrc     p15, 0, r0, c12, c8, 0 //ICC_IAR1
+        mrc     p15, 0, r0, c12, c12, 0 //ICC_IAR1
         bx      lr
 
 //VOID
diff --git a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm 
b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
index 4228fb59be54..222047d1ad43 100644
--- a/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
+++ b/ArmPkg/Drivers/ArmGic/GicV3/Arm/ArmGicV3.asm
@@ -66,7 +66,7 @@
 //  VOID
 //  );
  RVCT_ASM_EXPORT ArmGicV3AcknowledgeInterrupt
-        mrc     p15, 0, r0, c12, c8, 0 //ICC_IAR1
+        mrc     p15, 0, r0, c12, c12, 0 //ICC_IAR1
         bx      lr
 
 //VOID
-- 
2.17.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to