From b589356e0552e7b09fb214ce080332ee80b2a279 Mon Sep 17 00:00:00 2001 From: Yoshinori Sato Date: Sat, 14 Feb 2015 21:53:25 +0900 Subject: [PATCH] cleanup --- libc/sysdeps/linux/h8300/bits/syscalls.h | 124 ++++++++++++++++--------------- 1 file changed, 65 insertions(+), 59 deletions(-) diff --git a/libc/sysdeps/linux/h8300/bits/syscalls.h b/libc/sysdeps/linux/h8300/bits/syscalls.h index dce003636..a3ff74b4c 100644 --- a/libc/sysdeps/linux/h8300/bits/syscalls.h +++ b/libc/sysdeps/linux/h8300/bits/syscalls.h @@ -8,72 +8,78 @@ #include -#define ASMFMT_0() -#define ASMFMT_1(arg1) \ - , "g" ((unsigned long)arg1) -#define ASMFMT_2(arg1, arg2) \ - , "g" ((unsigned long)arg1), "g" ((unsigned long)arg2) -#define ASMFMT_3(arg1, arg2, arg3) \ - , "g" ((unsigned long)arg1), "g" ((unsigned long)arg2), "g" ((unsigned long)arg3) -#define ASMFMT_4(arg1, arg2, arg3, arg4) \ - , "g" ((unsigned long)arg1), "g" ((unsigned long)arg2), "g" ((unsigned long)arg3), "g" ((unsigned long)arg4) -#define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \ - , "g" (arg1), "g" (arg2), "g" (arg3), "g" (arg4)/*, "g" (arg5)*/ -#define ASMFMT_6(arg1, arg2, arg3, arg4, arg5, arg6) \ - , "g" (arg1), "g" (arg2), "g" (arg3), "g" (arg4)/*, "g" (arg5), "g" (arg6)*/ +#define ASMFMT_0 +#define ASMFMT_1 , "g"(er1) +#define ASMFMT_2 , "g"(er1), "g"(er2) +#define ASMFMT_3 , "g"(er1), "g"(er2), "g"(er3) +#define ASMFMT_4 , "g"(er1), "g"(er2), "g"(er3), "g"(er4) +#define ASMFMT_5 , "g"(er1), "g"(er2), "g"(er3), "g"(er4), "g"(er5) +#define ASMFMT_6 , "g"(er1), "g"(er2), "g"(er3), "g"(er4), "m"(er5), "m"(er6) -#define SUBSTITUTE_ARGS_0 \ - "mov.l %1, er0\n\t" -#define SUBSTITUTE_ARGS_1 \ - "mov.l %2, er1\n\t" \ - "mov.l %1, er0\n\t" -#define SUBSTITUTE_ARGS_2 \ - "mov.l %3, er2\n\t" \ - "mov.l %2, er1\n\t" \ - "mov.l %1, er0\n\t" -#define SUBSTITUTE_ARGS_3 \ - "mov.l %4, er3\n\t" \ - "mov.l %3, er2\n\t" \ - "mov.l %2, er1\n\t" \ - "mov.l %1, er0\n\t" -#define SUBSTITUTE_ARGS_4 \ - "mov.l %5, er4\n\t" \ - "mov.l %4, er3\n\t" \ - "mov.l %3, er2\n\t" \ - "mov.l %2, er1\n\t" \ - "mov.l %1, er0\n\t" -#define SUBSTITUTE_ARGS_5 \ - /*"mov.l %6, er5\n\t"*/ \ - "mov.l %5, er4\n\t" \ - "mov.l %4, er3\n\t" \ - "mov.l %3, er2\n\t" \ - "mov.l %2, er1\n\t" \ - "mov.l %1, er0\n\t" -#define SUBSTITUTE_ARGS_6 \ - /*"mov.l %7, er6\n\t"*/ \ - /*"mov.l %6, er5\n\t"*/ \ - "mov.l %5, er4\n\t" \ - "mov.l %4, er3\n\t" \ - "mov.l %3, er2\n\t" \ - "mov.l %2, er1\n\t" \ - "mov.l %1, er0\n\t" +#define SUBSTITUTE_ARGS_0() do {} while(0); +#define SUBSTITUTE_ARGS_1(arg1) \ + register long int er1 __asm__("er1") = (long int)arg1; +#define SUBSTITUTE_ARGS_2(arg1, arg2) \ + register long int er1 __asm__("er1") = (long int)arg1; \ + register long int er2 __asm__("er2") = (long int)arg2; +#define SUBSTITUTE_ARGS_3(arg1, arg2, arg3) \ + register long int er1 __asm__("er1") = (long int)arg1; \ + register long int er2 __asm__("er2") = (long int)arg2; \ + register long int er3 __asm__("er3") = (long int)arg3; +#define SUBSTITUTE_ARGS_4(arg1, arg2, arg3, arg4) \ + register long int er1 __asm__("er1") = (long int)arg1; \ + register long int er2 __asm__("er2") = (long int)arg2; \ + register long int er3 __asm__("er3") = (long int)arg3; \ + register long int er4 __asm__("er4") = (long int)arg4; +#define SUBSTITUTE_ARGS_5(arg1, arg2, arg3, arg4, arg5) \ + register long int er1 __asm__("er1") = (long int)arg1; \ + register long int er2 __asm__("er2") = (long int)arg2; \ + register long int er3 __asm__("er3") = (long int)arg3; \ + register long int er4 __asm__("er4") = (long int)arg4; \ + register long int er5 __asm__("er5") = (long int)arg5; +#define SUBSTITUTE_ARGS_6(arg1, arg2, arg3, arg4, arg5, arg6) \ + register long int er1 __asm__("er1") = (long int)arg1; \ + register long int er2 __asm__("er2") = (long int)arg2; \ + register long int er3 __asm__("er3") = (long int)arg3; \ + register long int er4 __asm__("er4") = (long int)arg4; \ + long int er5 = (long int)arg5; \ + long int er6 = (long int)arg6; + +#define LOAD_ARGS_0 +#define LOAD_ARGS_1 +#define LOAD_ARGS_2 +#define LOAD_ARGS_3 +#define LOAD_ARGS_4 +#define LOAD_ARGS_5 +#define LOAD_ARGS_6 "mov.l er5,@-sp\n\tmov.l %6,er5\n\t" \ + "mov.l er6,@-sp\n\tmov.l %7,er6\n\t" + +#define RESTORE_ARGS_0 +#define RESTORE_ARGS_1 +#define RESTORE_ARGS_2 +#define RESTORE_ARGS_3 +#define RESTORE_ARGS_4 +#define RESTORE_ARGS_5 +#define RESTORE_ARGS_6 "mov.l @sp+,er6\n\tmov.l @sp+,er5" /* The _NCS variant allows non-constant syscall numbers. */ #define INTERNAL_SYSCALL_NCS(name, err, nr, args...) \ (__extension__ \ - ({ \ - register long int er0 __asm__ ("er0"); \ - __asm__ __volatile__ ( \ - SUBSTITUTE_ARGS_##nr \ - "trapa #0" \ - : "=r" (er0) \ - : "ir" (name) ASMFMT_##nr(args) \ - : "memory" \ - ); \ - (int) er0; \ + ({ \ + register long int er0 __asm__ ("er0"); \ + SUBSTITUTE_ARGS_##nr(args) \ + __asm__ __volatile__ ( \ + LOAD_ARGS_##nr \ + "mov.l %1,er0\n\t" \ + "trapa #0\n\t" \ + RESTORE_ARGS_##nr \ + : "=r" (er0) \ + : "ir" (name) ASMFMT_##nr \ + : "memory" \ + ); \ + (int) er0; \ }) \ ) #endif /* __ASSEMBLER__ */ #endif /* _BITS_SYSCALLS_H */ - -- 2.11.0