/* Helper file for declaring TCG helper functions.
Should be included at the start and end of target-foo/helper.h.
Targets should use DEF_HELPER_N and DEF_HELPER_FLAGS_N to declare helper
functions. Names should be specified without the helper_ prefix, and
the return and argument types specified. 3 basic types are understood
(i32, i64 and ptr). Additional aliases are provided for convenience and
to match the types used by the C helper implementation.
helper functions. THis will ensure that function prototypes are
consistent. In addition it should be included an extra two times for
helper.c, defining:
GEN_HELPER 1 to produce op generation functions (gen_helper_*)
GEN_HELPER 2 to do runtime registration helper functions.
*/
#ifndef DEF_HELPER_H
/* Some types that make sense in C, but not for TCG. */
#if TARGET_LONG_BITS == 32
#else
#endif
#define dh_alias_void void
#ifdef VBOX
# if ARCH_BITS == 32
# else
# endif
#endif
#define dh_ctype_int int
#define dh_ctype_ptr void *
#define dh_ctype_void void
#ifdef VBOX
# if ARCH_BITS == 32
# else
# endif
#endif
/* We can't use glue() here because it falls foul of C preprocessor
recursive expansion rules. */
#define dh_retvar_decl0_void void
#define dh_retvar_decl_void
#define dh_is_64bit_void 0
#define dh_is_64bit_i32 0
#define dh_is_signed_void 0
#define dh_is_signed_i32 0
#define dh_is_signed_i64 0
#define dh_is_signed_f32 0
#define dh_is_signed_f64 0
#define dh_is_signed_tl 0
/* ??? This is highly specific to the host cpu. There are even special
extension instructions that may be required, e.g. ia64's addp4. But
for now we don't support any 64-bit targets with 32-bit pointers. */
#define dh_is_signed_ptr 0
#define dh_sizemask(t, n) \
#define dh_arg(t, n) \
dh_sizemask(t, n)
#endif /* DEF_HELPER_H */
#ifndef GEN_HELPER
/* Function prototypes. */
/* Gen functions. */
{ \
int sizemask; \
}
{ \
int sizemask = 0; \
dh_sizemask(ret, 0); \
}
{ \
int sizemask = 0; \
dh_sizemask(ret, 0); \
}
{ \
int sizemask = 0; \
dh_sizemask(ret, 0); \
}
{ \
int sizemask = 0; \
dh_sizemask(ret, 0); \
}
/* Register helpers. */
/* Undefine macros. */
#endif