m32r: Rename STI/CLI macros
[cascardo/linux.git] / arch / m32r / kernel / entry.S
index 920bb74..d4eaa2f 100644 (file)
  *     updated in fork.c:copy_thread, signal.c:do_signal,
  *     ptrace.c and ptrace.h
  *
- * M32Rx/M32R2                         M32R
- *       @(sp)      - r4               ditto
- *       @(0x04,sp) - r5               ditto
- *       @(0x08,sp) - r6               ditto
- *       @(0x0c,sp) - *pt_regs         ditto
- *       @(0x10,sp) - r0               ditto
- *       @(0x14,sp) - r1               ditto
- *       @(0x18,sp) - r2               ditto
- *       @(0x1c,sp) - r3               ditto
- *       @(0x20,sp) - r7               ditto
- *       @(0x24,sp) - r8               ditto
- *       @(0x28,sp) - r9               ditto
- *       @(0x2c,sp) - r10              ditto
- *       @(0x30,sp) - r11              ditto
- *       @(0x34,sp) - r12              ditto
- *       @(0x38,sp) - syscall_nr       ditto
- *       @(0x3c,sp) - acc0h            @(0x3c,sp) - acch
- *       @(0x40,sp) - acc0l            @(0x40,sp) - accl
- *       @(0x44,sp) - acc1h            @(0x44,sp) - dummy_acc1h
- *       @(0x48,sp) - acc1l            @(0x48,sp) - dummy_acc1l
- *       @(0x4c,sp) - psw              ditto
- *       @(0x50,sp) - bpc              ditto
- *       @(0x54,sp) - bbpsw            ditto
- *       @(0x58,sp) - bbpc             ditto
- *       @(0x5c,sp) - spu (cr3)                ditto
- *       @(0x60,sp) - fp (r13)         ditto
- *       @(0x64,sp) - lr (r14)         ditto
- *       @(0x68,sp) - spi (cr2)                ditto
- *       @(0x6c,sp) - orig_r0          ditto
+ * M32R/M32Rx/M32R2
+ *       @(sp)      - r4
+ *       @(0x04,sp) - r5
+ *       @(0x08,sp) - r6
+ *       @(0x0c,sp) - *pt_regs
+ *       @(0x10,sp) - r0
+ *       @(0x14,sp) - r1
+ *       @(0x18,sp) - r2
+ *       @(0x1c,sp) - r3
+ *       @(0x20,sp) - r7
+ *       @(0x24,sp) - r8
+ *       @(0x28,sp) - r9
+ *       @(0x2c,sp) - r10
+ *       @(0x30,sp) - r11
+ *       @(0x34,sp) - r12
+ *       @(0x38,sp) - syscall_nr
+ *       @(0x3c,sp) - acc0h
+ *       @(0x40,sp) - acc0l
+ *       @(0x44,sp) - acc1h            ; ISA_DSP_LEVEL2 only
+ *       @(0x48,sp) - acc1l            ; ISA_DSP_LEVEL2 only
+ *       @(0x4c,sp) - psw
+ *       @(0x50,sp) - bpc
+ *       @(0x54,sp) - bbpsw
+ *       @(0x58,sp) - bbpc
+ *       @(0x5c,sp) - spu (cr3)
+ *       @(0x60,sp) - fp (r13)
+ *       @(0x64,sp) - lr (r14)
+ *       @(0x68,sp) - spi (cr2)
+ *       @(0x6c,sp) - orig_r0
  */
 
-#include <linux/config.h>
 #include <linux/linkage.h>
 #include <asm/irq.h>
 #include <asm/unistd.h>
 #define R11(reg)               @(0x30,reg)
 #define R12(reg)               @(0x34,reg)
 #define SYSCALL_NR(reg)                @(0x38,reg)
-#if defined(CONFIG_ISA_M32R2) && defined(CONFIG_ISA_DSP_LEVEL2)
 #define ACC0H(reg)             @(0x3C,reg)
 #define ACC0L(reg)             @(0x40,reg)
 #define ACC1H(reg)             @(0x44,reg)
 #define ACC1L(reg)             @(0x48,reg)
-#elif defined(CONFIG_ISA_M32R2) || defined(CONFIG_ISA_M32R)
-#define ACCH(reg)              @(0x3C,reg)
-#define ACCL(reg)              @(0x40,reg)
-#else
-#error unknown isa configuration
-#endif
 #define PSW(reg)               @(0x4C,reg)
 #define BPC(reg)               @(0x50,reg)
 #define BBPSW(reg)             @(0x54,reg)
 #define SP(reg)                        @(0x68,reg)
 #define ORIG_R0(reg)           @(0x6C,reg)
 
-CF_MASK                = 0x00000001
-TF_MASK                = 0x00000100
-IF_MASK                = 0x00000200
-DF_MASK                = 0x00000400
-NT_MASK                = 0x00004000
-VM_MASK                = 0x00020000
+#define nr_syscalls ((syscall_table_size)/4)
 
 #ifdef CONFIG_PREEMPT
-#define preempt_stop(x)                CLI(x)
+#define preempt_stop(x)                DISABLE_INTERRUPTS(x)
 #else
 #define preempt_stop(x)
 #define resume_kernel          restore_all
@@ -157,7 +144,7 @@ ret_from_intr:
 #endif
        beqz    r4, resume_kernel
 ENTRY(resume_userspace)
-       CLI(r4)                         ; make sure we don't miss an interrupt
+       DISABLE_INTERRUPTS(r4)          ; make sure we don't miss an interrupt
                                        ; setting need_resched or sigpending
                                        ; between sampling and the iret
        GET_THREAD_INFO(r8)
@@ -181,11 +168,11 @@ need_resched:
        beqz    r4, restore_all
        LDIMM   (r4, PREEMPT_ACTIVE)
        st      r4, @(TI_PRE_COUNT, r8)
-       STI(r4)
+       ENABLE_INTERRUPTS(r4)
        bl      schedule
        ldi     r4, #0
        st      r4, @(TI_PRE_COUNT, r8)
-       CLI(r4)
+       DISABLE_INTERRUPTS(r4)
        bra     need_resched
 #endif
 
@@ -193,7 +180,7 @@ need_resched:
 ENTRY(system_call)
        SWITCH_TO_KERNEL_STACK
        SAVE_ALL
-       STI(r4)                         ; Enable interrupt
+       ENABLE_INTERRUPTS(r4)           ; Enable interrupt
        st      sp, PTREGS(sp)          ; implicit pt_regs parameter
        cmpui   r7, #NR_syscalls
        bnc     syscall_badsys
@@ -211,7 +198,7 @@ syscall_call:
        jl      r7                      ; execute system call
        st      r0, R0(sp)              ; save the return value
 syscall_exit:
-       CLI(r4)                         ; make sure we don't miss an interrupt
+       DISABLE_INTERRUPTS(r4)          ; make sure we don't miss an interrupt
                                        ; setting need_resched or sigpending
                                        ; between sampling and the iret
        ld      r9, @(TI_FLAGS, r8)
@@ -228,7 +215,7 @@ work_pending:
        beqz    r4, work_notifysig
 work_resched:
        bl      schedule
-       CLI(r4)                         ; make sure we don't miss an interrupt
+       DISABLE_INTERRUPTS(r4)          ; make sure we don't miss an interrupt
                                        ; setting need_resched or sigpending
                                        ; between sampling and the iret
        ld      r9, @(TI_FLAGS, r8)
@@ -270,7 +257,7 @@ syscall_exit_work:
        ld      r9, @(TI_FLAGS, r8)
        and3    r4, r9, #_TIF_SYSCALL_TRACE
        beqz    r4, work_pending
-       STI(r4)                         ; could let do_syscall_trace() call
+       ENABLE_INTERRUPTS(r4)           ; could let do_syscall_trace() call
                                        ; schedule() instead
        bl      do_syscall_trace
        bra     resume_userspace
@@ -298,16 +285,12 @@ syscall_badsys:
  */
 ENTRY(ei_handler)
 #if defined(CONFIG_CHIP_M32700)
-       SWITCH_TO_KERNEL_STACK
        ; WORKAROUND: force to clear SM bit and use the kernel stack (SPI).
+       SWITCH_TO_KERNEL_STACK
 #endif
        SAVE_ALL
        mv      r1, sp                  ; arg1(regs)
-#if defined(CONFIG_CHIP_VDEC2) || defined(CONFIG_CHIP_XNUX2) \
-       || defined(CONFIG_CHIP_M32700) || defined(CONFIG_CHIP_M32102) \
-       || defined(CONFIG_CHIP_OPSP) || defined(CONFIG_CHIP_M32104)
-
-;    GET_ICU_STATUS;
+       ; get ICU status
        seth    r0, #shigh(M32R_ICU_ISTS_ADDR)
        ld      r0, @(low(M32R_ICU_ISTS_ADDR),r0)
        push    r0
@@ -322,10 +305,15 @@ ENTRY(ei_handler)
        ;; IRQ exist check
 #if defined(CONFIG_CHIP_M32700)
        /* WORKAROUND: IMASK bug M32700-TS1, TS2 chip. */
-       beqz    r0, 3f                  ; if (!irq_num) goto exit
-#else
+       bnez    r0, 0f
+       ld24    r14, #0x00070000
+       seth    r0, #shigh(M32R_ICU_IMASK_ADDR)
+       st      r14, @(low(M32R_ICU_IMASK_ADDR),r0)
+       bra     1f
+       .fillinsn
+0:
+#endif /* CONFIG_CHIP_M32700 */
        beqz    r0, 1f                  ; if (!irq_num) goto exit
-#endif /* WORKAROUND */
        ;; IPI check
        cmpi    r0, #(M32R_IRQ_IPI0<<2) ; ISN < IPI0 check
        bc      2f
@@ -340,220 +328,56 @@ ENTRY(ei_handler)
        .fillinsn
 1:
        addi    sp, #4
-       bra     ret_to_intr
-#if defined(CONFIG_CHIP_M32700)
-       /* WORKAROUND: IMASK bug M32700-TS1, TS2 chip. */
-       .fillinsn
-3:
-       ld24    r14, #0x00070000
-       seth    r0, #shigh(M32R_ICU_IMASK_ADDR)
-       st      r14, @(low(M32R_ICU_IMASK_ADDR), r0)
-       addi    sp, #4
-       bra     ret_to_intr
-#endif /* WORKAROUND */
-       ;; do_IRQ
+       bra     restore_all
        .fillinsn
 2:
        srli    r0, #2
-#if defined(CONFIG_PLAT_USRV)
-       add3    r2, r0, #-(M32R_IRQ_INT1)       ; INT1# interrupt
-       bnez    r2, 9f
-       ; read ICU status register of PLD
-       seth    r0, #high(PLD_ICUISTS)
-       or3     r0, r0, #low(PLD_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       addi    r0, #(M32700UT_PLD_IRQ_BASE)
-       .fillinsn
-9:
-#elif defined(CONFIG_PLAT_M32700UT)
-       add3    r2, r0, #-(M32R_IRQ_INT1)       ; INT1# interrupt
-       bnez    r2, check_int0
-       ; read ICU status register of PLD
-       seth    r0, #high(PLD_ICUISTS)
-       or3     r0, r0, #low(PLD_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       addi    r0, #(M32700UT_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_int0:
-       add3    r2, r0, #-(M32R_IRQ_INT0)       ; INT0# interrupt
-       bnez    r2, check_int2
-       ; read ICU status of LAN-board
-       seth    r0, #high(M32700UT_LAN_ICUISTS)
-       or3     r0, r0, #low(M32700UT_LAN_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       add3    r0, r0, #(M32700UT_LAN_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_int2:
-       add3    r2, r0, #-(M32R_IRQ_INT2)       ; INT2# interrupt
-       bnez    r2, check_end
-       ; read ICU status of LCD-board
-       seth    r0, #high(M32700UT_LCD_ICUISTS)
-       or3     r0, r0, #low(M32700UT_LCD_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       add3    r0, r0, #(M32700UT_LCD_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_end:
-#elif defined(CONFIG_PLAT_OPSPUT)
-       add3    r2, r0, #-(M32R_IRQ_INT1)       ; INT1# interrupt
-       bnez    r2, check_int0
-       ; read ICU status register of PLD
-       seth    r0, #high(PLD_ICUISTS)
-       or3     r0, r0, #low(PLD_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       addi    r0, #(OPSPUT_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_int0:
-       add3    r2, r0, #-(M32R_IRQ_INT0)       ; INT0# interrupt
-       bnez    r2, check_int2
-       ; read ICU status of LAN-board
-       seth    r0, #high(OPSPUT_LAN_ICUISTS)
-       or3     r0, r0, #low(OPSPUT_LAN_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       add3    r0, r0, #(OPSPUT_LAN_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_int2:
-       add3    r2, r0, #-(M32R_IRQ_INT2)       ; INT2# interrupt
-       bnez    r2, check_end
-       ; read ICU status of LCD-board
-       seth    r0, #high(OPSPUT_LCD_ICUISTS)
-       or3     r0, r0, #low(OPSPUT_LCD_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       add3    r0, r0, #(OPSPUT_LCD_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_end:
-#endif  /* CONFIG_PLAT_OPSPUT */
-       bl      do_IRQ                  ; r0(irq), r1(regs)
-#else  /* not CONFIG_SMP */
+#else /* not CONFIG_SMP */
        srli    r0, #22                 ; r0(irq)
-#if defined(CONFIG_PLAT_USRV)
+#endif /* not CONFIG_SMP */
+
+#if defined(CONFIG_PLAT_HAS_INT1ICU)
        add3    r2, r0, #-(M32R_IRQ_INT1)       ; INT1# interrupt
-       bnez    r2, 1f
-       ; read ICU status register of PLD
-       seth    r0, #high(PLD_ICUISTS)
-       or3     r0, r0, #low(PLD_ICUISTS)
-       lduh    r0, @r0
+       bnez    r2, 3f
+       seth    r0, #shigh(M32R_INT1ICU_ISTS)
+       lduh    r0, @(low(M32R_INT1ICU_ISTS),r0)        ; bit10-6 : ISN
        slli    r0, #21
        srli    r0, #27                         ; ISN
-       addi    r0, #(M32700UT_PLD_IRQ_BASE)
-       .fillinsn
-1:
-#elif defined(CONFIG_PLAT_M32700UT)
-       add3    r2, r0, #-(M32R_IRQ_INT1)       ; INT1# interrupt
-       bnez    r2, check_int0
-       ; read ICU status register of PLD
-       seth    r0, #high(PLD_ICUISTS)
-       or3     r0, r0, #low(PLD_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       addi    r0, #(M32700UT_PLD_IRQ_BASE)
+       addi    r0, #(M32R_INT1ICU_IRQ_BASE)
        bra     check_end
        .fillinsn
-check_int0:
-       add3    r2, r0, #-(M32R_IRQ_INT0)       ; INT0# interrupt
-       bnez    r2, check_int2
-       ; read ICU status of LAN-board
-       seth    r0, #high(M32700UT_LAN_ICUISTS)
-       or3     r0, r0, #low(M32700UT_LAN_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       add3    r0, r0, #(M32700UT_LAN_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_int2:
-       add3    r2, r0, #-(M32R_IRQ_INT2)       ; INT2# interrupt
-       bnez    r2, check_end
-       ; read ICU status of LCD-board
-       seth    r0, #high(M32700UT_LCD_ICUISTS)
-       or3     r0, r0, #low(M32700UT_LCD_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       add3    r0, r0, #(M32700UT_LCD_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_end:
-#elif defined(CONFIG_PLAT_OPSPUT)
-       add3    r2, r0, #-(M32R_IRQ_INT1)       ; INT1# interrupt
-       bnez    r2, check_int0
-       ; read ICU status register of PLD
-       seth    r0, #high(PLD_ICUISTS)
-       or3     r0, r0, #low(PLD_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       addi    r0, #(OPSPUT_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_int0:
-       add3    r2, r0, #-(M32R_IRQ_INT0)       ; INT0# interrupt
-       bnez    r2, check_int2
-       ; read ICU status of LAN-board
-       seth    r0, #high(OPSPUT_LAN_ICUISTS)
-       or3     r0, r0, #low(OPSPUT_LAN_ICUISTS)
-       lduh    r0, @r0
-       slli    r0, #21
-       srli    r0, #27                         ; ISN
-       add3    r0, r0, #(OPSPUT_LAN_PLD_IRQ_BASE)
-       bra     check_end
-       .fillinsn
-check_int2:
-       add3    r2, r0, #-(M32R_IRQ_INT2)       ; INT2# interrupt
-       bnez    r2, check_end
-       ; read ICU status of LCD-board
-       seth    r0, #high(OPSPUT_LCD_ICUISTS)
-       or3     r0, r0, #low(OPSPUT_LCD_ICUISTS)
-       lduh    r0, @r0
+3:
+#endif /* CONFIG_PLAT_HAS_INT1ICU */
+#if defined(CONFIG_PLAT_HAS_INT0ICU)
+       add3    r2, r0, #-(M32R_IRQ_INT0)       ; INT0# interrupt
+       bnez    r2, 4f
+       seth    r0, #shigh(M32R_INT0ICU_ISTS)
+       lduh    r0, @(low(M32R_INT0ICU_ISTS),r0)        ; bit10-6 : ISN
        slli    r0, #21
-       srli    r0, #27                         ; ISN
-       add3    r0, r0, #(OPSPUT_LCD_PLD_IRQ_BASE)
+       srli    r0, #27                         ; ISN
+       add3    r0, r0, #(M32R_INT0ICU_IRQ_BASE)
        bra     check_end
        .fillinsn
-check_end:
-#elif defined(CONFIG_PLAT_M32104UT)
-       add3    r2, r0, #-(M32R_IRQ_INT1)       ; INT1# interrupt
-       bnez    r2, check_end
-       ; read ICU status register of PLD
-       seth    r0, #high(PLD_ICUISTS)
-       or3     r0, r0, #low(PLD_ICUISTS)
-       lduh    r0, @r0
+4:
+#endif /* CONFIG_PLAT_HAS_INT0ICU */
+#if defined(CONFIG_PLAT_HAS_INT2ICU)
+       add3    r2, r0, #-(M32R_IRQ_INT2)       ; INT2# interrupt
+       bnez    r2, 5f
+       seth    r0, #shigh(M32R_INT2ICU_ISTS)
+       lduh    r0, @(low(M32R_INT2ICU_ISTS),r0)        ; bit10-6 : ISN
        slli    r0, #21
-       srli    r0, #27                         ; ISN
-       addi    r0, #(M32104UT_PLD_IRQ_BASE)
-       bra     check_end
+       srli    r0, #27                         ; ISN
+       add3    r0, r0, #(M32R_INT2ICU_IRQ_BASE)
+       ; bra   check_end
        .fillinsn
+5:
+#endif /* CONFIG_PLAT_HAS_INT2ICU */
+
 check_end:
-#endif  /* CONFIG_PLAT_M32104UT */
        bl      do_IRQ
-#endif  /* CONFIG_SMP */
        pop     r14
        seth    r0, #shigh(M32R_ICU_IMASK_ADDR)
        st      r14, @(low(M32R_ICU_IMASK_ADDR),r0)
-#else
-#error no chip configuration
-#endif
-ret_to_intr:
        bra  ret_from_intr
 
 /*
@@ -604,8 +428,6 @@ ENTRY(ace_handler)
        beqz    r1, inst
 oprand:
        ld      r2, @(low(MDEVA_offset),r2)     ; set address
-       srli    r2, #12
-       slli    r2, #12
        srli    r1, #1
        bra     1f
 inst:
@@ -641,7 +463,7 @@ inst:
 
 
 ENTRY(alignment_check)
-/* void alignment_check(int error_code) */
+       /* void alignment_check(int error_code) */
        SWITCH_TO_KERNEL_STACK
        SAVE_ALL
        ldi     r1, #0x30                       ; error_code
@@ -651,7 +473,7 @@ error_code:
        bra     ret_from_exception
 
 ENTRY(rie_handler)
-/* void rie_handler(int error_code) */
+       /* void rie_handler(int error_code) */
        SWITCH_TO_KERNEL_STACK
        SAVE_ALL
        ldi     r1, #0x20                       ; error_code
@@ -660,7 +482,7 @@ ENTRY(rie_handler)
        bra     error_code
 
 ENTRY(pie_handler)
-/* void pie_handler(int error_code) */
+       /* void pie_handler(int error_code) */
        SWITCH_TO_KERNEL_STACK
        SAVE_ALL
        ldi     r1, #0                          ; error_code ; FIXME
@@ -669,8 +491,8 @@ ENTRY(pie_handler)
        bra     error_code
 
 ENTRY(debug_trap)
-       .global withdraw_debug_trap
        /* void debug_trap(void) */
+       .global withdraw_debug_trap
        SWITCH_TO_KERNEL_STACK
        SAVE_ALL
        mv      r0, sp                          ; pt_regs
@@ -689,11 +511,9 @@ ENTRY(ill_trap)
        bl      do_ill_trap
        bra     error_code
 
-
-/* Cache flushing handler */
 ENTRY(cache_flushing_handler)
-       .global _flush_cache_all
        /* void _flush_cache_all(void); */
+       .global _flush_cache_all
        SWITCH_TO_KERNEL_STACK
        push    r0
        push    r1
@@ -716,292 +536,7 @@ ENTRY(cache_flushing_handler)
        pop     r0
        rte
 
-.data
-ENTRY(sys_call_table)
-       .long sys_restart_syscall       /* 0  -  old "setup()" system call*/
-       .long sys_exit
-       .long sys_fork
-       .long sys_read
-       .long sys_write
-       .long sys_open                  /* 5 */
-       .long sys_close
-       .long sys_waitpid
-       .long sys_creat
-       .long sys_link
-       .long sys_unlink                /* 10 */
-       .long sys_execve
-       .long sys_chdir
-       .long sys_time
-       .long sys_mknod
-       .long sys_chmod                 /* 15 */
-       .long sys_ni_syscall            /* lchown16 syscall holder */
-       .long sys_ni_syscall            /* old break syscall holder */
-       .long sys_ni_syscall            /* old stat syscall holder */
-       .long sys_lseek
-       .long sys_getpid                /* 20 */
-       .long sys_mount
-       .long sys_oldumount
-       .long sys_ni_syscall            /* setuid16 syscall holder */
-       .long sys_ni_syscall            /* getuid16 syscall holder */
-       .long sys_stime                 /* 25 */
-       .long sys_ptrace
-       .long sys_alarm
-       .long sys_ni_syscall            /* old fstat syscall holder */
-       .long sys_pause
-       .long sys_utime                 /* 30 */
-       .long sys_ni_syscall            /* old stty syscall holder */
-       .long sys_cachectl              /* for M32R */ /* old gtty syscall holder */
-       .long sys_access
-       .long sys_ni_syscall            /* nice syscall holder */
-       .long sys_ni_syscall            /* 35  -  old ftime syscall holder */
-       .long sys_sync
-       .long sys_kill
-       .long sys_rename
-       .long sys_mkdir
-       .long sys_rmdir                 /* 40 */
-       .long sys_dup
-       .long sys_pipe
-       .long sys_times
-       .long sys_ni_syscall            /* old prof syscall holder */
-       .long sys_brk                   /* 45 */
-       .long sys_ni_syscall            /* setgid16 syscall holder */
-       .long sys_getgid                /* will be unused */
-       .long sys_ni_syscall            /* signal syscall holder */
-       .long sys_ni_syscall            /* geteuid16  syscall holder */
-       .long sys_ni_syscall            /* 50 - getegid16 syscall holder */
-       .long sys_acct
-       .long sys_umount                /* recycled never used phys() */
-       .long sys_ni_syscall            /* old lock syscall holder */
-       .long sys_ioctl
-       .long sys_fcntl                 /* 55 - will be unused */
-       .long sys_ni_syscall            /* mpx syscall holder */
-       .long sys_setpgid
-       .long sys_ni_syscall            /* old ulimit syscall holder */
-       .long sys_ni_syscall            /* sys_olduname */
-       .long sys_umask                 /* 60 */
-       .long sys_chroot
-       .long sys_ustat
-       .long sys_dup2
-       .long sys_getppid
-       .long sys_getpgrp               /* 65 */
-       .long sys_setsid
-       .long sys_ni_syscall            /* sigaction syscall holder */
-       .long sys_ni_syscall            /* sgetmask syscall holder */
-       .long sys_ni_syscall            /* ssetmask syscall holder */
-       .long sys_ni_syscall            /* 70 - setreuid16 syscall holder */
-       .long sys_ni_syscall            /* setregid16 syscall holder */
-       .long sys_ni_syscall            /* sigsuspend syscall holder */
-       .long sys_ni_syscall            /* sigpending syscall holder */
-       .long sys_sethostname
-       .long sys_setrlimit             /* 75 */
-       .long sys_getrlimit/*will be unused*/
-       .long sys_getrusage
-       .long sys_gettimeofday
-       .long sys_settimeofday
-       .long sys_ni_syscall            /* 80 - getgroups16 syscall holder */
-       .long sys_ni_syscall            /* setgroups16 syscall holder */
-       .long sys_ni_syscall            /* sys_oldselect */
-       .long sys_symlink
-       .long sys_ni_syscall            /* old lstat syscall holder */
-       .long sys_readlink              /* 85 */
-       .long sys_uselib
-       .long sys_swapon
-       .long sys_reboot
-       .long sys_ni_syscall            /* readdir syscall holder */
-       .long sys_ni_syscall            /* 90 - old_mmap syscall holder */
-       .long sys_munmap
-       .long sys_truncate
-       .long sys_ftruncate
-       .long sys_fchmod
-       .long sys_ni_syscall            /* 95 - fchwon16  syscall holder */
-       .long sys_getpriority
-       .long sys_setpriority
-       .long sys_ni_syscall            /* old profil syscall holder */
-       .long sys_statfs
-       .long sys_fstatfs               /* 100 */
-       .long sys_ni_syscall            /* ioperm syscall holder */
-       .long sys_socketcall
-       .long sys_syslog
-       .long sys_setitimer
-       .long sys_getitimer             /* 105 */
-       .long sys_newstat
-       .long sys_newlstat
-       .long sys_newfstat
-       .long sys_ni_syscall            /* old uname syscall holder */
-       .long sys_ni_syscall            /* 110  -  iopl syscall holder */
-       .long sys_vhangup
-       .long sys_ni_syscall            /* idle syscall holder */
-       .long sys_ni_syscall            /* vm86old syscall holder */
-       .long sys_wait4
-       .long sys_swapoff               /* 115 */
-       .long sys_sysinfo
-       .long sys_ipc
-       .long sys_fsync
-       .long sys_ni_syscall            /* sigreturn syscall holder */
-       .long sys_clone                 /* 120 */
-       .long sys_setdomainname
-       .long sys_newuname
-       .long sys_ni_syscall            /* modify_ldt syscall holder */
-       .long sys_adjtimex
-       .long sys_mprotect              /* 125 */
-       .long sys_ni_syscall            /* sigprocmask syscall holder */
-       .long sys_ni_syscall            /* create_module syscall holder */
-       .long sys_init_module
-       .long sys_delete_module
-       .long sys_ni_syscall            /* 130 - get_kernel_syms */
-       .long sys_quotactl
-       .long sys_getpgid
-       .long sys_fchdir
-       .long sys_bdflush
-       .long sys_sysfs                 /* 135 */
-       .long sys_personality
-       .long sys_ni_syscall            /* afs_syscall syscall holder */
-       .long sys_ni_syscall            /* setfsuid16 syscall holder */
-       .long sys_ni_syscall            /* setfsgid16 syscall holder */
-       .long sys_llseek                /* 140 */
-       .long sys_getdents
-       .long sys_select
-       .long sys_flock
-       .long sys_msync
-       .long sys_readv                 /* 145 */
-       .long sys_writev
-       .long sys_getsid
-       .long sys_fdatasync
-       .long sys_sysctl
-       .long sys_mlock                 /* 150 */
-       .long sys_munlock
-       .long sys_mlockall
-       .long sys_munlockall
-       .long sys_sched_setparam
-       .long sys_sched_getparam        /* 155 */
-       .long sys_sched_setscheduler
-       .long sys_sched_getscheduler
-       .long sys_sched_yield
-       .long sys_sched_get_priority_max
-       .long sys_sched_get_priority_min        /* 160 */
-       .long sys_sched_rr_get_interval
-       .long sys_nanosleep
-       .long sys_mremap
-       .long sys_ni_syscall            /* setresuid16 syscall holder */
-       .long sys_ni_syscall            /* 165 - getresuid16 syscall holder */
-       .long sys_tas                   /* vm86 syscall holder */
-       .long sys_ni_syscall            /* query_module syscall holder */
-       .long sys_poll
-       .long sys_nfsservctl
-       .long sys_setresgid             /* 170 */
-       .long sys_getresgid
-       .long sys_prctl
-       .long sys_rt_sigreturn
-       .long sys_rt_sigaction
-       .long sys_rt_sigprocmask        /* 175 */
-       .long sys_rt_sigpending
-       .long sys_rt_sigtimedwait
-       .long sys_rt_sigqueueinfo
-       .long sys_rt_sigsuspend
-       .long sys_pread64               /* 180 */
-       .long sys_pwrite64
-       .long sys_ni_syscall            /* chown16 syscall holder */
-       .long sys_getcwd
-       .long sys_capget
-       .long sys_capset                /* 185 */
-       .long sys_sigaltstack
-       .long sys_sendfile
-       .long sys_ni_syscall            /* streams1 */
-       .long sys_ni_syscall            /* streams2 */
-       .long sys_vfork                 /* 190 */
-       .long sys_getrlimit
-       .long sys_mmap2
-       .long sys_truncate64
-       .long sys_ftruncate64
-       .long sys_stat64                /* 195 */
-       .long sys_lstat64
-       .long sys_fstat64
-       .long sys_lchown
-       .long sys_getuid
-       .long sys_getgid                /* 200 */
-       .long sys_geteuid
-       .long sys_getegid
-       .long sys_setreuid
-       .long sys_setregid
-       .long sys_getgroups             /* 205 */
-       .long sys_setgroups
-       .long sys_fchown
-       .long sys_setresuid
-       .long sys_getresuid
-       .long sys_setresgid             /* 210 */
-       .long sys_getresgid
-       .long sys_chown
-       .long sys_setuid
-       .long sys_setgid
-       .long sys_setfsuid              /* 215 */
-       .long sys_setfsgid
-       .long sys_pivot_root
-       .long sys_mincore
-       .long sys_madvise
-       .long sys_getdents64            /* 220 */
-       .long sys_fcntl64
-       .long sys_ni_syscall            /* reserved for TUX */
-       .long sys_ni_syscall            /* Reserved for Security */
-       .long sys_gettid
-       .long sys_readahead             /* 225 */
-       .long sys_setxattr
-       .long sys_lsetxattr
-       .long sys_fsetxattr
-       .long sys_getxattr
-       .long sys_lgetxattr             /* 230 */
-       .long sys_fgetxattr
-       .long sys_listxattr
-       .long sys_llistxattr
-       .long sys_flistxattr
-       .long sys_removexattr           /* 235 */
-       .long sys_lremovexattr
-       .long sys_fremovexattr
-       .long sys_tkill
-       .long sys_sendfile64
-       .long sys_futex                 /* 240 */
-       .long sys_sched_setaffinity
-       .long sys_sched_getaffinity
-       .long sys_ni_syscall            /* reserved for "set_thread_area" system call */
-       .long sys_ni_syscall            /* reserved for "get_thread_area" system call */
-       .long sys_io_setup              /* 245 */
-       .long sys_io_destroy
-       .long sys_io_getevents
-       .long sys_io_submit
-       .long sys_io_cancel
-       .long sys_fadvise64             /* 250 */
-       .long sys_ni_syscall
-       .long sys_exit_group
-       .long sys_lookup_dcookie
-       .long sys_epoll_create
-       .long sys_epoll_ctl             /* 255 */
-       .long sys_epoll_wait
-       .long sys_remap_file_pages
-       .long sys_set_tid_address
-       .long sys_timer_create
-       .long sys_timer_settime         /* 260 */
-       .long sys_timer_gettime
-       .long sys_timer_getoverrun
-       .long sys_timer_delete
-       .long sys_clock_settime
-       .long sys_clock_gettime         /* 265 */
-       .long sys_clock_getres
-       .long sys_clock_nanosleep
-       .long sys_statfs64
-       .long sys_fstatfs64
-       .long sys_tgkill                /* 270 */
-       .long sys_utimes
-       .long sys_fadvise64_64
-       .long sys_ni_syscall            /* Reserved for sys_vserver */
-        .long sys_ni_syscall           /* Reserved for sys_mbind */
-        .long sys_ni_syscall           /* Reserved for sys_get_mempolicy */
-        .long sys_ni_syscall           /* Reserved for sys_set_mempolicy */
-        .long sys_mq_open
-        .long sys_mq_unlink
-        .long sys_mq_timedsend
-        .long sys_mq_timedreceive       /* 280 */
-        .long sys_mq_notify
-        .long sys_mq_getsetattr
-        .long sys_ni_syscall            /* reserved for kexec */
-       .long sys_waitid
+       .section .rodata,"a"
+#include "syscall_table.S"
 
 syscall_table_size=(.-sys_call_table)