This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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 10/15] riscv: Avoid clobbering register parameters in syscall


Adhemerval Zanella <adhemerval.zanella@linaro.org> writes:
>  	long int _sys_result;						\
> +	long int _arg0 = (long int) (arg0);				\
>  									\
>  	{								\
>  	register long int __a7 asm ("a7") = number;			\
> -	register long int __a0 asm ("a0") = (long int) (arg0);		\
> +	register long int __a0 asm ("a0") = _arg0;			\

Ok

>  	long int _sys_result;						\
> +	long int _arg0 = (long int) (arg0);				\
> +	long int _arg1 = (long int) (arg1);				\
>  									\
>  	{								\
>  	register long int __a7 asm ("a7") = number;			\
> -	register long int __a0 asm ("a0") = (long int) (arg0);		\
> -	register long int __a1 asm ("a1") = (long int) (arg1);		\
> +	register long int __a0 asm ("a0") = _arg0;			\
> +	register long int __a1 asm ("a1") = _arg1;			\

Ok.

>  	long int _sys_result;						\
> +	long int _arg0 = (long int) (arg0);				\
> +	long int _arg1 = (long int) (arg1);				\
> +	long int _arg2 = (long int) (arg2);				\
>  									\
>  	{								\
>  	register long int __a7 asm ("a7") = number;			\
> -	register long int __a0 asm ("a0") = (long int) (arg0);		\
> -	register long int __a1 asm ("a1") = (long int) (arg1);		\
> -	register long int __a2 asm ("a2") = (long int) (arg2);		\
> +	register long int __a0 asm ("a0") = _arg0;			\
> +	register long int __a1 asm ("a1") = _arg1;			\
> +	register long int __a2 asm ("a2") = _arg2;			\

Ok.

>  	long int _sys_result;						\
> +	long int _arg0 = (long int) (arg0);				\
> +	long int _arg1 = (long int) (arg1);				\
> +	long int _arg2 = (long int) (arg2);				\
> +	long int _arg3 = (long int) (arg3);				\
>  									\
>  	{								\
>  	register long int __a7 asm ("a7") = number;			\
> -	register long int __a0 asm ("a0") = (long int) (arg0);		\
> -	register long int __a1 asm ("a1") = (long int) (arg1);		\
> -	register long int __a2 asm ("a2") = (long int) (arg2);		\
> -	register long int __a3 asm ("a3") = (long int) (arg3);		\
> +	register long int __a0 asm ("a0") = _arg0;			\
> +	register long int __a1 asm ("a1") = _arg1;			\
> +	register long int __a2 asm ("a2") = _arg2;			\
> +	register long int __a3 asm ("a3") = _arg3;			\

Ok.

>  	long int _sys_result;						\
> +	long int _arg0 = (long int) (arg0);				\
> +	long int _arg1 = (long int) (arg1);				\
> +	long int _arg2 = (long int) (arg2);				\
> +	long int _arg3 = (long int) (arg3);				\
> +	long int _arg4 = (long int) (arg4);				\
>  									\
>  	{								\
>  	register long int __a7 asm ("a7") = number;			\
> -	register long int __a0 asm ("a0") = (long int) (arg0);		\
> -	register long int __a1 asm ("a1") = (long int) (arg1);		\
> -	register long int __a2 asm ("a2") = (long int) (arg2);		\
> -	register long int __a3 asm ("a3") = (long int) (arg3);		\
> -	register long int __a4 asm ("a4") = (long int) (arg4);		\
> +	register long int __a0 asm ("a0") = _arg0;			\
> +	register long int __a1 asm ("a1") = _arg1;			\
> +	register long int __a2 asm ("a2") = _arg2;			\
> +	register long int __a3 asm ("a3") = _arg3;			\
> +	register long int __a4 asm ("a4") = _arg4;			\

Ok

>  ({ 									\
>  	long int _sys_result;						\
> +	long int _arg0 = (long int) (arg0);				\
> +	long int _arg1 = (long int) (arg1);				\
> +	long int _arg2 = (long int) (arg2);				\
> +	long int _arg3 = (long int) (arg3);				\
> +	long int _arg4 = (long int) (arg4);				\
> +	long int _arg5 = (long int) (arg5);				\
>  									\
>  	{								\
>  	register long int __a7 asm ("a7") = number;			\
> -	register long int __a0 asm ("a0") = (long int) (arg0);		\
> -	register long int __a1 asm ("a1") = (long int) (arg1);		\
> -	register long int __a2 asm ("a2") = (long int) (arg2);		\
> -	register long int __a3 asm ("a3") = (long int) (arg3);		\
> -	register long int __a4 asm ("a4") = (long int) (arg4);		\
> -	register long int __a5 asm ("a5") = (long int) (arg5);		\
> +	register long int __a0 asm ("a0") = _arg0;			\
> +	register long int __a1 asm ("a1") = _arg1;			\
> +	register long int __a2 asm ("a2") = _arg2;			\
> +	register long int __a3 asm ("a3") = _arg3;			\
> +	register long int __a4 asm ("a4") = _arg4;			\
> +	register long int __a5 asm ("a5") = _arg5;			\

Ok.

>  	long int _sys_result;						\
> +	long int _arg0 = (long int) (arg0);				\
> +	long int _arg1 = (long int) (arg1);				\
> +	long int _arg2 = (long int) (arg2);				\
> +	long int _arg3 = (long int) (arg3);				\
> +	long int _arg4 = (long int) (arg4);				\
> +	long int _arg5 = (long int) (arg5);				\
> +	long int _arg6 = (long int) (arg6);				\
>  									\
>  	{								\
>  	register long int __a7 asm ("a7") = number;			\
> -	register long int __a0 asm ("a0") = (long int) (arg0);		\
> -	register long int __a1 asm ("a1") = (long int) (arg1);		\
> -	register long int __a2 asm ("a2") = (long int) (arg2);		\
> -	register long int __a3 asm ("a3") = (long int) (arg3);		\
> -	register long int __a4 asm ("a4") = (long int) (arg4);		\
> -	register long int __a5 asm ("a5") = (long int) (arg5);		\
> -	register long int __a6 asm ("a6") = (long int) (arg6);		\
> +	register long int __a0 asm ("a0") = _arg0;			\
> +	register long int __a1 asm ("a1") = _arg1;			\
> +	register long int __a2 asm ("a2") = _arg2;			\
> +	register long int __a3 asm ("a3") = _arg3;			\
> +	register long int __a4 asm ("a4") = _arg4;			\
> +	register long int __a5 asm ("a5") = _arg5;			\
> +	register long int __a6 asm ("a6") = _arg6;			\

Ok.

Reviewed-by: DJ Delorie <dj@redhat.com>


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