Module: xenomai-head
Branch: master
Commit: 20f791df6ef68f5967b42a814e47aaffee3d7c6f
URL:    
http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=20f791df6ef68f5967b42a814e47aaffee3d7c6f

Author: Philippe Gerum <r...@xenomai.org>
Date:   Mon Oct 18 18:02:51 2010 +0200

arm: remove RT signal handling from syscall path

---

 include/asm-arm/bits/shadow.h |    8 ------
 include/asm-arm/syscall.h     |   53 +++++++++++++---------------------------
 include/asm-arm/system.h      |    1 -
 3 files changed, 17 insertions(+), 45 deletions(-)

diff --git a/include/asm-arm/bits/shadow.h b/include/asm-arm/bits/shadow.h
index 270156e..883d073 100644
--- a/include/asm-arm/bits/shadow.h
+++ b/include/asm-arm/bits/shadow.h
@@ -197,7 +197,6 @@ static inline void xnarch_setup_mayday_page(void *page)
         * e28003c3     add     r0, r0, #201326595      ; 0xc000003
         * e3a0780f     mov     r7, #983040     ; 0xf0000
         * e2877042     add     r7, r7, #66     ; 0x42
-        * e3a06000     mov     r6, #0
         * ef000000     svc     0x00000000
         * e3a00000     mov     r0, #0
         * e5800000     str     r0, [r0]        ; <bug>
@@ -206,7 +205,6 @@ static inline void xnarch_setup_mayday_page(void *page)
         *
         * e3a00f8a     mov     r0, #552        ; 0x228
         * e28003c3     add     r0, r0, #201326595      ; 0xc000003
-        * e3a06000     mov     r6, #0
         * ef9f0042     swi     0x009f0042
         * e3a00000     mov     r0, #0
         * e5800000     str     r0, [r0]        ; <bug>
@@ -225,7 +223,6 @@ static inline void xnarch_setup_mayday_page(void *page)
                u32 add_muxh;
                u32 mov_sysh;
                u32 add_sysl;
-               u32 mov_sigp;
                u32 swi_0;
                u32 mov_r0;
                u32 str_r0;
@@ -234,7 +231,6 @@ static inline void xnarch_setup_mayday_page(void *page)
                .add_muxh = 0xe28003c3,
                .mov_sysh = 0xe3a0780f,
                .add_sysl = 0xe2877042,
-               .mov_sigp = 0xe3a06000,
                .swi_0 = 0xef000000,
                .mov_r0 = 0xe3a00000,
                .str_r0 = 0xe5800000
@@ -243,14 +239,12 @@ static inline void xnarch_setup_mayday_page(void *page)
        static const struct {
                u32 mov_muxl;
                u32 add_muxh;
-               u32 mov_sigp;
                u32 swi_syscall;
                u32 mov_r0;
                u32 str_r0;
        } code = {
                .mov_muxl = 0xe3a00f8a,
                .add_muxh = 0xe28003c3,
-               .mov_sigp = 0xe3a06000,
                .swi_syscall = 0x009f0042,
                .mov_r0 = 0xe3a00000,
                .str_r0 = 0xe5800000
@@ -273,7 +267,6 @@ static inline void xnarch_handle_mayday(struct xnarchtcb 
*tcb,
 {
        tcb->mayday.pc = regs->ARM_pc;
        tcb->mayday.r0 = regs->ARM_r0;
-       tcb->mayday.r6 = regs->ARM_r6;
 #ifdef CONFIG_XENO_ARM_EABI
        tcb->mayday.r7 = regs->ARM_r7;
 #endif
@@ -285,7 +278,6 @@ static inline void xnarch_fixup_mayday(struct xnarchtcb 
*tcb,
 {
        regs->ARM_pc = tcb->mayday.pc;
        regs->ARM_r0 = tcb->mayday.r0;
-       regs->ARM_r6 = tcb->mayday.r6;
 #ifdef CONFIG_XENO_ARM_EABI
        regs->ARM_r7 = tcb->mayday.r7;
 #endif
diff --git a/include/asm-arm/syscall.h b/include/asm-arm/syscall.h
index 1851422..672819a 100644
--- a/include/asm-arm/syscall.h
+++ b/include/asm-arm/syscall.h
@@ -49,7 +49,6 @@
 #define __xn_reg_arg3(regs)     ((regs)->ARM_r3)
 #define __xn_reg_arg4(regs)     ((regs)->ARM_r4)
 #define __xn_reg_arg5(regs)     ((regs)->ARM_r5)
-#define __xn_reg_sigp(regs)     ((regs)->ARM_r6)
 
 /* In OABI_COMPAT mode, handle both OABI and EABI userspace syscalls */
 #ifdef CONFIG_OABI_COMPAT
@@ -106,33 +105,32 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
 #error __thread is too buggy with gcc 4.3 and later, please do not pass 
--with-__thread to configure
 #endif
 
-#define LOADARGS_0(muxcode, sigp, dummy...)    \
-       __a0 = (unsigned long) (muxcode);       \
-       __a6 = (unsigned long) (sigp)
-#define LOADARGS_1(muxcode, sigp, arg1)                \
-       LOADARGS_0(muxcode, sigp);              \
+#define LOADARGS_0(muxcode, dummy...)  \
+       __a0 = (unsigned long) (muxcode)
+#define LOADARGS_1(muxcode, arg1)      \
+       LOADARGS_0(muxcode);            \
        __a1 = (unsigned long) (arg1)
-#define LOADARGS_2(muxcode, sigp, arg1, arg2)  \
-       LOADARGS_1(muxcode, sigp, arg1);        \
+#define LOADARGS_2(muxcode, arg1, arg2)        \
+       LOADARGS_1(muxcode, arg1);      \
        __a2 = (unsigned long) (arg2)
-#define LOADARGS_3(muxcode, sigp, arg1, arg2, arg3)    \
-       LOADARGS_2(muxcode, sigp, arg1, arg2);          \
+#define LOADARGS_3(muxcode, arg1, arg2, arg3)  \
+       LOADARGS_2(muxcode,  arg1, arg2);       \
        __a3 = (unsigned long) (arg3)
-#define LOADARGS_4(muxcode, sigp, arg1, arg2, arg3, arg4)      \
-       LOADARGS_3(muxcode, sigp, arg1, arg2, arg3);            \
+#define LOADARGS_4(muxcode,  arg1, arg2, arg3, arg4)   \
+       LOADARGS_3(muxcode,  arg1, arg2, arg3);         \
        __a4 = (unsigned long) (arg4)
-#define LOADARGS_5(muxcode, sigp, arg1, arg2, arg3, arg4, arg5)        \
-       LOADARGS_4(muxcode, sigp, arg1, arg2, arg3, arg4);      \
+#define LOADARGS_5(muxcode, arg1, arg2, arg3, arg4, arg5)      \
+       LOADARGS_4(muxcode, arg1, arg2, arg3, arg4);            \
        __a5 = (unsigned long) (arg5)
 
-#define CLOBBER_REGS_0 "r0", "r6"
+#define CLOBBER_REGS_0 "r0"
 #define CLOBBER_REGS_1 CLOBBER_REGS_0, "r1"
 #define CLOBBER_REGS_2 CLOBBER_REGS_1, "r2"
 #define CLOBBER_REGS_3 CLOBBER_REGS_2, "r3"
 #define CLOBBER_REGS_4 CLOBBER_REGS_3, "r4"
 #define CLOBBER_REGS_5 CLOBBER_REGS_4, "r5"
 
-#define LOADREGS_0 __r0 = __a0; __r6 = __a6
+#define LOADREGS_0 __r0 = __a0
 #define LOADREGS_1 LOADREGS_0; __r1 = __a1
 #define LOADREGS_2 LOADREGS_1; __r2 = __a2
 #define LOADREGS_3 LOADREGS_2; __r3 = __a3
@@ -140,8 +138,7 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
 #define LOADREGS_5 LOADREGS_4; __r5 = __a5
 
 #define ASM_INDECL_0                                                   \
-       unsigned long __a0; register unsigned long __r0  __asm__ ("r0"); \
-       unsigned long __a6; register unsigned long __r6  __asm__ ("r6")
+       unsigned long __a0; register unsigned long __r0  __asm__ ("r0");
 #define ASM_INDECL_1 ASM_INDECL_0;                                     \
        unsigned long __a1; register unsigned long __r1  __asm__ ("r1")
 #define ASM_INDECL_2 ASM_INDECL_1;                                     \
@@ -153,7 +150,7 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
 #define ASM_INDECL_5 ASM_INDECL_4;                                     \
        unsigned long __a5; register unsigned long __r5  __asm__ ("r5")
 
-#define ASM_INPUT_0 "0" (__r0), "r" (__r6)
+#define ASM_INPUT_0 "0" (__r0)
 #define ASM_INPUT_1 ASM_INPUT_0, "r" (__r1)
 #define ASM_INPUT_2 ASM_INPUT_1, "r" (__r2)
 #define ASM_INPUT_3 ASM_INPUT_2, "r" (__r3)
@@ -178,7 +175,7 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
 #define __xn_syscall "swi\t" __sys1(__NR_OABI_SYSCALL_BASE + XENO_ARM_SYSCALL) 
""
 #endif
 
-#define XENOMAI_DO_SYSCALL_INNER(nr, shifted_id, op, args...)          \
+#define XENOMAI_DO_SYSCALL(nr, shifted_id, op, args...)                        
\
        ({                                                              \
                ASM_INDECL_##nr;                                        \
                __SYS_REG_DECL;                                         \
@@ -195,20 +192,6 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
                (int) __r0;                                             \
        })
 
-#define XENOMAI_DO_SYSCALL(nr, shifted_id, op, args...)                        
\
-       ({                                                              \
-               int err, res = -ERESTART;                               \
-               struct xnsig sigs;                                      \
-                                                                       \
-               do {                                                    \
-                       sigs.nsigs = 0;                                 \
-                       err = XENOMAI_DO_SYSCALL_INNER(nr, shifted_id,  \
-                                                      op, &sigs, args); \
-                       res = xnsig_dispatch(&sigs, res, err);          \
-               } while (res == -ERESTART);                             \
-               res;                                                    \
-       })
-
 #define XENOMAI_SYSCALL0(op)                   \
        XENOMAI_DO_SYSCALL(0,0,op)
 #define XENOMAI_SYSCALL1(op,a1)                        \
@@ -223,8 +206,6 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
        XENOMAI_DO_SYSCALL(5,0,op,a1,a2,a3,a4,a5)
 #define XENOMAI_SYSBIND(a1,a2,a3,a4)                           \
        XENOMAI_DO_SYSCALL(4,0,__xn_sys_bind,a1,a2,a3,a4)
-#define XENOMAI_SYSSIGS(sigs)                                          \
-       XENOMAI_DO_SYSCALL_INNER(0, 0, __xn_sys_get_next_sigs, sigs)
 
 #define XENOMAI_SKINCALL0(id,op)               \
        XENOMAI_DO_SYSCALL(0,id,op)
diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h
index 2b7b734..2ccfb82 100644
--- a/include/asm-arm/system.h
+++ b/include/asm-arm/system.h
@@ -73,7 +73,6 @@ typedef struct xnarchtcb {  /* Per-thread arch-dependent 
block */
        struct {
                unsigned long pc;
                unsigned long r0;
-               unsigned long r6;
 #ifdef CONFIG_XENO_ARM_EABI
                unsigned long r7;
 #endif


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to