diff --git a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.h b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.h index 50fba38240..df770cf7d7 100644 --- a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.h +++ b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Lib.h @@ -22,5 +22,11 @@ ArmV7AllDataCachesOperation ( IN ARM_V7_CACHE_OPERATION DataCacheOperation ); +UINTN +EFIAPI +ArmReadIdMmfr0 ( + VOID + ); + #endif // __ARM_V7_LIB_H__ diff --git a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S index 93164b8f0e..7366eee6dc 100644 --- a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S +++ b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.S @@ -51,6 +51,7 @@ GCC_ASM_EXPORT (ArmReadTpidrurw) GCC_ASM_EXPORT (ArmWriteTpidrurw) GCC_ASM_EXPORT (ArmIsArchTimerImplemented) GCC_ASM_EXPORT (ArmReadIdPfr1) +GCC_ASM_EXPORT (ArmReadIdMmfr0) .set DC_ON, (0x1<<2) .set IC_ON, (0x1<<12) @@ -326,4 +327,8 @@ ASM_PFX(ArmReadIdPfr1): mrc p15, 0, r0, c0, c1, 1 @ Read ID_PFR1 Register bx lr +ASM_PFX(ArmReadIdMmfr0): + mrc p15, 0, r0, c0, c1, 4 @ Read ID_MMFR0 Register + bx lr + ASM_FUNCTION_REMOVE_IF_UNREFERENCED diff --git a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm index d6f249038a..78a12e1629 100644 --- a/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm +++ b/ArmPkg/Library/ArmLib/ArmV7/ArmV7Support.asm @@ -48,6 +48,7 @@ EXPORT ArmWriteTpidrurw EXPORT ArmIsArchTimerImplemented EXPORT ArmReadIdPfr1 + EXPORT ArmReadIdMmfr0 AREA ArmV7Support, CODE, READONLY PRESERVE8 @@ -320,4 +321,8 @@ ArmReadIdPfr1 mrc p15, 0, r0, c0, c1, 1 ; Read ID_PFR1 Register bx lr +ArmReadIdMmfr0 + mrc p15, 0, r0, c0, c1, 4 ; Read ID_MMFR0 Register + bx lr + END