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