[PATCH] microblaze: fix __syscall_cancel_arch

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Fri Oct 17 12:22:40 GMT 2025



On 17/10/25 06:27, Luc Michel wrote:
> The __syscall_cancel_arch function has an epilogue that does not match
> the prologue. The stack is not used and the return address still lies in
> r15 when reaching the epilogue. Fix the epilogue by simply returning
> from the function.
> 
> Signed-off-by: Luc Michel <luc.michel@amd.com>

LGTM.  How did you tested? I tried to come up with an simulated microblaze
environment, but there is no official qemu support (only qemu-user).

> ---
> 
> Hi,
> This bug was introduced by 89b53077d2a58f00e7debdfe58afabe953dac60d
> (BZ#12683). 
> 
> https://sourceware.org/bugzilla/show_bug.cgi?id=12683 suggests that the
> author copied coded generated by GCC. This is probably why the epilogue
> was wrong.
> 
> I have yet to create a Bugzilla entry for this. I just requested an
> accound and waiting for it.
> 
> Thanks
> 
> Luc
> 
> ---
>  sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S b/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S
> index 38150e6a94..3e8dc96a93 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S
> +++ b/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S
> @@ -48,13 +48,12 @@ __syscall_cancel_arch_start:
>  
>  	.globl __syscall_cancel_arch_end
>  __syscall_cancel_arch_end:
>  
>  	nop
> -	lwi	r15,r1,0
>  	rtsd	r15,8
> -	addik	r1,r1,28
> +	nop
>  
>  1:
>  	brlid	r15, __syscall_do_cancel
>  	nop
>  



More information about the Libc-alpha mailing list