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