[PATCH] mips: fix errno setting after syscall

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Wed Oct 27 19:38:19 UTC 2010


On Wed, Oct 13, 2010 at 06:16:34PM +0400, Alexander Gordeev wrote:
>В Thu,  7 Oct 2010 18:54:24 +0400
>Alexander Gordeev <lasaine at lvk.cs.msu.su> пишет:
>
>> If there was an error during syscall then after it's completion a3
>> register holds a non-zero value and v0 holds an actual error code which
>> should be saved in errno. This can be achieved by calling
>> __syscall_error with the value from v0 as a parameter. So this value
>> should be stored in a0, but the appropriate assembly instructions are
>> missing. Fixed this now by adding "move a0, v0".
>> 
>> I think it was once fixed by 58c5f8ba4cdf62342d05a546d15404cbbb3c4e07
>> but then something went wrong. Again...
>> 
>> Signed-off-by: Alexander Gordeev <lasaine at lvk.cs.msu.su>
>[snip]
>
>Nobody interested?

It sounds a bit heavy to me, but i'm applying it as a workaround.
What abi are you using?
Perhaps someone with a mips setup can look into this some more since
it adds up to every syscall..
Dan, you seem to have added that move a0,v0 initially as a uClibc
specific workaround.

PS: and it would be nice to get rid of libc/string/mips/sysdep.h
PPS: i'm sorry for the long delay
PPPS: that move should use the MOVE macro instead


More information about the uClibc mailing list