This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][BZ #15054] MIPS: Fix syscall wrappers for syscall restart support


On Tuesday 22 January 2013 22:09:03 Maciej W. Rozycki wrote:
>  We have an issue with the INTERNAL_SYSCALL_NCS wrapper in that it does
> not respect the kernel's syscall restart convention.
> 
>  That convention requires the instruction immediately preceding SYSCALL to
> initialize $v0 with the syscall number.  Then if a restart triggers, $v0
> will have been clobbered by the syscall interrupted, and needs to be
> reinititalized.  The kernel will decrement the PC by 4 before switching
> back to the user mode so that $v0 has been reloaded before SYSCALL is
> executed again.  This implies the place $v0 is loaded from must be
> preserved across a syscall, e.g. an immediate, static register, stack
> slot, etc.

naïvely, but why can't the mips kernel paths take care of the reload itself ?  
other arches have scratch space in their pt_regs for doing just this (a bunch 
of arches use the orig_<reg> convention).
-mike

Attachment: signature.asc
Description: This is a digitally signed message part.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]