* device/include/pic16/signal.h: avoid multiline inline
authortecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 28 Feb 2009 15:23:35 +0000 (15:23 +0000)
committertecodev <tecodev@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 28 Feb 2009 15:23:35 +0000 (15:23 +0000)
  assembler statements in macros, addresses #2644965

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@5393 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
device/include/pic16/signal.h

index 4ab485f1d6ae0cf910e591d7274d18754ab8f98c..077d2dccbd06ace8ccc406a9638aef99fd039d51 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-28 Raphael Neider <rneider AT web.de>
+
+       * device/include/pic16/signal.h: avoid multiline inline
+         assembler statements in macros, addresses #2644965
+
 2009-02-27 Raphael Neider <rneider AT web.de>
 
        * device/include/pic16/pic18f[24][3456]k20.h,
index 5e67f12b84bdfa55b5fa2c8a2506fab457cb44f3..2453709094946d39b3bb2d6e1fc87a10bd4da4e8 100644 (file)
 #define SIG_USB                SIG_USBIF
 
 /* define name to be the interrupt handler for interrupt #vecno */
-#define DEF_ABSVECTOR(vecno, name)                  \
-void __ivt_ ## name(void) __interrupt vecno __naked \
-{                                        \
-  __asm                                \n\
-    goto        _ ## name              \n\
-  __endasm;                              \
+#define DEF_ABSVECTOR(vecno, name)                      \
+void __ivt_ ## name(void) __interrupt(vecno) __naked    \
+{                                                       \
+  __asm goto _ ## name __endasm;                        \
 }
 
 /* Define name to be the handler for high priority interrupts,
@@ -75,8 +73,7 @@ void __ivt_ ## name(void) __interrupt vecno __naked \
 #define DEF_INTHIGH(name)                \
 DEF_ABSVECTOR(1, name)                   \
 void name(void) __naked __interrupt      \
-{                                        \
-  __asm
+{
   
 /* Define name to be the handler for high priority interrupts,
  * use like this:
@@ -98,13 +95,11 @@ void name(void) __naked __interrupt      \
 #define DEF_INTLOW(name)                 \
 DEF_ABSVECTOR(2, name)                   \
 void name(void) __naked __interrupt      \
-{                                        \
-  __asm
+{
 
 /* finish an interrupt handler definition */
-#define END_DEF                          \
-    retfie                             \n\
-  __endasm;                              \
+#define END_DEF                                 \
+  __asm retfie __endasm;                        \
 }
 
 /* Declare handler to be the handler function for the given signal.
@@ -115,9 +110,9 @@ void name(void) __naked __interrupt      \
  *            Use DEF_HANDLER2(SIG_xxx, SIGxxxIE, handler) instead!
  * To be used together with DEF_INTHIGH and DEF_INTLOW.
  */
-#define DEF_HANDLER(sig, handler)        \
-    btfsc       sig                    \n\
-    goto        _ ## handler
+#define DEF_HANDLER(sig, handler)               \
+    __asm btfsc sig __endasm;                   \
+    __asm goto  _ ## handler __endasm;
 
 /* Declare handler to be the handler function for the given signal.
  * sig should be one of SIG_xxx from above,
@@ -126,11 +121,11 @@ void name(void) __naked __interrupt      \
  * or SIGHANDLERNAKED(handler).
  * To be used together with DEF_INTHIGH and DEF_INTLOW.
  */
-#define DEF_HANDLER2(sig1,sig2,handler)          \
-    btfss       sig1                           \n\
-    bra         $+8                            \n\
-    btfsc       sig2                           \n\
-    goto        _ ## handler
+#define DEF_HANDLER2(sig1,sig2,handler)         \
+    __asm btfss sig1 __endasm;                  \
+    __asm bra   $+8 __endasm;                   \
+    __asm btfsc sig2 __endasm;                  \
+    __asm goto  _ ## handler __endasm;
 
 /* Declare or define an interrupt handler function. */
 #define SIGHANDLER(handler)             void handler (void) __interrupt