mirror of https://gitee.com/openkylin/qemu.git
include/exec: Move cpu_signal_handler declaration
There is nothing target specific about this. The implementation is host specific, but the declaration is 100% common. Reviewed-By: Warner Losh <imp@bsdimp.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
2c3e83f92d
commit
8b1d5b3c35
|
@ -662,6 +662,19 @@ static inline tb_page_addr_t get_page_addr_code_hostp(CPUArchState *env,
|
|||
}
|
||||
return addr;
|
||||
}
|
||||
|
||||
/**
|
||||
* cpu_signal_handler
|
||||
* @signum: host signal number
|
||||
* @pinfo: host siginfo_t
|
||||
* @puc: host ucontext_t
|
||||
*
|
||||
* To be called from the SIGBUS and SIGSEGV signal handler to inform the
|
||||
* virtual cpu of exceptions. Returns true if the signal was handled by
|
||||
* the virtual CPU.
|
||||
*/
|
||||
int cpu_signal_handler(int signum, void *pinfo, void *puc);
|
||||
|
||||
#else
|
||||
static inline void mmap_lock(void) {}
|
||||
static inline void mmap_unlock(void) {}
|
||||
|
|
|
@ -287,7 +287,6 @@ void alpha_cpu_do_unaligned_access(CPUState *cpu, vaddr addr,
|
|||
int mmu_idx, uintptr_t retaddr);
|
||||
|
||||
#define cpu_list alpha_cpu_list
|
||||
#define cpu_signal_handler cpu_alpha_signal_handler
|
||||
|
||||
typedef CPUAlphaState CPUArchState;
|
||||
typedef AlphaCPU ArchCPU;
|
||||
|
@ -440,11 +439,6 @@ void alpha_translate_init(void);
|
|||
#define CPU_RESOLVING_TYPE TYPE_ALPHA_CPU
|
||||
|
||||
void alpha_cpu_list(void);
|
||||
/* you can call this signal handler from your SIGBUS and SIGSEGV
|
||||
signal handlers to inform the virtual CPU of exceptions. non zero
|
||||
is returned if the signal was handled by the virtual CPU. */
|
||||
int cpu_alpha_signal_handler(int host_signum, void *pinfo,
|
||||
void *puc);
|
||||
bool alpha_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
|
||||
MMUAccessType access_type, int mmu_idx,
|
||||
bool probe, uintptr_t retaddr);
|
||||
|
|
|
@ -1121,12 +1121,6 @@ static inline bool is_a64(CPUARMState *env)
|
|||
return env->aarch64;
|
||||
}
|
||||
|
||||
/* you can call this signal handler from your SIGBUS and SIGSEGV
|
||||
signal handlers to inform the virtual CPU of exceptions. non zero
|
||||
is returned if the signal was handled by the virtual CPU. */
|
||||
int cpu_arm_signal_handler(int host_signum, void *pinfo,
|
||||
void *puc);
|
||||
|
||||
/**
|
||||
* pmu_op_start/finish
|
||||
* @env: CPUARMState
|
||||
|
@ -3017,7 +3011,6 @@ bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync);
|
|||
|
||||
#define TYPE_ARM_HOST_CPU "host-" TYPE_ARM_CPU
|
||||
|
||||
#define cpu_signal_handler cpu_arm_signal_handler
|
||||
#define cpu_list arm_cpu_list
|
||||
|
||||
/* ARM has the following "translation regimes" (as the ARM ARM calls them):
|
||||
|
|
|
@ -175,7 +175,6 @@ static inline void set_avr_feature(CPUAVRState *env, int feature)
|
|||
}
|
||||
|
||||
#define cpu_list avr_cpu_list
|
||||
#define cpu_signal_handler cpu_avr_signal_handler
|
||||
#define cpu_mmu_index avr_cpu_mmu_index
|
||||
|
||||
static inline int avr_cpu_mmu_index(CPUAVRState *env, bool ifetch)
|
||||
|
@ -187,7 +186,6 @@ void avr_cpu_tcg_init(void);
|
|||
|
||||
void avr_cpu_list(void);
|
||||
int cpu_avr_exec(CPUState *cpu);
|
||||
int cpu_avr_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
int avr_cpu_memory_rw_debug(CPUState *cs, vaddr address, uint8_t *buf,
|
||||
int len, bool is_write);
|
||||
|
||||
|
|
|
@ -199,12 +199,6 @@ int crisv10_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg);
|
|||
int cris_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg);
|
||||
int cris_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
|
||||
|
||||
/* you can call this signal handler from your SIGBUS and SIGSEGV
|
||||
signal handlers to inform the virtual CPU of exceptions. non zero
|
||||
is returned if the signal was handled by the virtual CPU. */
|
||||
int cpu_cris_signal_handler(int host_signum, void *pinfo,
|
||||
void *puc);
|
||||
|
||||
void cris_initialize_tcg(void);
|
||||
void cris_initialize_crisv10_tcg(void);
|
||||
|
||||
|
@ -250,8 +244,6 @@ enum {
|
|||
#define CRIS_CPU_TYPE_NAME(name) (name CRIS_CPU_TYPE_SUFFIX)
|
||||
#define CPU_RESOLVING_TYPE TYPE_CRIS_CPU
|
||||
|
||||
#define cpu_signal_handler cpu_cris_signal_handler
|
||||
|
||||
/* MMU modes definitions */
|
||||
#define MMU_USER_IDX 1
|
||||
static inline int cpu_mmu_index (CPUCRISState *env, bool ifetch)
|
||||
|
|
|
@ -129,9 +129,6 @@ typedef struct HexagonCPU {
|
|||
|
||||
#include "cpu_bits.h"
|
||||
|
||||
#define cpu_signal_handler cpu_hexagon_signal_handler
|
||||
int cpu_hexagon_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
|
||||
static inline void cpu_get_tb_cpu_state(CPUHexagonState *env, target_ulong *pc,
|
||||
target_ulong *cs_base, uint32_t *flags)
|
||||
{
|
||||
|
|
|
@ -319,9 +319,6 @@ static inline void cpu_hppa_change_prot_id(CPUHPPAState *env) { }
|
|||
void cpu_hppa_change_prot_id(CPUHPPAState *env);
|
||||
#endif
|
||||
|
||||
#define cpu_signal_handler cpu_hppa_signal_handler
|
||||
|
||||
int cpu_hppa_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
hwaddr hppa_cpu_get_phys_page_debug(CPUState *cs, vaddr addr);
|
||||
int hppa_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg);
|
||||
int hppa_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
|
||||
|
|
|
@ -1947,12 +1947,6 @@ void cpu_x86_frstor(CPUX86State *s, target_ulong ptr, int data32);
|
|||
void cpu_x86_fxsave(CPUX86State *s, target_ulong ptr);
|
||||
void cpu_x86_fxrstor(CPUX86State *s, target_ulong ptr);
|
||||
|
||||
/* you can call this signal handler from your SIGBUS and SIGSEGV
|
||||
signal handlers to inform the virtual CPU of exceptions. non zero
|
||||
is returned if the signal was handled by the virtual CPU. */
|
||||
int cpu_x86_signal_handler(int host_signum, void *pinfo,
|
||||
void *puc);
|
||||
|
||||
/* cpu.c */
|
||||
void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
|
||||
uint32_t vendor2, uint32_t vendor3);
|
||||
|
@ -2020,7 +2014,6 @@ uint64_t cpu_get_tsc(CPUX86State *env);
|
|||
#define TARGET_DEFAULT_CPU_TYPE X86_CPU_TYPE_NAME("qemu32")
|
||||
#endif
|
||||
|
||||
#define cpu_signal_handler cpu_x86_signal_handler
|
||||
#define cpu_list x86_cpu_list
|
||||
|
||||
/* MMU modes definitions */
|
||||
|
|
|
@ -177,13 +177,6 @@ int m68k_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
|
|||
|
||||
void m68k_tcg_init(void);
|
||||
void m68k_cpu_init_gdb(M68kCPU *cpu);
|
||||
/*
|
||||
* you can call this signal handler from your SIGBUS and SIGSEGV
|
||||
* signal handlers to inform the virtual CPU of exceptions. non zero
|
||||
* is returned if the signal was handled by the virtual CPU.
|
||||
*/
|
||||
int cpu_m68k_signal_handler(int host_signum, void *pinfo,
|
||||
void *puc);
|
||||
uint32_t cpu_m68k_get_ccr(CPUM68KState *env);
|
||||
void cpu_m68k_set_ccr(CPUM68KState *env, uint32_t);
|
||||
void cpu_m68k_set_sr(CPUM68KState *env, uint32_t);
|
||||
|
@ -563,7 +556,6 @@ enum {
|
|||
#define M68K_CPU_TYPE_NAME(model) model M68K_CPU_TYPE_SUFFIX
|
||||
#define CPU_RESOLVING_TYPE TYPE_M68K_CPU
|
||||
|
||||
#define cpu_signal_handler cpu_m68k_signal_handler
|
||||
#define cpu_list m68k_cpu_list
|
||||
|
||||
/* MMU modes definitions */
|
||||
|
|
|
@ -385,16 +385,9 @@ static inline void mb_cpu_write_msr(CPUMBState *env, uint32_t val)
|
|||
}
|
||||
|
||||
void mb_tcg_init(void);
|
||||
/* you can call this signal handler from your SIGBUS and SIGSEGV
|
||||
signal handlers to inform the virtual CPU of exceptions. non zero
|
||||
is returned if the signal was handled by the virtual CPU. */
|
||||
int cpu_mb_signal_handler(int host_signum, void *pinfo,
|
||||
void *puc);
|
||||
|
||||
#define CPU_RESOLVING_TYPE TYPE_MICROBLAZE_CPU
|
||||
|
||||
#define cpu_signal_handler cpu_mb_signal_handler
|
||||
|
||||
/* MMU modes definitions */
|
||||
#define MMU_NOMMU_IDX 0
|
||||
#define MMU_KERNEL_IDX 1
|
||||
|
|
|
@ -1193,7 +1193,6 @@ struct MIPSCPU {
|
|||
|
||||
void mips_cpu_list(void);
|
||||
|
||||
#define cpu_signal_handler cpu_mips_signal_handler
|
||||
#define cpu_list mips_cpu_list
|
||||
|
||||
extern void cpu_wrdsp(uint32_t rs, uint32_t mask_num, CPUMIPSState *env);
|
||||
|
@ -1277,8 +1276,6 @@ enum {
|
|||
*/
|
||||
#define CPU_INTERRUPT_WAKE CPU_INTERRUPT_TGT_INT_0
|
||||
|
||||
int cpu_mips_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
|
||||
#define MIPS_CPU_TYPE_SUFFIX "-" TYPE_MIPS_CPU
|
||||
#define MIPS_CPU_TYPE_NAME(model) model MIPS_CPU_TYPE_SUFFIX
|
||||
#define CPU_RESOLVING_TYPE TYPE_MIPS_CPU
|
||||
|
|
|
@ -156,8 +156,6 @@ extern const VMStateDescription vmstate_mips_cpu;
|
|||
|
||||
#endif /* !CONFIG_USER_ONLY */
|
||||
|
||||
#define cpu_signal_handler cpu_mips_signal_handler
|
||||
|
||||
static inline bool cpu_mips_hw_interrupts_enabled(CPUMIPSState *env)
|
||||
{
|
||||
return (env->CP0_Status & (1 << CP0St_IE)) &&
|
||||
|
|
|
@ -193,7 +193,6 @@ struct Nios2CPU {
|
|||
|
||||
void nios2_tcg_init(void);
|
||||
void nios2_cpu_do_interrupt(CPUState *cs);
|
||||
int cpu_nios2_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
void dump_mmu(CPUNios2State *env);
|
||||
void nios2_cpu_dump_state(CPUState *cpu, FILE *f, int flags);
|
||||
hwaddr nios2_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
|
||||
|
@ -206,7 +205,6 @@ void do_nios2_semihosting(CPUNios2State *env);
|
|||
#define CPU_RESOLVING_TYPE TYPE_NIOS2_CPU
|
||||
|
||||
#define cpu_gen_code cpu_nios2_gen_code
|
||||
#define cpu_signal_handler cpu_nios2_signal_handler
|
||||
|
||||
#define CPU_SAVE_VERSION 1
|
||||
|
||||
|
|
|
@ -320,11 +320,9 @@ void openrisc_translate_init(void);
|
|||
bool openrisc_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
|
||||
MMUAccessType access_type, int mmu_idx,
|
||||
bool probe, uintptr_t retaddr);
|
||||
int cpu_openrisc_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
int print_insn_or1k(bfd_vma addr, disassemble_info *info);
|
||||
|
||||
#define cpu_list cpu_openrisc_list
|
||||
#define cpu_signal_handler cpu_openrisc_signal_handler
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
extern const VMStateDescription vmstate_openrisc_cpu;
|
||||
|
|
|
@ -1278,12 +1278,6 @@ extern const VMStateDescription vmstate_ppc_cpu;
|
|||
|
||||
/*****************************************************************************/
|
||||
void ppc_translate_init(void);
|
||||
/*
|
||||
* you can call this signal handler from your SIGBUS and SIGSEGV
|
||||
* signal handlers to inform the virtual CPU of exceptions. non zero
|
||||
* is returned if the signal was handled by the virtual CPU.
|
||||
*/
|
||||
int cpu_ppc_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
bool ppc_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
|
||||
MMUAccessType access_type, int mmu_idx,
|
||||
bool probe, uintptr_t retaddr);
|
||||
|
@ -1371,7 +1365,6 @@ int ppc_dcr_write(ppc_dcr_t *dcr_env, int dcrn, uint32_t val);
|
|||
#define POWERPC_CPU_TYPE_NAME(model) model POWERPC_CPU_TYPE_SUFFIX
|
||||
#define CPU_RESOLVING_TYPE TYPE_POWERPC_CPU
|
||||
|
||||
#define cpu_signal_handler cpu_ppc_signal_handler
|
||||
#define cpu_list ppc_cpu_list
|
||||
|
||||
/* MMU modes definitions */
|
||||
|
|
|
@ -356,7 +356,6 @@ void riscv_cpu_do_transaction_failed(CPUState *cs, hwaddr physaddr,
|
|||
char *riscv_isa_string(RISCVCPU *cpu);
|
||||
void riscv_cpu_list(void);
|
||||
|
||||
#define cpu_signal_handler riscv_cpu_signal_handler
|
||||
#define cpu_list riscv_cpu_list
|
||||
#define cpu_mmu_index riscv_cpu_mmu_index
|
||||
|
||||
|
@ -372,7 +371,6 @@ void riscv_cpu_set_rdtime_fn(CPURISCVState *env, uint64_t (*fn)(uint32_t),
|
|||
void riscv_cpu_set_mode(CPURISCVState *env, target_ulong newpriv);
|
||||
|
||||
void riscv_translate_init(void);
|
||||
int riscv_cpu_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
void QEMU_NORETURN riscv_raise_exception(CPURISCVState *env,
|
||||
uint32_t exception, uintptr_t pc);
|
||||
|
||||
|
|
|
@ -134,13 +134,9 @@ int rx_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
|
|||
hwaddr rx_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
|
||||
|
||||
void rx_translate_init(void);
|
||||
int cpu_rx_signal_handler(int host_signum, void *pinfo,
|
||||
void *puc);
|
||||
|
||||
void rx_cpu_list(void);
|
||||
void rx_cpu_unpack_psw(CPURXState *env, uint32_t psw, int rte);
|
||||
|
||||
#define cpu_signal_handler cpu_rx_signal_handler
|
||||
#define cpu_list rx_cpu_list
|
||||
|
||||
#include "exec/cpu-all.h"
|
||||
|
|
|
@ -809,13 +809,6 @@ void s390_set_qemu_cpu_model(uint16_t type, uint8_t gen, uint8_t ec_ga,
|
|||
#define S390_CPU_TYPE_NAME(name) (name S390_CPU_TYPE_SUFFIX)
|
||||
#define CPU_RESOLVING_TYPE TYPE_S390_CPU
|
||||
|
||||
/* you can call this signal handler from your SIGBUS and SIGSEGV
|
||||
signal handlers to inform the virtual CPU of exceptions. non zero
|
||||
is returned if the signal was handled by the virtual CPU. */
|
||||
int cpu_s390x_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
#define cpu_signal_handler cpu_s390x_signal_handler
|
||||
|
||||
|
||||
/* interrupt.c */
|
||||
#define RA_IGNORED 0
|
||||
void s390_program_interrupt(CPUS390XState *env, uint32_t code, uintptr_t ra);
|
||||
|
|
|
@ -213,8 +213,6 @@ void superh_cpu_do_unaligned_access(CPUState *cpu, vaddr addr,
|
|||
int mmu_idx, uintptr_t retaddr);
|
||||
|
||||
void sh4_translate_init(void);
|
||||
int cpu_sh4_signal_handler(int host_signum, void *pinfo,
|
||||
void *puc);
|
||||
bool superh_cpu_tlb_fill(CPUState *cs, vaddr address, int size,
|
||||
MMUAccessType access_type, int mmu_idx,
|
||||
bool probe, uintptr_t retaddr);
|
||||
|
@ -250,7 +248,6 @@ void cpu_load_tlb(CPUSH4State * env);
|
|||
#define SUPERH_CPU_TYPE_NAME(model) model SUPERH_CPU_TYPE_SUFFIX
|
||||
#define CPU_RESOLVING_TYPE TYPE_SUPERH_CPU
|
||||
|
||||
#define cpu_signal_handler cpu_sh4_signal_handler
|
||||
#define cpu_list sh4_cpu_list
|
||||
|
||||
/* MMU modes definitions */
|
||||
|
|
|
@ -648,13 +648,11 @@ hwaddr cpu_get_phys_page_nofault(CPUSPARCState *env, target_ulong addr,
|
|||
int mmu_idx);
|
||||
#endif
|
||||
#endif
|
||||
int cpu_sparc_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
|
||||
#define SPARC_CPU_TYPE_SUFFIX "-" TYPE_SPARC_CPU
|
||||
#define SPARC_CPU_TYPE_NAME(model) model SPARC_CPU_TYPE_SUFFIX
|
||||
#define CPU_RESOLVING_TYPE TYPE_SPARC_CPU
|
||||
|
||||
#define cpu_signal_handler cpu_sparc_signal_handler
|
||||
#define cpu_list sparc_cpu_list
|
||||
|
||||
/* MMU modes definitions */
|
||||
|
|
|
@ -362,7 +362,6 @@ void fpu_set_state(CPUTriCoreState *env);
|
|||
|
||||
void tricore_cpu_list(void);
|
||||
|
||||
#define cpu_signal_handler cpu_tricore_signal_handler
|
||||
#define cpu_list tricore_cpu_list
|
||||
|
||||
static inline int cpu_mmu_index(CPUTriCoreState *env, bool ifetch)
|
||||
|
@ -377,7 +376,6 @@ typedef TriCoreCPU ArchCPU;
|
|||
|
||||
void cpu_state_reset(CPUTriCoreState *s);
|
||||
void tricore_tcg_init(void);
|
||||
int cpu_tricore_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
|
||||
static inline void cpu_get_tb_cpu_state(CPUTriCoreState *env, target_ulong *pc,
|
||||
target_ulong *cs_base, uint32_t *flags)
|
||||
|
|
|
@ -584,7 +584,6 @@ void xtensa_cpu_do_unaligned_access(CPUState *cpu, vaddr addr,
|
|||
MMUAccessType access_type,
|
||||
int mmu_idx, uintptr_t retaddr);
|
||||
|
||||
#define cpu_signal_handler cpu_xtensa_signal_handler
|
||||
#define cpu_list xtensa_cpu_list
|
||||
|
||||
#define XTENSA_CPU_TYPE_SUFFIX "-" TYPE_XTENSA_CPU
|
||||
|
@ -613,7 +612,6 @@ void check_interrupts(CPUXtensaState *s);
|
|||
void xtensa_irq_init(CPUXtensaState *env);
|
||||
qemu_irq *xtensa_get_extints(CPUXtensaState *env);
|
||||
qemu_irq xtensa_get_runstall(CPUXtensaState *env);
|
||||
int cpu_xtensa_signal_handler(int host_signum, void *pinfo, void *puc);
|
||||
void xtensa_cpu_list(void);
|
||||
void xtensa_sync_window_from_phys(CPUXtensaState *env);
|
||||
void xtensa_sync_phys_from_window(CPUXtensaState *env);
|
||||
|
|
Loading…
Reference in New Issue