malc wrote: > On Fri, 28 Nov 2008, Jan Kiszka wrote: > >> Introduce __noreturn attribute and attach it to cpu_loop_exit as well as >> interrupt/exception helpers for i386. This avoids a bunch of gcc4 >> warnings. > > ISO/IEC 9899:1990 > > 7.1.3 > -- All identifiers that begin with an underscore and > either an uppercase letter or another underscore are > always reserved for any use. ...but commonly used in practice (which is no excuse to do so here, just an explanation). Given that we have __hidden already, I just followed the existing pattern. > > Breaking the standard is what brings us the joys of recently (re)posted > patch for NetBSD and [u]intXX fun. I have no problem with calling it 'noreturn' instead. Jan -----------> Introduce noreturn attribute and attach it to cpu_loop_exit as well as interrupt/exception helpers for i386. This avoids a bunch of gcc4 warnings. Signed-off-by: Jan Kiszka --- exec-all.h | 5 ++++- target-i386/exec.h | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/exec-all.h b/exec-all.h index ca97f57..4934932 100644 --- a/exec-all.h +++ b/exec-all.h @@ -20,6 +20,9 @@ #ifndef _EXEC_ALL_H_ #define _EXEC_ALL_H_ + +#define noreturn __attribute__ ((__noreturn__)) + /* allow to see translation results - the slowdown should be negligible, so we leave it */ #define DEBUG_DISAS @@ -82,7 +85,7 @@ TranslationBlock *tb_gen_code(CPUState *env, target_ulong pc, target_ulong cs_base, int flags, int cflags); void cpu_exec_init(CPUState *env); -void cpu_loop_exit(void); +void noreturn cpu_loop_exit(void); int page_unprotect(target_ulong address, unsigned long pc, void *puc); void tb_invalidate_phys_page_range(target_phys_addr_t start, target_phys_addr_t end, int is_cpu_write_access); diff --git a/target-i386/exec.h b/target-i386/exec.h index 3663166..b35f08b 100644 --- a/target-i386/exec.h +++ b/target-i386/exec.h @@ -67,10 +67,10 @@ void do_interrupt(int intno, int is_int, int error_code, target_ulong next_eip, int is_hw); void do_interrupt_user(int intno, int is_int, int error_code, target_ulong next_eip); -void raise_interrupt(int intno, int is_int, int error_code, - int next_eip_addend); -void raise_exception_err(int exception_index, int error_code); -void raise_exception(int exception_index); +void noreturn raise_interrupt(int intno, int is_int, int error_code, + int next_eip_addend); +void noreturn raise_exception_err(int exception_index, int error_code); +void noreturn raise_exception(int exception_index); void do_smm_enter(void); /* n must be a constant to be efficient */