This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 14/29] [AARCH64] Use PTR_* in start.S
- From: Will Newton <will dot newton at linaro dot org>
- To: Andrew Pinski <apinski at cavium dot com>
- Cc: libc-alpha <libc-alpha at sourceware dot org>
- Date: Tue, 18 Nov 2014 12:35:39 +0000
- Subject: Re: [PATCH 14/29] [AARCH64] Use PTR_* in start.S
- Authentication-results: sourceware.org; auth=none
- References: <1414396793-9005-1-git-send-email-apinski at cavium dot com> <1414396793-9005-15-git-send-email-apinski at cavium dot com>
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
>
--
Will Newton
Toolchain Working Group, Linaro