This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 14/29] [AARCH64] Use PTR_* in start.S


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]