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_ convention). -mike