]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
xtensa: drop fast_syscall_kernel
authorMax Filippov <jcmvbkbc@gmail.com>
Fri, 16 Nov 2018 02:17:41 +0000 (18:17 -0800)
committerMax Filippov <jcmvbkbc@gmail.com>
Mon, 3 Dec 2018 09:39:22 +0000 (01:39 -0800)
There must be no xtensa-specific syscalls from the kernel code: register
spilling uses call+entry sequence and atomics have proper function
implementations. Drop fast_syscall_xtensa.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
arch/xtensa/kernel/entry.S
arch/xtensa/kernel/traps.c

index b0007567e4975bf864c95aa0731b020e82560111..48d36b4d27b8720d497fc975f65370449b0241c8 100644 (file)
@@ -1022,25 +1022,6 @@ ENDPROC(fast_alloca)
  *   excsave_1:        dispatch table
  */
 
-ENTRY(fast_syscall_kernel)
-
-       /* Skip syscall. */
-
-       rsr     a0, epc1
-       addi    a0, a0, 3
-       wsr     a0, epc1
-
-       l32i    a0, a2, PT_DEPC
-       bgeui   a0, VALID_DOUBLE_EXCEPTION_ADDRESS, fast_syscall_unrecoverable
-
-       rsr     a0, depc                        # get syscall-nr
-       _beqz   a0, fast_syscall_spill_registers
-       _beqi   a0, __NR_xtensa, fast_syscall_xtensa
-
-       j       kernel_exception
-
-ENDPROC(fast_syscall_kernel)
-
 ENTRY(fast_syscall_user)
 
        /* Skip syscall. */
index 86507fa7c2d7cdd1382df7f41bb5afd730a541c2..238399e22cdce8f9bed87cccc03d75af5be49ae0 100644 (file)
@@ -51,7 +51,6 @@
 extern void kernel_exception(void);
 extern void user_exception(void);
 
-extern void fast_syscall_kernel(void);
 extern void fast_syscall_user(void);
 extern void fast_alloca(void);
 extern void fast_unaligned(void);
@@ -89,7 +88,6 @@ typedef struct {
 static dispatch_init_table_t __initdata dispatch_init_table[] = {
 
 { EXCCAUSE_ILLEGAL_INSTRUCTION,        0,         do_illegal_instruction},
-{ EXCCAUSE_SYSTEM_CALL,                KRNL,      fast_syscall_kernel },
 { EXCCAUSE_SYSTEM_CALL,                USER,      fast_syscall_user },
 { EXCCAUSE_SYSTEM_CALL,                0,         system_call },
 /* EXCCAUSE_INSTRUCTION_FETCH unhandled */