[PATCH] MIPS64 N64 fork is broken

Rich Felker dalias at aerifal.cx
Tue Feb 4 05:38:30 UTC 2014


On Sat, Dec 21, 2013 at 01:18:29PM +0100, Waldemar Brodkorb wrote:
> +#undef internal_syscall5
> +#define internal_syscall5(ncs_init, cs_init, input, err, arg1, arg2, arg3, arg4, arg5) \
> +({ 									\
> +	long _sys_result;						\
> +									\
> +	{								\
> +	register long __v0 __asm__("$2") ncs_init;			\
> +	register long __a0 __asm__("$4") = (long) arg1; 	\
> +	register long __a1 __asm__("$5") = (long) arg2; 	\
> +	register long __a2 __asm__("$6") = (long) arg3; 	\
> +	register long __a3 __asm__("$7") = (long) arg4; 	\
> +	register long __a4 __asm__("$8") = (long) arg5; 	\
> +	__asm__ __volatile__ ( 						\
> +	".set\tnoreorder\n\t" 						\
> +	cs_init								\
> +	"syscall\n\t" 							\
> +	".set\treorder" 						\

I seem to recall MIPS assembler having push/pop directives for
settings like this. Wouldn't it be better to use them to restore the
old setting of reorder rather than forcing it on after asm, so as not
to assume the compiler had, and wants, reorder on?

Rich


More information about the uClibc mailing list