linux/aarch64/ioctls_inc1.h \
linux/aarch64/set_error.c \
linux/aarch64/set_scno.c \
+ linux/aarch64/shuffle_scno.c \
linux/aarch64/signalent1.h \
linux/aarch64/syscallent.h \
linux/aarch64/syscallent1.h \
linux/arm/ioctls_inc0.h \
linux/arm/set_error.c \
linux/arm/set_scno.c \
+ linux/arm/shuffle_scno.c \
linux/arm/syscallent.h \
linux/arm/userent.h \
linux/avr32/arch_regs.c \
linux/sh64/set_scno.c \
linux/sh64/syscallent.h \
linux/sh64/userent.h \
+ linux/shuffle_scno.c \
linux/signalent.h \
linux/smc_diag.h \
linux/sock_diag.h \
--- /dev/null
+#define shuffle_scno arm_shuffle_scno
+#include "../arm/shuffle_scno.c"
+#undef shuffle_scno
+
+static kernel_ulong_t
+shuffle_scno(kernel_ulong_t scno)
+{
+ if (current_personality == 1)
+ return arm_shuffle_scno(scno);
+
+ return scno;
+}
--- /dev/null
+static kernel_ulong_t
+shuffle_scno(kernel_ulong_t scno)
+{
+ if (scno < ARM_FIRST_SHUFFLED_SYSCALL)
+ return scno;
+
+ /* __ARM_NR_cmpxchg? Swap with LAST_ORDINARY+1 */
+ if (scno == ARM_FIRST_SHUFFLED_SYSCALL)
+ return 0x000ffff0;
+ if (scno == 0x000ffff0)
+ return ARM_FIRST_SHUFFLED_SYSCALL;
+
+#define ARM_SECOND_SHUFFLED_SYSCALL (ARM_FIRST_SHUFFLED_SYSCALL + 1)
+ /*
+ * Is it ARM specific syscall?
+ * Swap [0x000f0000, 0x000f0000 + LAST_SPECIAL] range
+ * with [SECOND_SHUFFLED, SECOND_SHUFFLED + LAST_SPECIAL] range.
+ */
+ if (scno >= 0x000f0000 &&
+ scno <= 0x000f0000 + ARM_LAST_SPECIAL_SYSCALL) {
+ return scno - 0x000f0000 + ARM_SECOND_SHUFFLED_SYSCALL;
+ }
+ if (scno <= ARM_SECOND_SHUFFLED_SYSCALL + ARM_LAST_SPECIAL_SYSCALL) {
+ return scno + 0x000f0000 - ARM_SECOND_SHUFFLED_SYSCALL;
+ }
+
+ return scno;
+}
--- /dev/null
+static kernel_ulong_t
+shuffle_scno(kernel_ulong_t scno)
+{
+ return scno;
+}
* Shuffle syscall numbers so that we don't have huge gaps in syscall table.
* The shuffling should be an involution: shuffle_scno(shuffle_scno(n)) == n.
*/
-static kernel_ulong_t
-shuffle_scno(kernel_ulong_t scno)
-{
-#ifdef ARM_FIRST_SHUFFLED_SYSCALL /* So far only 32-bit ARM needs this */
- if (scno < ARM_FIRST_SHUFFLED_SYSCALL)
- return scno;
-
- /* __ARM_NR_cmpxchg? Swap with LAST_ORDINARY+1 */
- if (scno == ARM_FIRST_SHUFFLED_SYSCALL)
- return 0x000ffff0;
- if (scno == 0x000ffff0)
- return ARM_FIRST_SHUFFLED_SYSCALL;
-
-# define ARM_SECOND_SHUFFLED_SYSCALL (ARM_FIRST_SHUFFLED_SYSCALL + 1)
- /*
- * Is it ARM specific syscall?
- * Swap [0x000f0000, 0x000f0000 + LAST_SPECIAL] range
- * with [SECOND_SHUFFLED, SECOND_SHUFFLED + LAST_SPECIAL] range.
- */
- if (scno >= 0x000f0000 &&
- scno <= 0x000f0000 + ARM_LAST_SPECIAL_SYSCALL) {
- return scno - 0x000f0000 + ARM_SECOND_SHUFFLED_SYSCALL;
- }
- if (scno <= ARM_SECOND_SHUFFLED_SYSCALL + ARM_LAST_SPECIAL_SYSCALL) {
- return scno + 0x000f0000 - ARM_SECOND_SHUFFLED_SYSCALL;
- }
-#endif /* ARM_FIRST_SHUFFLED_SYSCALL */
-
- return scno;
-}
+static kernel_ulong_t shuffle_scno(kernel_ulong_t scno);
const char *
err_name(unsigned long err)
#ifdef HAVE_GETREGS_OLD
# include "getregs_old.c"
#endif
+#include "shuffle_scno.c"
const char *
syscall_name(kernel_ulong_t scno)