[PATCH] Optimize epilogue in thumb __aeabi_{memmove,memset} implementations
Richard Earnshaw (lists)
Richard.Earnshaw@arm.com
Mon Sep 30 15:31:00 GMT 2019
On 30/09/2019 15:55, Christos Gentsos wrote:
> The same pop instruction that is used to restore registers can be used
> to return from the function (as it is already done in other function
> implementations).
> ---
> newlib/libc/machine/arm/aeabi_memmove-thumb.S | 4 +---
> newlib/libc/machine/arm/aeabi_memset-thumb.S | 4 +---
> 2 files changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/newlib/libc/machine/arm/aeabi_memmove-thumb.S b/newlib/libc/machine/arm/aeabi_memmove-thumb.S
> index 61a72581..a0aad852 100644
> --- a/newlib/libc/machine/arm/aeabi_memmove-thumb.S
> +++ b/newlib/libc/machine/arm/aeabi_memmove-thumb.S
> @@ -49,9 +49,7 @@ __aeabi_memmove:
> subs r3, r3, #1
> bcs 1b
> 2:
> - pop {r4}
> - pop {r1}
> - bx r1
> + pop {r4, pc}
> 3:
> movs r3, #0
> cmp r2, #0
> diff --git a/newlib/libc/machine/arm/aeabi_memset-thumb.S b/newlib/libc/machine/arm/aeabi_memset-thumb.S
> index aa8f2719..5bb80b20 100644
> --- a/newlib/libc/machine/arm/aeabi_memset-thumb.S
> +++ b/newlib/libc/machine/arm/aeabi_memset-thumb.S
> @@ -110,9 +110,7 @@ __aeabi_memset:
> cmp r4, r3
> bne 8b
> 9:
> - pop {r4, r5, r6}
> - pop {r1}
> - bx r1
> + pop {r4, r5, r6, pc}
> 10:
> movs r3, r0
> movs r4, r1
>
No. That isn't interworking clean on armv4t, which we still need to
support.
Sorry.
R.
More information about the Newlib
mailing list