ArmLib: remove ArmReplaceLiveTranslationEntry() implementation

The function ArmReplaceLiveTranslationEntry() has been moved to
ArmMmuLib, so remove the old implementation from ArmLib.

Note that the new implementation was not exported from the object file,
and so references to it were satisfied by the old version residing in
ArmLib. Since we are removing that one, we need to export the new one
at the same time to prevent the linker from bailing with undefined
reference errors.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
This commit is contained in:
Ard Biesheuvel 2016-08-10 13:43:17 +02:00
parent bfaa3b5b7f
commit 2b47cdc936
2 changed files with 4 additions and 60 deletions

View File

@ -488,64 +488,4 @@ ASM_PFX(ArmReadCurrentEL):
mrs x0, CurrentEL
ret
.macro __replace_entry, el
// disable the MMU
mrs x8, sctlr_el\el
bic x9, x8, #CTRL_M_BIT
msr sctlr_el\el, x9
isb
// write updated entry
str x1, [x0]
// invalidate again to get rid of stale clean cachelines that may
// have been filled speculatively since the last invalidate
dmb sy
dc ivac, x0
// flush the TLBs
.if \el == 1
tlbi vmalle1
.else
tlbi alle\el
.endif
dsb sy
// re-enable the MMU
msr sctlr_el\el, x8
isb
.endm
//VOID
//ArmReplaceLiveTranslationEntry (
// IN UINT64 *Entry,
// IN UINT64 Value
// )
ASM_PFX(ArmReplaceLiveTranslationEntry):
// disable interrupts
mrs x2, daif
msr daifset, #0xf
isb
// clean and invalidate first so that we don't clobber
// adjacent entries that are dirty in the caches
dc civac, x0
dsb ish
EL1_OR_EL2_OR_EL3(x3)
1:__replace_entry 1
b 4f
2:__replace_entry 2
b 4f
3:__replace_entry 3
4:msr daif, x2
ret
ASM_PFX(ArmReplaceLiveTranslationEntrySize):
.long . - ArmReplaceLiveTranslationEntry
ASM_FUNCTION_REMOVE_IF_UNREFERENCED

View File

@ -14,6 +14,8 @@
#include <AsmMacroIoLibV8.h>
GCC_ASM_EXPORT(ArmReplaceLiveTranslationEntry)
.set CTRL_M_BIT, (1 << 0)
.macro __replace_entry, el
@ -72,5 +74,7 @@ ASM_PFX(ArmReplaceLiveTranslationEntry):
4:msr daif, x2
ret
ASM_GLOBAL ASM_PFX(ArmReplaceLiveTranslationEntrySize)
ASM_PFX(ArmReplaceLiveTranslationEntrySize):
.long . - ArmReplaceLiveTranslationEntry