qemu/include/exec/user/abitypes.h
<<
>>
Prefs
   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
  72