mirror of https://github.com/acidanthera/audk.git
ArmPkg/CpuDxe/AArch64: use STUR instruction for signed offset
The AARCH64 LDR and STR instructions only support signed offsets for post- and pre-indexed addressing. For normal signed offset addressing, the mnemonic is STUR. GNU As automatically assembles STR with signed offset as STUR, but Clang's integrated assembler doesn't. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Brendan Jackman <brendan.jackman@arm.com> Reviewed-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15508 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
0db208eaca
commit
7eb1d8522a
|
@ -241,8 +241,8 @@ ASM_PFX(SErrorA32):
|
|||
|
||||
#undef REG_PAIR
|
||||
#undef REG_ONE
|
||||
#define REG_PAIR(REG1, REG2, OFFSET, CONTEXT_SIZE) stp REG1, REG2, [sp, #(OFFSET-CONTEXT_SIZE)]
|
||||
#define REG_ONE(REG1, OFFSET, CONTEXT_SIZE) str REG1, [sp, #(OFFSET-CONTEXT_SIZE)]
|
||||
#define REG_PAIR(REG1, REG2, OFFSET, CONTEXT_SIZE) stp REG1, REG2, [sp, #(OFFSET-CONTEXT_SIZE)]
|
||||
#define REG_ONE(REG1, OFFSET, CONTEXT_SIZE) stur REG1, [sp, #(OFFSET-CONTEXT_SIZE)]
|
||||
|
||||
ASM_PFX(SynchronousExceptionEntry):
|
||||
// Move the stackpointer so we can reach our structure with the str instruction.
|
||||
|
@ -355,9 +355,9 @@ ASM_PFX(AsmCommonExceptionEntry):
|
|||
|
||||
#undef REG_PAIR
|
||||
#undef REG_ONE
|
||||
#define REG_PAIR(REG1, REG2, OFFSET, CONTEXT_SIZE) ldp REG1, REG2, [sp, #(OFFSET-CONTEXT_SIZE)]
|
||||
#define REG_PAIR(REG1, REG2, OFFSET, CONTEXT_SIZE) ldp REG1, REG2, [sp, #(OFFSET-CONTEXT_SIZE)]
|
||||
|
||||
#define REG_ONE(REG1, OFFSET, CONTEXT_SIZE) ldr REG1, [sp, #(OFFSET-CONTEXT_SIZE)]
|
||||
#define REG_ONE(REG1, OFFSET, CONTEXT_SIZE) ldur REG1, [sp, #(OFFSET-CONTEXT_SIZE)]
|
||||
|
||||
// Adjust SP to pop system registers
|
||||
add sp, sp, #(GP_CONTEXT_SIZE + FP_CONTEXT_SIZE + SYS_CONTEXT_SIZE)
|
||||
|
|
Loading…
Reference in New Issue