[PATCH] linux: mips: Fix syscall_cancell build for __mips_isa_rev >= 6

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Fri Sep 6 13:03:17 GMT 2024



On 05/09/24 22:46, Maciej W. Rozycki wrote:
> On Mon, 2 Sep 2024, Adhemerval Zanella Netto wrote:
> 
>>> Use beqzc instead of bnel.
>>>
>>> Checked with a mipsisa64r6el-n64-linux-gnu build and some nptl
>>> cancellation tests on qemu.
>> The syscall_cancell is spelled wrongly, I will fit it.
> 
>  It seems like you didn't after all. :(

Yeah, my mistake here.

> 
>>> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S b/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S
>>> index f172041324..cfc0596b6a 100644
>>> --- a/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S
>>> +++ b/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S
>>> @@ -77,7 +77,11 @@ __syscall_cancel_arch_end:
>>>  
>>>  	.set noreorder
>>>  	.set nomacro
>>> +#if __mips_isa_rev >= 6
>>> +	beqzc	$7, 1f
>>> +#else
>>>  	bnel	a3, zero, 1f
>>> +#endif
>>>  	SUBU	v0, zero, v0
>>>  	.set macro
>>>  	.set reorder
> 
>  Why $7 inconsistently rather than a3 as in the existing code?  All the 
> remaining code uses ABI rather than raw register names.

Because it come mainly from inspecting the code generation from compilers,
and then testing on qemu.

> 
>  NB `bnezl' could be used for consistency/readability, and likewise `negu' 
> rather than `SUBU' (why is it capitalised anyway?).

I don't have a strong preference, I am far from a mips expert, and I could
use some help on improve things here.


More information about the Libc-alpha mailing list