abitypes.h (1915B)
1#ifndef EXEC_USER_ABITYPES_H 2#define EXEC_USER_ABITYPES_H 3 4#include "cpu.h" 5 6#ifdef TARGET_ABI32 7#define TARGET_ABI_BITS 32 8#else 9#define TARGET_ABI_BITS TARGET_LONG_BITS 10#endif 11 12#ifdef TARGET_M68K 13#define ABI_INT_ALIGNMENT 2 14#define ABI_LONG_ALIGNMENT 2 15#define ABI_LLONG_ALIGNMENT 2 16#endif 17 18#if (defined(TARGET_I386) && !defined(TARGET_X86_64)) || defined(TARGET_SH4) 19#define ABI_LLONG_ALIGNMENT 4 20#endif 21 22#ifndef ABI_SHORT_ALIGNMENT 23#define ABI_SHORT_ALIGNMENT 2 24#endif 25#ifndef ABI_INT_ALIGNMENT 26#define ABI_INT_ALIGNMENT 4 27#endif 28#ifndef ABI_LONG_ALIGNMENT 29#define ABI_LONG_ALIGNMENT (TARGET_ABI_BITS / 8) 30#endif 31#ifndef ABI_LLONG_ALIGNMENT 32#define ABI_LLONG_ALIGNMENT 8 33#endif 34 35typedef int16_t abi_short __attribute__ ((aligned(ABI_SHORT_ALIGNMENT))); 36typedef uint16_t abi_ushort __attribute__((aligned(ABI_SHORT_ALIGNMENT))); 37typedef int32_t abi_int __attribute__((aligned(ABI_INT_ALIGNMENT))); 38typedef uint32_t abi_uint __attribute__((aligned(ABI_INT_ALIGNMENT))); 39typedef int64_t abi_llong __attribute__((aligned(ABI_LLONG_ALIGNMENT))); 40typedef uint64_t abi_ullong __attribute__((aligned(ABI_LLONG_ALIGNMENT))); 41 42#ifdef TARGET_ABI32 43typedef uint32_t abi_ulong __attribute__((aligned(ABI_LONG_ALIGNMENT))); 44typedef int32_t abi_long __attribute__((aligned(ABI_LONG_ALIGNMENT))); 45#define TARGET_ABI_FMT_lx "%08x" 46#define TARGET_ABI_FMT_ld "%d" 47#define TARGET_ABI_FMT_lu "%u" 48 49static inline abi_ulong tswapal(abi_ulong v) 50{ 51 return tswap32(v); 52} 53 54#else 55typedef target_ulong abi_ulong __attribute__((aligned(ABI_LONG_ALIGNMENT))); 56typedef target_long abi_long __attribute__((aligned(ABI_LONG_ALIGNMENT))); 57#define TARGET_ABI_FMT_lx TARGET_FMT_lx 58#define TARGET_ABI_FMT_ld TARGET_FMT_ld 59#define TARGET_ABI_FMT_lu TARGET_FMT_lu 60/* for consistency, define ABI32 too */ 61#if TARGET_ABI_BITS == 32 62#define TARGET_ABI32 1 63#endif 64 65static inline abi_ulong tswapal(abi_ulong v) 66{ 67 return tswapl(v); 68} 69 70#endif 71#endif