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