Message ID | 1414396793-9005-15-git-send-email-apinski@cavium.com |
---|---|
State | New |
Headers | show |
On 27 October 2014 07:59, Andrew Pinski <apinski@cavium.com> wrote: > 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 files changed, 11 insertions(+), 9 deletions(-) This looks ok to me. > 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.7.2.5 >
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,