diff options
Diffstat (limited to 'meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0015-Use-PTR_-in-start.S.patch')
-rw-r--r-- | meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0015-Use-PTR_-in-start.S.patch | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0015-Use-PTR_-in-start.S.patch b/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0015-Use-PTR_-in-start.S.patch new file mode 100644 index 0000000..36e4161 --- /dev/null +++ b/meta-linaro-toolchain/recipes-core/glibc/glibc-linaro-2.20/0015-Use-PTR_-in-start.S.patch @@ -0,0 +1,75 @@ +From 67c890fd7f5d830a433399df6e033fe866c851d0 Mon Sep 17 00:00:00 2001 +From: Andrew Pinski <apinski@cavium.com> +Date: Mon, 27 Oct 2014 00:59:38 -0700 +Subject: [PATCH 15/32] Use PTR_* in start.S + +To support ILP32 without much sources changes, this changes +sysdeps/aarch64/start.S to use the PTR_* macros which was defined +earlier. + +* sysdeps/aarch64/start.S: Include sysdep.h +(_start): Use PTR_REG, PTR_SIZE macros. +--- + sysdeps/aarch64/start.S | 20 +++++++++++--------- + 1 file changed, 11 insertions(+), 9 deletions(-) + +diff --git a/sysdeps/aarch64/start.S b/sysdeps/aarch64/start.S +index 35d603a..dfa0622 100644 +--- a/sysdeps/aarch64/start.S ++++ b/sysdeps/aarch64/start.S +@@ -16,6 +16,8 @@ + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + ++#include <sysdep.h> ++ + /* This is the canonical entry point, usually the first thing in the text + segment. + +@@ -25,7 +27,7 @@ + + At this entry point, most registers' values are unspecified, except: + +- x0 Contains a function pointer to be registered with `atexit'. ++ x0/w0 Contains a function pointer to be registered with `atexit'. + This is how the dynamic linker arranges to have DT_FINI + functions called for shared libraries that have been loaded + before this code runs. +@@ -53,26 +55,26 @@ _start: + mov x5, x0 + + /* Load argc and a pointer to argv */ +- ldr x1, [sp, #0] +- add x2, sp, #8 ++ ldr PTR_REG (1), [sp, #0] ++ add x2, sp, #PTR_SIZE + + /* Setup stack limit in argument register */ + mov x6, sp + + #ifdef SHARED + adrp x0, :got:main +- ldr x0, [x0, #:got_lo12:main] ++ ldr PTR_REG (0), [x0, #:got_lo12:main] + + adrp x3, :got:__libc_csu_init +- ldr x3, [x3, #:got_lo12:__libc_csu_init] ++ ldr PTR_REG (3), [x3, #:got_lo12:__libc_csu_init] + + adrp x4, :got:__libc_csu_fini +- ldr x4, [x4, #:got_lo12:__libc_csu_fini] ++ ldr PTR_REG (4), [x4, #:got_lo12:__libc_csu_fini] + #else + /* Set up the other arguments in registers */ +- ldr x0, =main +- ldr x3, =__libc_csu_init +- ldr x4, =__libc_csu_fini ++ ldr PTR_REG (0), =main ++ ldr PTR_REG (3), =__libc_csu_init ++ ldr PTR_REG (4), =__libc_csu_fini + #endif + + /* __libc_start_main (main, argc, argv, init, fini, rtld_fini, +-- +1.9.3 + |