Updated maccess
This commit is contained in:
parent
022aff7331
commit
fdb4b9681b
2 changed files with 47 additions and 51 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue