Re: [PATCH 06/27] [AARCH64] Use PTR_REG/PTR_SIZE/PTR_SIZE_LOG in dl-tlsesc.S

2016-06-21 Thread Andreas Schwab
Yury Norov  writes:

> From: Andrew Pinski 
>
> This converts dl-tlsdesc.S code over to use the new macros which allows for
> sharing between ILP32 and LP64 code.
>
> * sysdeps/aarch64/dl-tlsdesc.S (_dl_tlsdesc_return): Use PTR_REG.
> (_dl_tlsdesc_undefweak): Use PTR_REG, PTR_SIZE.
> (_dl_tlsdesc_dynamic): Likewise.
> (_dl_tlsdesc_resolve_rela): Likewise.
> (_dl_tlsdesc_resolve_hold): Likewise.

I think you also need to fix _dl_tlsdesc_return_lazy.

>
> Signed-off-by: Yury Norov 
> ---
>  sysdeps/aarch64/dl-tlsdesc.S | 36 ++--
>  1 file changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S
> index 05be370..fe8a17d 100644
> --- a/sysdeps/aarch64/dl-tlsdesc.S
> +++ b/sysdeps/aarch64/dl-tlsdesc.S
> @@ -74,7 +74,7 @@
>   cfi_startproc
>   .align 2
>  _dl_tlsdesc_return:
> - ldr x0, [x0, #8]
> + ldr PTR_REG (0), [x0, #PTR_SIZE]
>   RET
>   cfi_endproc
>   .size   _dl_tlsdesc_return, .-_dl_tlsdesc_return
> @@ -126,9 +126,9 @@ _dl_tlsdesc_undefweak:
>  td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load
>  from [x0,#8] here happens after the initialization of td->arg.  */
>   ldarxzr, [x0]

Does that need to be PTR_REG(zr)?

> - ldr x0, [x0, #8]
> + ldr PTR_REG (0), [x0, #PTR_SIZE]
>   mrs x1, tpidr_el0
> - sub x0, x0, x1
> + sub PTR_REG (0), PTR_REG (0), PTR_REG (1)
>   ldr x1, [sp], #16
>   cfi_adjust_cfa_offset (-16)
>   RET
> @@ -189,20 +189,20 @@ _dl_tlsdesc_dynamic:
>  td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load
>  from [x0,#8] here happens after the initialization of td->arg.  */
>   ldarxzr, [x0]

Likewise.

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


Re: [PATCH 06/27] [AARCH64] Use PTR_REG/PTR_SIZE/PTR_SIZE_LOG in dl-tlsesc.S

2016-06-21 Thread Andreas Schwab
Yury Norov  writes:

> From: Andrew Pinski 
>
> This converts dl-tlsdesc.S code over to use the new macros which allows for
> sharing between ILP32 and LP64 code.
>
> * sysdeps/aarch64/dl-tlsdesc.S (_dl_tlsdesc_return): Use PTR_REG.
> (_dl_tlsdesc_undefweak): Use PTR_REG, PTR_SIZE.
> (_dl_tlsdesc_dynamic): Likewise.
> (_dl_tlsdesc_resolve_rela): Likewise.
> (_dl_tlsdesc_resolve_hold): Likewise.

I think you also need to fix _dl_tlsdesc_return_lazy.

>
> Signed-off-by: Yury Norov 
> ---
>  sysdeps/aarch64/dl-tlsdesc.S | 36 ++--
>  1 file changed, 18 insertions(+), 18 deletions(-)
>
> diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S
> index 05be370..fe8a17d 100644
> --- a/sysdeps/aarch64/dl-tlsdesc.S
> +++ b/sysdeps/aarch64/dl-tlsdesc.S
> @@ -74,7 +74,7 @@
>   cfi_startproc
>   .align 2
>  _dl_tlsdesc_return:
> - ldr x0, [x0, #8]
> + ldr PTR_REG (0), [x0, #PTR_SIZE]
>   RET
>   cfi_endproc
>   .size   _dl_tlsdesc_return, .-_dl_tlsdesc_return
> @@ -126,9 +126,9 @@ _dl_tlsdesc_undefweak:
>  td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load
>  from [x0,#8] here happens after the initialization of td->arg.  */
>   ldarxzr, [x0]

Does that need to be PTR_REG(zr)?

> - ldr x0, [x0, #8]
> + ldr PTR_REG (0), [x0, #PTR_SIZE]
>   mrs x1, tpidr_el0
> - sub x0, x0, x1
> + sub PTR_REG (0), PTR_REG (0), PTR_REG (1)
>   ldr x1, [sp], #16
>   cfi_adjust_cfa_offset (-16)
>   RET
> @@ -189,20 +189,20 @@ _dl_tlsdesc_dynamic:
>  td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load
>  from [x0,#8] here happens after the initialization of td->arg.  */
>   ldarxzr, [x0]

Likewise.

Andreas.

-- 
Andreas Schwab, SUSE Labs, sch...@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."


[PATCH 06/27] [AARCH64] Use PTR_REG/PTR_SIZE/PTR_SIZE_LOG in dl-tlsesc.S

2016-06-20 Thread Yury Norov
From: Andrew Pinski 

This converts dl-tlsdesc.S code over to use the new macros which allows for
sharing between ILP32 and LP64 code.

* sysdeps/aarch64/dl-tlsdesc.S (_dl_tlsdesc_return): Use PTR_REG.
(_dl_tlsdesc_undefweak): Use PTR_REG, PTR_SIZE.
(_dl_tlsdesc_dynamic): Likewise.
(_dl_tlsdesc_resolve_rela): Likewise.
(_dl_tlsdesc_resolve_hold): Likewise.

Signed-off-by: Yury Norov 
---
 sysdeps/aarch64/dl-tlsdesc.S | 36 ++--
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S
index 05be370..fe8a17d 100644
--- a/sysdeps/aarch64/dl-tlsdesc.S
+++ b/sysdeps/aarch64/dl-tlsdesc.S
@@ -74,7 +74,7 @@
cfi_startproc
.align 2
 _dl_tlsdesc_return:
-   ldr x0, [x0, #8]
+   ldr PTR_REG (0), [x0, #PTR_SIZE]
RET
cfi_endproc
.size   _dl_tlsdesc_return, .-_dl_tlsdesc_return
@@ -126,9 +126,9 @@ _dl_tlsdesc_undefweak:
   td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load
   from [x0,#8] here happens after the initialization of td->arg.  */
ldarxzr, [x0]
-   ldr x0, [x0, #8]
+   ldr PTR_REG (0), [x0, #PTR_SIZE]
mrs x1, tpidr_el0
-   sub x0, x0, x1
+   sub PTR_REG (0), PTR_REG (0), PTR_REG (1)
ldr x1, [sp], #16
cfi_adjust_cfa_offset (-16)
RET
@@ -189,20 +189,20 @@ _dl_tlsdesc_dynamic:
   td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load
   from [x0,#8] here happens after the initialization of td->arg.  */
ldarxzr, [x0]
-   ldr x1, [x0,#8]
-   ldr x0, [x4]
-   ldr x3, [x1,#16]
-   ldr x2, [x0]
-   cmp x3, x2
+   ldr PTR_REG (1), [x0,#PTR_SIZE]
+   ldr PTR_REG (0), [x4]
+   ldr PTR_REG (3), [x1,#(PTR_SIZE * 2)]
+   ldr PTR_REG (2), [x0]
+   cmp PTR_REG (3), PTR_REG (2)
b.hi2f
-   ldr x2, [x1]
-   add x0, x0, x2, lsl #4
-   ldr x0, [x0]
+   ldr PTR_REG (2), [x1]
+   add PTR_REG (0), PTR_REG (0), PTR_REG (2), lsl #(PTR_LOG_SIZE + 1)
+   ldr PTR_REG (0), [x0]
cmn x0, #0x1
b.eq2f
-   ldr x1, [x1,#8]
-   add x0, x0, x1
-   sub x0, x0, x4
+   ldr PTR_REG (1), [x1,#(PTR_SIZE * 2)]
+   add PTR_REG (0), PTR_REG (0), PTR_REG (1)
+   sub PTR_REG (0), PTR_REG (0), PTR_REG (4)
 1:
ldp  x1,  x2, [sp, #32+16*0]
ldp  x3,  x4, [sp, #32+16*1]
@@ -233,7 +233,7 @@ _dl_tlsdesc_dynamic:
bl  __tls_get_addr
 
mrs x1, tpidr_el0
-   sub x0, x0, x1
+   sub PTR_REG (0), PTR_REG (0), PTR_REG (1)
 
RESTORE_Q_REGISTERS
 
@@ -279,13 +279,13 @@ _dl_tlsdesc_resolve_rela:
 
SAVE_Q_REGISTERS
 
-   ldr x1, [x3, #8]
+   ldr PTR_REG (1), [x3, #PTR_SIZE]
bl  _dl_tlsdesc_resolve_rela_fixup
 
RESTORE_Q_REGISTERS
 
ldr x0, [sp, #32+16*8]
-   ldr x1, [x0]
+   ldr PTR_REG (1), [x0]
blr x1
 
ldp  x1,  x4, [sp, #32+16*0]
@@ -346,7 +346,7 @@ _dl_tlsdesc_resolve_hold:
RESTORE_Q_REGISTERS
 
ldr x0, [sp, #32+16*9]
-   ldr x1, [x0]
+   ldr PTR_REG (1), [x0]
blr x1
 
ldp  x1,  x2, [sp, #32+16*0]
-- 
2.7.4



[PATCH 06/27] [AARCH64] Use PTR_REG/PTR_SIZE/PTR_SIZE_LOG in dl-tlsesc.S

2016-06-20 Thread Yury Norov
From: Andrew Pinski 

This converts dl-tlsdesc.S code over to use the new macros which allows for
sharing between ILP32 and LP64 code.

* sysdeps/aarch64/dl-tlsdesc.S (_dl_tlsdesc_return): Use PTR_REG.
(_dl_tlsdesc_undefweak): Use PTR_REG, PTR_SIZE.
(_dl_tlsdesc_dynamic): Likewise.
(_dl_tlsdesc_resolve_rela): Likewise.
(_dl_tlsdesc_resolve_hold): Likewise.

Signed-off-by: Yury Norov 
---
 sysdeps/aarch64/dl-tlsdesc.S | 36 ++--
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/sysdeps/aarch64/dl-tlsdesc.S b/sysdeps/aarch64/dl-tlsdesc.S
index 05be370..fe8a17d 100644
--- a/sysdeps/aarch64/dl-tlsdesc.S
+++ b/sysdeps/aarch64/dl-tlsdesc.S
@@ -74,7 +74,7 @@
cfi_startproc
.align 2
 _dl_tlsdesc_return:
-   ldr x0, [x0, #8]
+   ldr PTR_REG (0), [x0, #PTR_SIZE]
RET
cfi_endproc
.size   _dl_tlsdesc_return, .-_dl_tlsdesc_return
@@ -126,9 +126,9 @@ _dl_tlsdesc_undefweak:
   td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load
   from [x0,#8] here happens after the initialization of td->arg.  */
ldarxzr, [x0]
-   ldr x0, [x0, #8]
+   ldr PTR_REG (0), [x0, #PTR_SIZE]
mrs x1, tpidr_el0
-   sub x0, x0, x1
+   sub PTR_REG (0), PTR_REG (0), PTR_REG (1)
ldr x1, [sp], #16
cfi_adjust_cfa_offset (-16)
RET
@@ -189,20 +189,20 @@ _dl_tlsdesc_dynamic:
   td->entry in _dl_tlsdesc_resolve_rela_fixup ensuring that the load
   from [x0,#8] here happens after the initialization of td->arg.  */
ldarxzr, [x0]
-   ldr x1, [x0,#8]
-   ldr x0, [x4]
-   ldr x3, [x1,#16]
-   ldr x2, [x0]
-   cmp x3, x2
+   ldr PTR_REG (1), [x0,#PTR_SIZE]
+   ldr PTR_REG (0), [x4]
+   ldr PTR_REG (3), [x1,#(PTR_SIZE * 2)]
+   ldr PTR_REG (2), [x0]
+   cmp PTR_REG (3), PTR_REG (2)
b.hi2f
-   ldr x2, [x1]
-   add x0, x0, x2, lsl #4
-   ldr x0, [x0]
+   ldr PTR_REG (2), [x1]
+   add PTR_REG (0), PTR_REG (0), PTR_REG (2), lsl #(PTR_LOG_SIZE + 1)
+   ldr PTR_REG (0), [x0]
cmn x0, #0x1
b.eq2f
-   ldr x1, [x1,#8]
-   add x0, x0, x1
-   sub x0, x0, x4
+   ldr PTR_REG (1), [x1,#(PTR_SIZE * 2)]
+   add PTR_REG (0), PTR_REG (0), PTR_REG (1)
+   sub PTR_REG (0), PTR_REG (0), PTR_REG (4)
 1:
ldp  x1,  x2, [sp, #32+16*0]
ldp  x3,  x4, [sp, #32+16*1]
@@ -233,7 +233,7 @@ _dl_tlsdesc_dynamic:
bl  __tls_get_addr
 
mrs x1, tpidr_el0
-   sub x0, x0, x1
+   sub PTR_REG (0), PTR_REG (0), PTR_REG (1)
 
RESTORE_Q_REGISTERS
 
@@ -279,13 +279,13 @@ _dl_tlsdesc_resolve_rela:
 
SAVE_Q_REGISTERS
 
-   ldr x1, [x3, #8]
+   ldr PTR_REG (1), [x3, #PTR_SIZE]
bl  _dl_tlsdesc_resolve_rela_fixup
 
RESTORE_Q_REGISTERS
 
ldr x0, [sp, #32+16*8]
-   ldr x1, [x0]
+   ldr PTR_REG (1), [x0]
blr x1
 
ldp  x1,  x4, [sp, #32+16*0]
@@ -346,7 +346,7 @@ _dl_tlsdesc_resolve_hold:
RESTORE_Q_REGISTERS
 
ldr x0, [sp, #32+16*9]
-   ldr x1, [x0]
+   ldr PTR_REG (1), [x0]
blr x1
 
ldp  x1,  x2, [sp, #32+16*0]
-- 
2.7.4