[14/29,AARCH64] Use PTR_* in start.S
Commit Message
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(-)
Comments
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
>
@@ -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,