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

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

blackfin: remove RT signal handling from syscall path

---

 include/asm-blackfin/bits/shadow.h |    3 --
 include/asm-blackfin/syscall.h     |   42 ++++++++++-------------------------
 2 files changed, 12 insertions(+), 33 deletions(-)

diff --git a/include/asm-blackfin/bits/shadow.h 
b/include/asm-blackfin/bits/shadow.h
index 778cf30..3f7e4eb 100644
--- a/include/asm-blackfin/bits/shadow.h
+++ b/include/asm-blackfin/bits/shadow.h
@@ -78,7 +78,6 @@ static inline void xnarch_setup_mayday_page(void *page)
         * 45 e1 0c 00    R5.H = 0xc
         * 05 e1 2b 02    R5.L = 0x22b
         * 05 32          P0 = R5
-        * 05 60          R5 = 0x0 (X)
         * a0 00          EXCPT 0x0
         * cd ef          <bug opcode>
         *
@@ -95,7 +94,6 @@ static inline void xnarch_setup_mayday_page(void *page)
                        u16 imm;
                } load_r5l;
                u16 mov_p0;
-               u16 clear_r5;
                u16 syscall;
                u16 bug;
        } code = {
@@ -108,7 +106,6 @@ static inline void xnarch_setup_mayday_page(void *page)
                        .imm = __xn_mux_code(0, __xn_sys_mayday) & 0xffff
                },
                .mov_p0 = 0x3205,
-               .clear_r5 = 0x6005,
                .syscall = 0x00a0,
                .bug = BFIN_BUG_OPCODE,
        };
diff --git a/include/asm-blackfin/syscall.h b/include/asm-blackfin/syscall.h
index 8f8a7a2..8352625 100644
--- a/include/asm-blackfin/syscall.h
+++ b/include/asm-blackfin/syscall.h
@@ -49,7 +49,6 @@
 #define __xn_reg_arg3(regs)   ((regs)->r2)
 #define __xn_reg_arg4(regs)   ((regs)->r3)
 #define __xn_reg_arg5(regs)   ((regs)->r4)
-#define __xn_reg_sigp(regs)   ((regs)->r5)
 
 #define __xn_reg_mux_p(regs)        ((__xn_reg_mux(regs) & 0xffff) == 
__xn_sys_mux)
 #define __xn_mux_id(regs)           ((__xn_reg_mux(regs) >> 24) & 0xff)
@@ -90,45 +89,30 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
  * services in kernel space.
  */
 
-#define __emit_syscall0(muxcode, sigp, ...)                            \
+#define __emit_syscall0(muxcode, ...)                                  \
 ({                                                                     \
        long __res;                                                     \
        __asm__ __volatile__ (                                          \
                "excpt 0;\n\t"                                          \
                : "=q0" (__res)                                         \
                : "qA"  (muxcode),                                      \
-                 "q5"  ((long)(sigp)),                                 \
                  ##__VA_ARGS__                                         \
                : "CC", "memory");                                      \
        __res;                                                          \
 })
-#define __emit_syscall1(muxcode, sigp, a1, ...)                                
\
-       __emit_syscall0(muxcode, sigp, "q0"(a1), ##__VA_ARGS__)
-#define __emit_syscall2(muxcode, sigp, a1, a2, ...)                    \
-       __emit_syscall1(muxcode, sigp, a1, "q1"(a2), ##__VA_ARGS__)
-#define __emit_syscall3(muxcode, sigp, a1, a2, a3, ...)                        
\
-       __emit_syscall2(muxcode, sigp, a1, a2, "q2"(a3), ##__VA_ARGS__)
-#define __emit_syscall4(muxcode, sigp, a1, a2, a3, a4, ...)            \
-       __emit_syscall3(muxcode, sigp, a1, a2, a3, "q3"(a4), ##__VA_ARGS__)
-#define __emit_syscall5(muxcode, sigp, a1, a2, a3, a4, a5, ...)                
\
-       __emit_syscall4(muxcode, sigp, a1, a2, a3, a4, "q4"(a5), ##__VA_ARGS__)
-
-#define XENOMAI_DO_SYSCALL_INNER(nr, shifted_id, op, args...)          \
-    __emit_syscall##nr(__xn_mux_code(shifted_id,op), ##args)
+#define __emit_syscall1(muxcode, a1, ...)                              \
+       __emit_syscall0(muxcode, "q0"(a1), ##__VA_ARGS__)
+#define __emit_syscall2(muxcode, a1, a2, ...)                          \
+       __emit_syscall1(muxcode, a1, "q1"(a2), ##__VA_ARGS__)
+#define __emit_syscall3(muxcode, a1, a2, a3, ...)                      \
+       __emit_syscall2(muxcode, a1, a2, "q2"(a3), ##__VA_ARGS__)
+#define __emit_syscall4(muxcode, a1, a2, a3, a4, ...)                  \
+       __emit_syscall3(muxcode, a1, a2, a3, "q3"(a4), ##__VA_ARGS__)
+#define __emit_syscall5(muxcode, a1, a2, a3, a4, a5, ...)              \
+       __emit_syscall4(muxcode, a1, a2, a3, a4, "q4"(a5), ##__VA_ARGS__)
 
 #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__;                                                \
-       })
+    __emit_syscall##nr(__xn_mux_code(shifted_id,op), ##args)
 
 #define XENOMAI_SYSCALL0(op)                XENOMAI_DO_SYSCALL(0,0,op)
 #define XENOMAI_SYSCALL1(op,a1)             XENOMAI_DO_SYSCALL(1,0,op,a1)
@@ -137,8 +121,6 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
 #define XENOMAI_SYSCALL4(op,a1,a2,a3,a4)    
XENOMAI_DO_SYSCALL(4,0,op,a1,a2,a3,a4)
 #define XENOMAI_SYSCALL5(op,a1,a2,a3,a4,a5) 
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)
 #define XENOMAI_SKINCALL1(id,op,a1)             XENOMAI_DO_SYSCALL(1,id,op,a1)


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

Reply via email to