diff options
author | Stefan Weil <sw@weilnetz.de> | 2012-03-18 23:16:02 +0100 |
---|---|---|
committer | Blue Swirl <blauwirbel@gmail.com> | 2012-03-24 13:01:46 +0000 |
commit | 1367ff497aa5200970e555bf4cce07467c3e3652 (patch) | |
tree | 1416ca614680ea51fe2180b72709cc5abc1a06d5 /def-helper.h | |
parent | 4daa187d49a9d242d0bda1f35e190486112915f6 (diff) | |
download | qemu-1367ff497aa5200970e555bf4cce07467c3e3652.zip qemu-1367ff497aa5200970e555bf4cce07467c3e3652.tar.gz qemu-1367ff497aa5200970e555bf4cce07467c3e3652.tar.bz2 |
Add support for target helper functions which don't return
Most functions which handle exceptions don't return.
With a compiler attribute (added by QEMU_NORETURN),
gcc can optimize the code.
Signed-off-by: Stefan Weil <sw@weilnetz.de>
Reviewed-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'def-helper.h')
-rw-r--r-- | def-helper.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/def-helper.h b/def-helper.h index 0e70c31..b98ff69 100644 --- a/def-helper.h +++ b/def-helper.h @@ -39,6 +39,7 @@ #endif #define dh_alias_ptr ptr #define dh_alias_void void +#define dh_alias_noreturn noreturn #define dh_alias_env ptr #define dh_alias(t) glue(dh_alias_, t) @@ -52,36 +53,42 @@ #define dh_ctype_tl target_ulong #define dh_ctype_ptr void * #define dh_ctype_void void +#define dh_ctype_noreturn void QEMU_NORETURN #define dh_ctype_env CPUArchState * #define dh_ctype(t) dh_ctype_##t /* 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_decl0_noreturn void #define dh_retvar_decl0_i32 TCGv_i32 retval #define dh_retvar_decl0_i64 TCGv_i64 retval #define dh_retvar_decl0_ptr TCGv_ptr retval #define dh_retvar_decl0(t) glue(dh_retvar_decl0_, dh_alias(t)) #define dh_retvar_decl_void +#define dh_retvar_decl_noreturn #define dh_retvar_decl_i32 TCGv_i32 retval, #define dh_retvar_decl_i64 TCGv_i64 retval, #define dh_retvar_decl_ptr TCGv_ptr retval, #define dh_retvar_decl(t) glue(dh_retvar_decl_, dh_alias(t)) #define dh_retvar_void TCG_CALL_DUMMY_ARG +#define dh_retvar_noreturn TCG_CALL_DUMMY_ARG #define dh_retvar_i32 GET_TCGV_i32(retval) #define dh_retvar_i64 GET_TCGV_i64(retval) #define dh_retvar_ptr GET_TCGV_ptr(retval) #define dh_retvar(t) glue(dh_retvar_, dh_alias(t)) #define dh_is_64bit_void 0 +#define dh_is_64bit_noreturn 0 #define dh_is_64bit_i32 0 #define dh_is_64bit_i64 1 #define dh_is_64bit_ptr (TCG_TARGET_REG_BITS == 64) #define dh_is_64bit(t) glue(dh_is_64bit_, dh_alias(t)) #define dh_is_signed_void 0 +#define dh_is_signed_noreturn 0 #define dh_is_signed_i32 0 #define dh_is_signed_s32 1 #define dh_is_signed_i64 0 |