diff --git a/src/machdep/m68k.h b/src/machdep/m68k.h index 049125ae..84015cf3 100644 --- a/src/machdep/m68k.h +++ b/src/machdep/m68k.h @@ -144,6 +144,8 @@ struct flag_struct uae_u32 x; }; +extern struct flag_struct regflags; + #define FLAGVAL_Q 0x08000000 #define FLAGVAL_V 0x10000000 #define FLAGVAL_C 0x20000000 diff --git a/src/machdep/maccess.h b/src/machdep/maccess.h index 24309232..4f796021 100644 --- a/src/machdep/maccess.h +++ b/src/machdep/maccess.h @@ -9,9 +9,30 @@ #ifndef MACCESS_UAE_H #define MACCESS_UAE_H +#define ALIGN_POINTER_TO32(p) ((~(unsigned long)(p)) & 3) + + #ifdef ARMV6_ASSEMBLY + + STATIC_INLINE uae_u32 do_get_mem_long(uae_u32 *a) + { + uae_u32 v; + __asm__ ( + "ldr %[v], [%[a]] \n\t" + "rev %[v], %[v] \n\t" + : [v] "=r" (v) : [a] "r" (a) ); + return v; + } + #else +STATIC_INLINE uae_u32 do_get_mem_long(uae_u32 *a) +{ + uae_u8 *b = (uae_u8 *)a; + return (*b << 24) | (*(b + 1) << 16) | (*(b + 2) << 8) | (*(b + 3)); +} +#endif + #ifdef ARMV6_ASSEMBLY -STATIC_INLINE uae_u16 do_get_mem_word(uae_u16 *_GCCRES_ a) +STATIC_INLINE uae_u16 do_get_mem_word(uae_u16 *a) { uae_u16 v; __asm__ ( @@ -21,61 +42,20 @@ STATIC_INLINE uae_u16 do_get_mem_word(uae_u16 *_GCCRES_ a) return v; } #else -STATIC_INLINE uae_u16 do_get_mem_word(uae_u16 *_GCCRES_ a) +STATIC_INLINE uae_u16 do_get_mem_word(uae_u16 *a) { uae_u8 *b = (uae_u8 *)a; - return (*b << 8) | (*(b+1)); } #endif - -#ifdef ARMV6_ASSEMBLY - -STATIC_INLINE uae_u32 do_get_mem_long(uae_u32 *a) -{ - uae_u32 v; - __asm__ ( - "ldr %[v], [%[a]] \n\t" - "rev %[v], %[v] \n\t" - : [v] "=r" (v) : [a] "r" (a) ); - return v; -} -#else -STATIC_INLINE uae_u32 do_get_mem_long(uae_u32 *_GCCRES_ a) -{ - uae_u8 *b = (uae_u8 *)a; - - return (*b << 24) | (*(b+1) << 16) | (*(b+2) << 8) | (*(b+3)); -} -#endif - - -STATIC_INLINE uae_u8 do_get_mem_byte(uae_u8 *_GCCRES_ a) +STATIC_INLINE uae_u8 do_get_mem_byte(uae_u8 *a) { return *a; } #ifdef ARMV6_ASSEMBLY -STATIC_INLINE void do_put_mem_word(uae_u16 *_GCCRES_ a, uae_u16 v) -{ - __asm__ ( - "rev16 r2, %[v] \n\t" - "strh r2, [%[a]] \n\t" - : : [v] "r" (v), [a] "r" (a) : "r2", "memory" ); -} -#else -STATIC_INLINE void do_put_mem_word(uae_u16 *_GCCRES_ a, uae_u16 v) -{ - uae_u8 *b = (uae_u8 *)a; - - *b = v >> 8; - *(b+1) = v; -} -#endif - -#ifdef ARMV6_ASSEMBLY -STATIC_INLINE void do_put_mem_long(uae_u32 *_GCCRES_ a, uae_u32 v) +STATIC_INLINE void do_put_mem_long(uae_u32 *a, uae_u32 v) { __asm__ ( "rev r2, %[v] \n\t" @@ -83,7 +63,7 @@ STATIC_INLINE void do_put_mem_long(uae_u32 *_GCCRES_ a, uae_u32 v) : : [v] "r" (v), [a] "r" (a) : "r2", "memory" ); } #else -STATIC_INLINE void do_put_mem_long(uae_u32 *_GCCRES_ a, uae_u32 v) +STATIC_INLINE void do_put_mem_long(uae_u32 *a, uae_u32 v) { uae_u8 *b = (uae_u8 *)a; @@ -94,7 +74,25 @@ STATIC_INLINE void do_put_mem_long(uae_u32 *_GCCRES_ a, uae_u32 v) } #endif -STATIC_INLINE void do_put_mem_byte(uae_u8 *_GCCRES_ a, uae_u8 v) +#ifdef ARMV6_ASSEMBLY +STATIC_INLINE void do_put_mem_word(uae_u16 *a, uae_u16 v) +{ + __asm__ ( + "rev16 r2, %[v] \n\t" + "strh r2, [%[a]] \n\t" + : : [v] "r" (v), [a] "r" (a) : "r2", "memory" ); +} +#else +STATIC_INLINE void do_put_mem_word(uae_u16 *a, uae_u16 v) +{ + uae_u8 *b = (uae_u8 *)a; + + *b = v >> 8; + *(b + 1) = v; +} +#endif + +STATIC_INLINE void do_put_mem_byte(uae_u8 *a, uae_u8 v) { *a = v; } @@ -102,8 +100,4 @@ STATIC_INLINE void do_put_mem_byte(uae_u8 *_GCCRES_ a, uae_u8 v) #define call_mem_get_func(func, addr) ((*func)(addr)) #define call_mem_put_func(func, addr, v) ((*func)(addr, v)) -#undef MD_HAVE_MEM_1_FUNCS - -#define ALIGN_POINTER_TO32(p) ((~(unsigned long)(p)) & 3) - #endif