From a9c85a1e9467de5de177e250d667b80f261bf763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Fr=C3=B6schle?= Date: Fri, 19 Apr 2013 06:10:25 +0000 Subject: [PATCH] fixed hex numbers and clobber registers in inline asm statements --- sources/interrupts.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/sources/interrupts.c b/sources/interrupts.c index beb94be..90531f6 100644 --- a/sources/interrupts.c +++ b/sources/interrupts.c @@ -41,11 +41,12 @@ register_handler(uint8_t priority, uint8_t intr, void (*func)()) // Make sure priority level is high, before changing registers __asm__ volatile ( - "move.w %%sr,-(%%sp)\n\t" \ - "move.w #$2700,%%sr\n\t" \ - : \ + "move.w sr,d0\n\t" \ + "move.w d0,-(sp) \n\t" \ + "move.w #0x2700,sr\n\t" \ : \ : \ + : "d0","memory" \ ); if( intr < 32 ) @@ -58,11 +59,11 @@ register_handler(uint8_t priority, uint8_t intr, void (*func)()) // Return the saved priority level __asm__ volatile ( - "move.w (%%sp)+,%%d2\n\t" \ - "move.w %%d2,%%sr\n\t" - : \ + "move.w (sp)+,d2\n\t" \ + "move.w d2,sr\n\t" : \ : \ + : "d2","memory" \ ); return 0;