boost/boost-context-0047-some-fix...

170 lines
4.7 KiB
Diff

From 1e2584e00c71e120d652f0d4ae105e54ceca16a8 Mon Sep 17 00:00:00 2001
From: Oliver Kowalke <oliver.kowalke@gmx.de>
Date: Tue, 24 Feb 2015 17:50:14 +0100
Subject: [PATCH 47/54] some fixes for ARM64
---
src/asm/jump_arm64_aapcs_elf_gas.S | 44 ++++++++++++++++++------------------
src/asm/jump_arm64_aapcs_macho_gas.S | 44 ++++++++++++++++++------------------
2 files changed, 44 insertions(+), 44 deletions(-)
diff --git a/libs/context/src/asm/jump_arm64_aapcs_elf_gas.S b/libs/context/src/asm/jump_arm64_aapcs_elf_gas.S
index 46e029d..889008f 100644
--- a/libs/context/src/asm/jump_arm64_aapcs_elf_gas.S
+++ b/libs/context/src/asm/jump_arm64_aapcs_elf_gas.S
@@ -71,22 +71,22 @@ jump_fcontext:
# b.eq 1f
# save d8 - d15
- stp d8, d9, [sp, #0x00]
- stp d10, d11, [sp, #0x10]
- stp d12, d13, [sp, #0x20]
- stp d14, d15, [sp, #0x30]
+ stp d8, d9, [sp, #0x00]
+ stp d10, d11, [sp, #0x10]
+ stp d12, d13, [sp, #0x20]
+ stp d14, d15, [sp, #0x30]
1:
# save x19-x30
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
- stp x25, x26, [sp, #0x70]
- stp x27, x28, [sp, #0x80]
- stp x29, x30, [sp, #0x90]
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
+ stp x23, x24, [sp, #0x60]
+ stp x25, x26, [sp, #0x70]
+ stp x27, x28, [sp, #0x80]
+ stp fp, lr, [sp, #0x90]
# save LR as PC
- str x30, [sp, #0xa0]
+ str lr, [sp, #0xa0]
# store RSP (pointing to context-data) in first argument (x0).
# STR cannot have sp as a target register
@@ -101,26 +101,26 @@ jump_fcontext:
# b.eq 2f
# load d8 - d15
- ldp d8, d9, [x0, #0x00]
- ldp d10, d11, [x0, #0x10]
- ldp d12, d13, [x0, #0x20]
- ldp d14, d15, [x0, #0x30]
+ ldp d8, d9, [sp, #0x00]
+ ldp d10, d11, [sp, #0x10]
+ ldp d12, d13, [sp, #0x20]
+ ldp d14, d15, [sp, #0x30]
2:
# load x19-x30
- ldp x19, x20, [sp, #0x40]
- ldp x21, x22, [sp, #0x50]
- ldp x23, x24, [sp, #0x60]
- ldp x25, x26, [sp, #0x70]
- ldp x27, x28, [sp, #0x80]
- ldp x29, x30, [sp, #0x90]
+ ldp x19, x20, [sp, #0x40]
+ ldp x21, x22, [sp, #0x50]
+ ldp x23, x24, [sp, #0x60]
+ ldp x25, x26, [sp, #0x70]
+ ldp x27, x28, [sp, #0x80]
+ ldp fp, lr, [sp, #0x90]
# use third arg as return value after jump
# and as first arg in context function
mov x0, x2
# load pc
- ldr x4, [sp, #0xa0]
+ ldr x4, [sp, #0xa0]
# restore stack from GP + FPU
add sp, sp, #0xb0
diff --git a/libs/context/src/asm/jump_arm64_aapcs_macho_gas.S b/libs/context/src/asm/jump_arm64_aapcs_macho_gas.S
index 29df555..958178e 100644
--- a/libs/context/src/asm/jump_arm64_aapcs_macho_gas.S
+++ b/libs/context/src/asm/jump_arm64_aapcs_macho_gas.S
@@ -58,24 +58,24 @@ _jump_fcontext:
b.eq 1f
; save d8 - d15
- stp d8, d9, [x0, #0x00]
- stp d10, d11, [x0, #0x10]
- stp d12, d13, [x0, #0x20]
- stp d14, d15, [x0, #0x30]
+ stp d8, d9, [sp, #0x00]
+ stp d10, d11, [sp, #0x10]
+ stp d12, d13, [sp, #0x20]
+ stp d14, d15, [sp, #0x30]
1:
#endif
; save x19-x30
- stp x19, x20, [sp, #0x40]
- stp x21, x22, [sp, #0x50]
- stp x23, x24, [sp, #0x60]
- stp x25, x26, [sp, #0x70]
- stp x27, x28, [sp, #0x80]
- stp fp, lr, [sp, #0x90]
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
+ stp x23, x24, [sp, #0x60]
+ stp x25, x26, [sp, #0x70]
+ stp x27, x28, [sp, #0x80]
+ stp fp, lr, [sp, #0x90]
; save LR as PC
- str lr, [sp, #0xa0]
+ str lr, [sp, #0xa0]
; store RSP (pointing to context-data) in first argument (x0).
; STR cannot have sp as a target register
@@ -91,28 +91,28 @@ _jump_fcontext:
b.eq 2f
; load d8 - d15
- ldp d8, d9, [x0, #0x00]
- ldp d10, d11, [x0, #0x10]
- ldp d12, d13, [x0, #0x20]
- ldp d14, d15, [x0, #0x30]
+ ldp d8, d9, [sp, #0x00]
+ ldp d10, d11, [sp, #0x10]
+ ldp d12, d13, [sp, #0x20]
+ ldp d14, d15, [sp, #0x30]
2:
#endif
; load x19-x30
- ldp x19, x20, [sp, #0x40]
- ldp x21, x22, [sp, #0x50]
- ldp x23, x24, [sp, #0x60]
- ldp x25, x26, [sp, #0x70]
- ldp x27, x28, [sp, #0x80]
- ldp fp, lr, [sp, #0x90]
+ ldp x19, x20, [sp, #0x40]
+ ldp x21, x22, [sp, #0x50]
+ ldp x23, x24, [sp, #0x60]
+ ldp x25, x26, [sp, #0x70]
+ ldp x27, x28, [sp, #0x80]
+ ldp fp, lr, [sp, #0x90]
; use third arg as return value after jump
; and as first arg in context function
mov x0, x2
; load pc
- ldr x4, [sp, #0xa0]
+ ldr x4, [sp, #0xa0]
; restore stack from GP + FPU
add sp, sp, #0xb0
--
2.3.5