|
@@ -349,12 +349,30 @@ do { \
|
|
return (type) (res); \
|
|
return (type) (res); \
|
|
} while (0)
|
|
} while (0)
|
|
|
|
|
|
|
|
+#if defined(__sh2__) || defined(__SH2E__) || defined(__SH2A__)
|
|
|
|
+#define SYSCALL_ARG0 "trapa #0x20"
|
|
|
|
+#define SYSCALL_ARG1 "trapa #0x21"
|
|
|
|
+#define SYSCALL_ARG2 "trapa #0x22"
|
|
|
|
+#define SYSCALL_ARG3 "trapa #0x23"
|
|
|
|
+#define SYSCALL_ARG4 "trapa #0x24"
|
|
|
|
+#define SYSCALL_ARG5 "trapa #0x25"
|
|
|
|
+#define SYSCALL_ARG6 "trapa #0x26"
|
|
|
|
+#else
|
|
|
|
+#define SYSCALL_ARG0 "trapa #0x10"
|
|
|
|
+#define SYSCALL_ARG1 "trapa #0x11"
|
|
|
|
+#define SYSCALL_ARG2 "trapa #0x12"
|
|
|
|
+#define SYSCALL_ARG3 "trapa #0x13"
|
|
|
|
+#define SYSCALL_ARG4 "trapa #0x14"
|
|
|
|
+#define SYSCALL_ARG5 "trapa #0x15"
|
|
|
|
+#define SYSCALL_ARG6 "trapa #0x16"
|
|
|
|
+#endif
|
|
|
|
+
|
|
/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
|
|
/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
|
|
#define _syscall0(type,name) \
|
|
#define _syscall0(type,name) \
|
|
type name(void) \
|
|
type name(void) \
|
|
{ \
|
|
{ \
|
|
register long __sc0 __asm__ ("r3") = __NR_##name; \
|
|
register long __sc0 __asm__ ("r3") = __NR_##name; \
|
|
-__asm__ __volatile__ ("trapa #0x10" \
|
|
|
|
|
|
+__asm__ __volatile__ (SYSCALL_ARG0 \
|
|
: "=z" (__sc0) \
|
|
: "=z" (__sc0) \
|
|
: "0" (__sc0) \
|
|
: "0" (__sc0) \
|
|
: "memory" ); \
|
|
: "memory" ); \
|
|
@@ -366,7 +384,7 @@ type name(type1 arg1) \
|
|
{ \
|
|
{ \
|
|
register long __sc0 __asm__ ("r3") = __NR_##name; \
|
|
register long __sc0 __asm__ ("r3") = __NR_##name; \
|
|
register long __sc4 __asm__ ("r4") = (long) arg1; \
|
|
register long __sc4 __asm__ ("r4") = (long) arg1; \
|
|
-__asm__ __volatile__ ("trapa #0x11" \
|
|
|
|
|
|
+__asm__ __volatile__ (SYSCALL_ARG1 \
|
|
: "=z" (__sc0) \
|
|
: "=z" (__sc0) \
|
|
: "0" (__sc0), "r" (__sc4) \
|
|
: "0" (__sc0), "r" (__sc4) \
|
|
: "memory"); \
|
|
: "memory"); \
|
|
@@ -379,7 +397,7 @@ type name(type1 arg1,type2 arg2) \
|
|
register long __sc0 __asm__ ("r3") = __NR_##name; \
|
|
register long __sc0 __asm__ ("r3") = __NR_##name; \
|
|
register long __sc4 __asm__ ("r4") = (long) arg1; \
|
|
register long __sc4 __asm__ ("r4") = (long) arg1; \
|
|
register long __sc5 __asm__ ("r5") = (long) arg2; \
|
|
register long __sc5 __asm__ ("r5") = (long) arg2; \
|
|
-__asm__ __volatile__ ("trapa #0x12" \
|
|
|
|
|
|
+__asm__ __volatile__ (SYSCALL_ARG2 \
|
|
: "=z" (__sc0) \
|
|
: "=z" (__sc0) \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5) \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5) \
|
|
: "memory"); \
|
|
: "memory"); \
|
|
@@ -393,7 +411,7 @@ register long __sc0 __asm__ ("r3") = __NR_##name; \
|
|
register long __sc4 __asm__ ("r4") = (long) arg1; \
|
|
register long __sc4 __asm__ ("r4") = (long) arg1; \
|
|
register long __sc5 __asm__ ("r5") = (long) arg2; \
|
|
register long __sc5 __asm__ ("r5") = (long) arg2; \
|
|
register long __sc6 __asm__ ("r6") = (long) arg3; \
|
|
register long __sc6 __asm__ ("r6") = (long) arg3; \
|
|
-__asm__ __volatile__ ("trapa #0x13" \
|
|
|
|
|
|
+__asm__ __volatile__ (SYSCALL_ARG3 \
|
|
: "=z" (__sc0) \
|
|
: "=z" (__sc0) \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6) \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6) \
|
|
: "memory"); \
|
|
: "memory"); \
|
|
@@ -408,7 +426,7 @@ register long __sc4 __asm__ ("r4") = (long) arg1; \
|
|
register long __sc5 __asm__ ("r5") = (long) arg2; \
|
|
register long __sc5 __asm__ ("r5") = (long) arg2; \
|
|
register long __sc6 __asm__ ("r6") = (long) arg3; \
|
|
register long __sc6 __asm__ ("r6") = (long) arg3; \
|
|
register long __sc7 __asm__ ("r7") = (long) arg4; \
|
|
register long __sc7 __asm__ ("r7") = (long) arg4; \
|
|
-__asm__ __volatile__ ("trapa #0x14" \
|
|
|
|
|
|
+__asm__ __volatile__ (SYSCALL_ARG4 \
|
|
: "=z" (__sc0) \
|
|
: "=z" (__sc0) \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), \
|
|
"r" (__sc7) \
|
|
"r" (__sc7) \
|
|
@@ -425,7 +443,7 @@ register long __sc5 __asm__ ("r5") = (long) arg2; \
|
|
register long __sc6 __asm__ ("r6") = (long) arg3; \
|
|
register long __sc6 __asm__ ("r6") = (long) arg3; \
|
|
register long __sc7 __asm__ ("r7") = (long) arg4; \
|
|
register long __sc7 __asm__ ("r7") = (long) arg4; \
|
|
register long __sc0 __asm__ ("r0") = (long) arg5; \
|
|
register long __sc0 __asm__ ("r0") = (long) arg5; \
|
|
-__asm__ __volatile__ ("trapa #0x15" \
|
|
|
|
|
|
+__asm__ __volatile__ (SYSCALL_ARG5 \
|
|
: "=z" (__sc0) \
|
|
: "=z" (__sc0) \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), "r" (__sc7), \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), "r" (__sc7), \
|
|
"r" (__sc3) \
|
|
"r" (__sc3) \
|
|
@@ -443,7 +461,7 @@ register long __sc6 __asm__ ("r6") = (long) arg3; \
|
|
register long __sc7 __asm__ ("r7") = (long) arg4; \
|
|
register long __sc7 __asm__ ("r7") = (long) arg4; \
|
|
register long __sc0 __asm__ ("r0") = (long) arg5; \
|
|
register long __sc0 __asm__ ("r0") = (long) arg5; \
|
|
register long __sc1 __asm__ ("r1") = (long) arg6; \
|
|
register long __sc1 __asm__ ("r1") = (long) arg6; \
|
|
-__asm__ __volatile__ ("trapa #0x16" \
|
|
|
|
|
|
+__asm__ __volatile__ (SYSCALL_ARG6 \
|
|
: "=z" (__sc0) \
|
|
: "=z" (__sc0) \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), "r" (__sc7), \
|
|
: "0" (__sc0), "r" (__sc4), "r" (__sc5), "r" (__sc6), "r" (__sc7), \
|
|
"r" (__sc3), "r" (__sc1) \
|
|
"r" (__sc3), "r" (__sc1) \
|