simpler solution to regparm problem
authornotaz <notasas@gmail.com>
Wed, 14 Aug 2013 23:46:16 +0000 (02:46 +0300)
committernotaz <notasas@gmail.com>
Thu, 15 Aug 2013 00:27:14 +0000 (03:27 +0300)
pico/32x/sh2soc.c
pico/pico_int.h

index bdd07a0..373dd47 100644 (file)
@@ -294,7 +294,7 @@ void REGPARM(3) sh2_peripheral_write16(u32 a, u32 d, SH2 *sh2)
   r[(a / 2) ^ 1] = d;
 }
 
-void sh2_peripheral_write32(u32 a, u32 d, SH2 *sh2)
+void REGPARM(3) sh2_peripheral_write32(u32 a, u32 d, SH2 *sh2)
 {
   u32 *r = sh2->peri_regs;
   elprintf(EL_32XP, "%csh2 peri w32 [%08x] %08x @%06x",
index 339d1bf..fa99c5b 100644 (file)
@@ -796,9 +796,9 @@ void p32x_timers_do(unsigned int m68k_slice);
 unsigned int sh2_peripheral_read8(unsigned int a, SH2 *sh2);\r
 unsigned int sh2_peripheral_read16(unsigned int a, SH2 *sh2);\r
 unsigned int sh2_peripheral_read32(unsigned int a, SH2 *sh2);\r
-void sh2_peripheral_write8(unsigned int a, unsigned int d, SH2 *sh2);\r
-void sh2_peripheral_write16(unsigned int a, unsigned int d, SH2 *sh2);\r
-void sh2_peripheral_write32(unsigned int a, unsigned int d, SH2 *sh2);\r
+void REGPARM(3) sh2_peripheral_write8(unsigned int a, unsigned int d, SH2 *sh2);\r
+void REGPARM(3) sh2_peripheral_write16(unsigned int a, unsigned int d, SH2 *sh2);\r
+void REGPARM(3) sh2_peripheral_write32(unsigned int a, unsigned int d, SH2 *sh2);\r
 \r
 #else\r
 #define Pico32xInit()\r
@@ -926,7 +926,7 @@ void pevt_dump(void);
 #define cdprintf(x...)\r
 #endif\r
 \r
-#ifdef __i386__\r
+#if defined(__GNUC__) && defined(__i386__)\r
 #define REGPARM(x) __attribute__((regparm(x)))\r
 #else\r
 #define REGPARM(x)\r