[Xenomai-git] Mike Frysinger : blackfin: clean up syscall assembly

2010-10-07 Thread GIT version control
Module: xenomai-head
Branch: master
Commit: b29dadf3e1ea53b4f4d50e2ecb2123ce759eb187
URL:
http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=b29dadf3e1ea53b4f4d50e2ecb2123ce759eb187

Author: Mike Frysinger vap...@gentoo.org
Date:   Mon Sep 27 18:09:03 2010 -0400

blackfin: clean up syscall assembly

The Blackfin assembly for making syscalls is inefficient, so rewrite it
to use the asm constraints that gcc provides to load values into specific
registers.  The generated assembly now looks much nicer, and the header
no longer duplicates the same syscall assembly multiple times.

Signed-off-by: Mike Frysinger vap...@gentoo.org

---

 include/asm-blackfin/syscall.h |  129 +---
 1 files changed, 16 insertions(+), 113 deletions(-)

diff --git a/include/asm-blackfin/syscall.h b/include/asm-blackfin/syscall.h
index 9420dc8..8f8a7a2 100644
--- a/include/asm-blackfin/syscall.h
+++ b/include/asm-blackfin/syscall.h
@@ -90,125 +90,28 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
  * services in kernel space.
  */
 
-#define __emit_syscall0(muxcode, sigp) \
+#define __emit_syscall0(muxcode, sigp, ...)\
 ({ \
long __res; \
__asm__ __volatile__ (  \
-   r5=%2;\n\t\
-   p0=%1;\n\t\
excpt 0;\n\t  \
-   %0=r0;\n\t\
-   : =da (__res) \
-   : d (muxcode),\
- a ((long)(sigp))\
-   : CC,R5,P0,memory); \
-   __res;  \
-})
-
-#define __emit_syscall1(muxcode, sigp, a1) \
-({ \
-   long __res; \
-   __asm__ __volatile__ (  \
-   r5=%3;\n\t\
-   r0=%2;\n\t\
-   p0=%1;\n\t\
-   excpt 0;\n\t  \
-   %0=r0;\n\t\
-   : =da (__res) \
-   : d (muxcode),\
- a ((long)(a1)), \
- a ((long)(sigp))\
-   : CC,R0,R5,P0,memory);\
-   __res;  \
-})
-
-#define __emit_syscall2(muxcode, sigp, a1, a2) \
-({ \
-   long __res; \
-   __asm__ __volatile__ (  \
-   r5=%4;\n\t\
-   r1=%3;\n\t\
-   r0=%2;\n\t\
-   p0=%1;\n\t\
-   excpt 0;\n\t  \
-   %0=r0;\n\t\
-   : =da (__res) \
-   : d (muxcode),\
- a ((long)(a1)), \
- a ((long)(a2)), \
- a ((long)(sigp))\
-   : CC,R0,R1,R5,P0,memory);   \
-   __res;  \
-})
-
-#define __emit_syscall3(muxcode, sigp, a1, a2, a3) \
-({ \
-   long __res; \
-   __asm__ __volatile__ (  \
-   r5=%5;\n\t\
-   r2=%4;\n\t\
-   r1=%3;\n\t\
-   r0=%2;\n\t\

[Xenomai-git] Mike Frysinger : blackfin: clean up syscall assembly

2010-10-06 Thread GIT version control
Module: xenomai-rpm
Branch: for-upstream
Commit: b29dadf3e1ea53b4f4d50e2ecb2123ce759eb187
URL:
http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=b29dadf3e1ea53b4f4d50e2ecb2123ce759eb187

Author: Mike Frysinger vap...@gentoo.org
Date:   Mon Sep 27 18:09:03 2010 -0400

blackfin: clean up syscall assembly

The Blackfin assembly for making syscalls is inefficient, so rewrite it
to use the asm constraints that gcc provides to load values into specific
registers.  The generated assembly now looks much nicer, and the header
no longer duplicates the same syscall assembly multiple times.

Signed-off-by: Mike Frysinger vap...@gentoo.org

---

 include/asm-blackfin/syscall.h |  129 +---
 1 files changed, 16 insertions(+), 113 deletions(-)

diff --git a/include/asm-blackfin/syscall.h b/include/asm-blackfin/syscall.h
index 9420dc8..8f8a7a2 100644
--- a/include/asm-blackfin/syscall.h
+++ b/include/asm-blackfin/syscall.h
@@ -90,125 +90,28 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
  * services in kernel space.
  */
 
-#define __emit_syscall0(muxcode, sigp) \
+#define __emit_syscall0(muxcode, sigp, ...)\
 ({ \
long __res; \
__asm__ __volatile__ (  \
-   r5=%2;\n\t\
-   p0=%1;\n\t\
excpt 0;\n\t  \
-   %0=r0;\n\t\
-   : =da (__res) \
-   : d (muxcode),\
- a ((long)(sigp))\
-   : CC,R5,P0,memory); \
-   __res;  \
-})
-
-#define __emit_syscall1(muxcode, sigp, a1) \
-({ \
-   long __res; \
-   __asm__ __volatile__ (  \
-   r5=%3;\n\t\
-   r0=%2;\n\t\
-   p0=%1;\n\t\
-   excpt 0;\n\t  \
-   %0=r0;\n\t\
-   : =da (__res) \
-   : d (muxcode),\
- a ((long)(a1)), \
- a ((long)(sigp))\
-   : CC,R0,R5,P0,memory);\
-   __res;  \
-})
-
-#define __emit_syscall2(muxcode, sigp, a1, a2) \
-({ \
-   long __res; \
-   __asm__ __volatile__ (  \
-   r5=%4;\n\t\
-   r1=%3;\n\t\
-   r0=%2;\n\t\
-   p0=%1;\n\t\
-   excpt 0;\n\t  \
-   %0=r0;\n\t\
-   : =da (__res) \
-   : d (muxcode),\
- a ((long)(a1)), \
- a ((long)(a2)), \
- a ((long)(sigp))\
-   : CC,R0,R1,R5,P0,memory);   \
-   __res;  \
-})
-
-#define __emit_syscall3(muxcode, sigp, a1, a2, a3) \
-({ \
-   long __res; \
-   __asm__ __volatile__ (  \
-   r5=%5;\n\t\
-   r2=%4;\n\t\
-   r1=%3;\n\t\
-   r0=%2;\n\t   

[Xenomai-git] Mike Frysinger : blackfin: clean up syscall assembly

2010-10-04 Thread GIT version control
Module: xenomai-rpm
Branch: for-upstream
Commit: 31959f8727f0635c8c4bd87c271bee96da803e1c
URL:
http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=31959f8727f0635c8c4bd87c271bee96da803e1c

Author: Mike Frysinger vap...@gentoo.org
Date:   Mon Sep 27 18:09:03 2010 -0400

blackfin: clean up syscall assembly

The Blackfin assembly for making syscalls is inefficient, so rewrite it
to use the asm constraints that gcc provides to load values into specific
registers.  The generated assembly now looks much nicer, and the header
no longer duplicates the same syscall assembly multiple times.

Signed-off-by: Mike Frysinger vap...@gentoo.org

---

 include/asm-blackfin/syscall.h |  129 +---
 1 files changed, 16 insertions(+), 113 deletions(-)

diff --git a/include/asm-blackfin/syscall.h b/include/asm-blackfin/syscall.h
index 9420dc8..8f8a7a2 100644
--- a/include/asm-blackfin/syscall.h
+++ b/include/asm-blackfin/syscall.h
@@ -90,125 +90,28 @@ static inline int __xn_interrupted_p(struct pt_regs *regs)
  * services in kernel space.
  */
 
-#define __emit_syscall0(muxcode, sigp) \
+#define __emit_syscall0(muxcode, sigp, ...)\
 ({ \
long __res; \
__asm__ __volatile__ (  \
-   r5=%2;\n\t\
-   p0=%1;\n\t\
excpt 0;\n\t  \
-   %0=r0;\n\t\
-   : =da (__res) \
-   : d (muxcode),\
- a ((long)(sigp))\
-   : CC,R5,P0,memory); \
-   __res;  \
-})
-
-#define __emit_syscall1(muxcode, sigp, a1) \
-({ \
-   long __res; \
-   __asm__ __volatile__ (  \
-   r5=%3;\n\t\
-   r0=%2;\n\t\
-   p0=%1;\n\t\
-   excpt 0;\n\t  \
-   %0=r0;\n\t\
-   : =da (__res) \
-   : d (muxcode),\
- a ((long)(a1)), \
- a ((long)(sigp))\
-   : CC,R0,R5,P0,memory);\
-   __res;  \
-})
-
-#define __emit_syscall2(muxcode, sigp, a1, a2) \
-({ \
-   long __res; \
-   __asm__ __volatile__ (  \
-   r5=%4;\n\t\
-   r1=%3;\n\t\
-   r0=%2;\n\t\
-   p0=%1;\n\t\
-   excpt 0;\n\t  \
-   %0=r0;\n\t\
-   : =da (__res) \
-   : d (muxcode),\
- a ((long)(a1)), \
- a ((long)(a2)), \
- a ((long)(sigp))\
-   : CC,R0,R1,R5,P0,memory);   \
-   __res;  \
-})
-
-#define __emit_syscall3(muxcode, sigp, a1, a2, a3) \
-({ \
-   long __res; \
-   __asm__ __volatile__ (  \
-   r5=%5;\n\t\
-   r2=%4;\n\t\
-   r1=%3;\n\t\
-   r0=%2;\n\t