Re: [RFC PATCH 1/7] include/exec: Move cpu_signal_handler declaration
On Mon, Sep 13, 2021 at 4:05 PM Richard Henderson < richard.hender...@linaro.org> wrote: > There is nothing target specific about this. The implementation > is host specific, but the declaration is 100% common. > > Reviewed-by: Alistair Francis > Signed-off-by: Richard Henderson > --- > include/exec/exec-all.h | 13 + > target/alpha/cpu.h | 6 -- > target/arm/cpu.h| 7 --- > target/avr/cpu.h| 2 -- > target/cris/cpu.h | 8 > target/hexagon/cpu.h| 3 --- > target/hppa/cpu.h | 3 --- > target/i386/cpu.h | 7 --- > target/m68k/cpu.h | 8 > target/microblaze/cpu.h | 7 --- > target/mips/cpu.h | 3 --- > target/mips/internal.h | 2 -- > target/nios2/cpu.h | 2 -- > target/openrisc/cpu.h | 2 -- > target/ppc/cpu.h| 7 --- > target/riscv/cpu.h | 2 -- > target/rx/cpu.h | 4 > target/s390x/cpu.h | 7 --- > target/sh4/cpu.h| 3 --- > target/sparc/cpu.h | 2 -- > target/tricore/cpu.h| 2 -- > target/xtensa/cpu.h | 2 -- > 22 files changed, 13 insertions(+), 89 deletions(-) > Reviewed-By: Warner Losh Warner > diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h > index 5d1b6d80fb..9d5987ba04 100644 > --- a/include/exec/exec-all.h > +++ b/include/exec/exec-all.h > @@ -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) {} > diff --git a/target/alpha/cpu.h b/target/alpha/cpu.h > index 4e993bd15b..ce9ec32199 100644 > --- a/target/alpha/cpu.h > +++ b/target/alpha/cpu.h > @@ -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); > diff --git a/target/arm/cpu.h b/target/arm/cpu.h > index cfd755cff9..6c78957e54 100644 > --- a/target/arm/cpu.h > +++ b/target/arm/cpu.h > @@ -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 > @@ -3015,7 +3009,6 @@ bool write_cpustate_to_list(ARMCPU *cpu, bool > kvm_sync); > #define ARM_CPU_TYPE_NAME(name) (name ARM_CPU_TYPE_SUFFIX) > #define CPU_RESOLVING_TYPE 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): > diff --git a/target/avr/cpu.h b/target/avr/cpu.h > index 93e3faa0a9..dceacf3cd7 100644 > --- a/target/avr/cpu.h > +++ b/target/avr/cpu.h > @@ -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); > > diff --git a/target/cris/cpu.h b/target/cris/cpu.h > index be021899ae..6603565f83 100644 > --- a/target/cris/cpu.h > +++ b/target/cris/cpu.h > @@ -199,12 +199,6 @@ int crisv10
Re: [RFC PATCH 1/7] include/exec: Move cpu_signal_handler declaration
On 9/14/21 12:05 AM, Richard Henderson wrote: > There is nothing target specific about this. The implementation > is host specific, but the declaration is 100% common. Same as v3 ;) https://www.mail-archive.com/qemu-devel@nongnu.org/msg830412.html Reviewed-by: Philippe Mathieu-Daudé > Reviewed-by: Alistair Francis > Signed-off-by: Richard Henderson > --- > include/exec/exec-all.h | 13 + > target/alpha/cpu.h | 6 -- > target/arm/cpu.h| 7 --- > target/avr/cpu.h| 2 -- > target/cris/cpu.h | 8 > target/hexagon/cpu.h| 3 --- > target/hppa/cpu.h | 3 --- > target/i386/cpu.h | 7 --- > target/m68k/cpu.h | 8 > target/microblaze/cpu.h | 7 --- > target/mips/cpu.h | 3 --- > target/mips/internal.h | 2 -- > target/nios2/cpu.h | 2 -- > target/openrisc/cpu.h | 2 -- > target/ppc/cpu.h| 7 --- > target/riscv/cpu.h | 2 -- > target/rx/cpu.h | 4 > target/s390x/cpu.h | 7 --- > target/sh4/cpu.h| 3 --- > target/sparc/cpu.h | 2 -- > target/tricore/cpu.h| 2 -- > target/xtensa/cpu.h | 2 -- > 22 files changed, 13 insertions(+), 89 deletions(-)
[RFC PATCH 1/7] 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: Alistair Francis Signed-off-by: Richard Henderson --- include/exec/exec-all.h | 13 + target/alpha/cpu.h | 6 -- target/arm/cpu.h| 7 --- target/avr/cpu.h| 2 -- target/cris/cpu.h | 8 target/hexagon/cpu.h| 3 --- target/hppa/cpu.h | 3 --- target/i386/cpu.h | 7 --- target/m68k/cpu.h | 8 target/microblaze/cpu.h | 7 --- target/mips/cpu.h | 3 --- target/mips/internal.h | 2 -- target/nios2/cpu.h | 2 -- target/openrisc/cpu.h | 2 -- target/ppc/cpu.h| 7 --- target/riscv/cpu.h | 2 -- target/rx/cpu.h | 4 target/s390x/cpu.h | 7 --- target/sh4/cpu.h| 3 --- target/sparc/cpu.h | 2 -- target/tricore/cpu.h| 2 -- target/xtensa/cpu.h | 2 -- 22 files changed, 13 insertions(+), 89 deletions(-) diff --git a/include/exec/exec-all.h b/include/exec/exec-all.h index 5d1b6d80fb..9d5987ba04 100644 --- a/include/exec/exec-all.h +++ b/include/exec/exec-all.h @@ -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) {} diff --git a/target/alpha/cpu.h b/target/alpha/cpu.h index 4e993bd15b..ce9ec32199 100644 --- a/target/alpha/cpu.h +++ b/target/alpha/cpu.h @@ -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); diff --git a/target/arm/cpu.h b/target/arm/cpu.h index cfd755cff9..6c78957e54 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -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 @@ -3015,7 +3009,6 @@ bool write_cpustate_to_list(ARMCPU *cpu, bool kvm_sync); #define ARM_CPU_TYPE_NAME(name) (name ARM_CPU_TYPE_SUFFIX) #define CPU_RESOLVING_TYPE 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): diff --git a/target/avr/cpu.h b/target/avr/cpu.h index 93e3faa0a9..dceacf3cd7 100644 --- a/target/avr/cpu.h +++ b/target/avr/cpu.h @@ -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); diff --git a/target/cris/cpu.h b/target/cris/cpu.h index be021899ae..6603565f83 100644 --- a/target/cris/cpu.h +++ b/target/cris/cpu.h @@ -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