В Wed, 27 Oct 2010 21:38:19 +0200 Bernhard Reutner-Fischer <[email protected]> пишет:
> On Wed, Oct 13, 2010 at 06:16:34PM +0400, Alexander Gordeev wrote: > >В Thu, 7 Oct 2010 18:54:24 +0400 > >Alexander Gordeev <[email protected]> пишет: > > > >> 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 <[email protected]> > >[snip] > > > >Nobody interested? > > It sounds a bit heavy to me, but i'm applying it as a workaround. > What abi are you using? Sorry, I don't know. I learned MIPS assembly right to fix this bug. I use Openwrt compiled with uClibc 0.9.32 with NPTL support (commit ef487a35f428da6240003dca23b9d29908e2285e with several other patches) if that helps. I think this bug should appear on all MIPS platforms. I've also seen it in qemu emulating Malta little-endian. > 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 No problem. :) > PPPS: that move should use the MOVE macro instead Hmm, you mean I should just replace "move" with "MOVE"? -- Alexander
signature.asc
Description: PGP signature
_______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
