From 37f26922dd9d4e9546fe9330d476b7527a117c0e Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Sat, 24 Feb 2018 01:23:15 -0500 Subject: [PATCH] qemu-common: push cpu.h inclusion out of qemu-common.h Backports commit 33c11879fd422b759483ed25fef133ea900ea8d7 from qemu --- qemu/cpus.c | 2 ++ qemu/header_gen.py | 1 + qemu/hw/arm/tosa.c | 2 +- qemu/hw/arm/virt.c | 1 + qemu/hw/i386/pc.c | 1 + qemu/hw/i386/pc_piix.c | 1 + qemu/hw/intc/apic.c | 1 + qemu/hw/intc/apic_common.c | 2 ++ qemu/hw/m68k/dummy_m68k.c | 3 ++- qemu/hw/mips/addr.c | 2 ++ qemu/hw/mips/cputimer.c | 2 ++ qemu/include/exec/hwaddr.h | 5 +++-- qemu/include/hw/boards.h | 1 + qemu/include/hw/hw.h | 8 ++++---- qemu/include/qemu-common.h | 5 ----- qemu/ioport.c | 2 ++ qemu/memory.c | 2 ++ qemu/mips.h | 1 + qemu/mips64.h | 1 + qemu/mips64el.h | 1 + qemu/mipsel.h | 1 + qemu/target-arm/unicorn_aarch64.c | 4 ++-- qemu/target-arm/unicorn_arm.c | 3 ++- qemu/target-i386/unicorn.c | 3 ++- qemu/target-m68k/unicorn.c | 4 ++-- qemu/target-mips/cpu.h | 19 ++++--------------- qemu/target-mips/helper.c | 18 ++++++++++++++++++ qemu/target-mips/unicorn.c | 3 ++- qemu/target-sparc/unicorn.c | 4 ++-- qemu/target-sparc/unicorn64.c | 3 ++- qemu/tcg/optimize.c | 1 + qemu/tcg/tcg-op.c | 2 ++ qemu/tcg/tcg.h | 1 + 33 files changed, 72 insertions(+), 38 deletions(-) diff --git a/qemu/cpus.c b/qemu/cpus.c index c39a7578..6df60cb7 100644 --- a/qemu/cpus.c +++ b/qemu/cpus.c @@ -26,6 +26,8 @@ /* Needed early for CONFIG_BSD etc. */ #include "qemu/osdep.h" +#include "qemu-common.h" +#include "cpu.h" #include "sysemu/sysemu.h" #include "sysemu/cpus.h" #include "qemu/thread.h" diff --git a/qemu/header_gen.py b/qemu/header_gen.py index 9257d7c8..39a73e52 100644 --- a/qemu/header_gen.py +++ b/qemu/header_gen.py @@ -3213,6 +3213,7 @@ mips_symbols = ( 'mips_cpu_register_types', 'cpu_mips_init', 'cpu_state_reset', + 'do_raise_exception_err', 'helper_msa_andi_b', 'helper_msa_ori_b', 'helper_msa_nori_b', diff --git a/qemu/hw/arm/tosa.c b/qemu/hw/arm/tosa.c index 212456a4..d121c46f 100644 --- a/qemu/hw/arm/tosa.c +++ b/qemu/hw/arm/tosa.c @@ -13,12 +13,12 @@ #include "qemu/osdep.h" #include "qapi/error.h" +#include "cpu.h" #include "hw/hw.h" #include "hw/arm/arm.h" #include "hw/boards.h" #include "exec/address-spaces.h" - static int tosa_init(struct uc_struct *uc, MachineState *machine) { if (uc->mode & UC_MODE_MCLASS) { diff --git a/qemu/hw/arm/virt.c b/qemu/hw/arm/virt.c index 81c068d9..ab65080c 100644 --- a/qemu/hw/arm/virt.c +++ b/qemu/hw/arm/virt.c @@ -34,6 +34,7 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu-common.h" +#include "cpu.h" #include "hw/arm/arm.h" #include "hw/boards.h" #include "exec/address-spaces.h" diff --git a/qemu/hw/i386/pc.c b/qemu/hw/i386/pc.c index 8f3c9205..96da1fb6 100644 --- a/qemu/hw/i386/pc.c +++ b/qemu/hw/i386/pc.c @@ -24,6 +24,7 @@ /* Modified for Unicorn Engine by Nguyen Anh Quynh, 2015 */ #include "qemu/osdep.h" +#include "cpu.h" #include "hw/hw.h" #include "hw/i386/pc.h" #include "sysemu/cpus.h" diff --git a/qemu/hw/i386/pc_piix.c b/qemu/hw/i386/pc_piix.c index 9a3fde1a..ad7d54c9 100644 --- a/qemu/hw/i386/pc_piix.c +++ b/qemu/hw/i386/pc_piix.c @@ -24,6 +24,7 @@ /* Modified for Unicorn Engine by Nguyen Anh Quynh, 2015 */ #include "qemu/osdep.h" +#include "cpu.h" #include "hw/i386/pc.h" #include "hw/boards.h" #include "exec/address-spaces.h" diff --git a/qemu/hw/intc/apic.c b/qemu/hw/intc/apic.c index 2c73db02..cc1ceb0e 100644 --- a/qemu/hw/intc/apic.c +++ b/qemu/hw/intc/apic.c @@ -18,6 +18,7 @@ */ #include "qemu/osdep.h" #include "qemu-common.h" +#include "cpu.h" #include "qemu/thread.h" #include "hw/i386/apic_internal.h" #include "hw/i386/apic.h" diff --git a/qemu/hw/intc/apic_common.c b/qemu/hw/intc/apic_common.c index 9d75a67a..7d4247f9 100644 --- a/qemu/hw/intc/apic_common.c +++ b/qemu/hw/intc/apic_common.c @@ -18,6 +18,8 @@ * License along with this library; if not, see */ #include "qemu/osdep.h" +#include "qemu-common.h" +#include "cpu.h" #include "qapi/error.h" #include "hw/i386/apic.h" #include "hw/i386/apic_internal.h" diff --git a/qemu/hw/m68k/dummy_m68k.c b/qemu/hw/m68k/dummy_m68k.c index d1558579..793bf2f3 100644 --- a/qemu/hw/m68k/dummy_m68k.c +++ b/qemu/hw/m68k/dummy_m68k.c @@ -9,12 +9,13 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh, 2015 */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/hw.h" #include "hw/m68k/m68k.h" #include "hw/boards.h" #include "exec/address-spaces.h" - /* Board init. */ static int dummy_m68k_init(struct uc_struct *uc, MachineState *machine) { diff --git a/qemu/hw/mips/addr.c b/qemu/hw/mips/addr.c index ff3b9526..287a6de4 100644 --- a/qemu/hw/mips/addr.c +++ b/qemu/hw/mips/addr.c @@ -20,6 +20,8 @@ * THE SOFTWARE. */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/hw.h" #include "hw/mips/cpudevs.h" diff --git a/qemu/hw/mips/cputimer.c b/qemu/hw/mips/cputimer.c index 1ffa418d..db573ca9 100644 --- a/qemu/hw/mips/cputimer.c +++ b/qemu/hw/mips/cputimer.c @@ -20,6 +20,8 @@ * THE SOFTWARE. */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/hw.h" #include "hw/mips/cpudevs.h" #include "qemu/timer.h" diff --git a/qemu/include/exec/hwaddr.h b/qemu/include/exec/hwaddr.h index 8ac83941..eab2604e 100644 --- a/qemu/include/exec/hwaddr.h +++ b/qemu/include/exec/hwaddr.h @@ -3,12 +3,13 @@ #ifndef HWADDR_H #define HWADDR_H +#include +#include "unicorn/platform.h" + #define HWADDR_BITS 64 /* hwaddr is the type of a physical address (its size can be different from 'target_ulong'). */ -#include "unicorn/platform.h" - typedef uint64_t hwaddr; #define HWADDR_MAX UINT64_MAX #define TARGET_FMT_plx "%016" PRIx64 diff --git a/qemu/include/hw/boards.h b/qemu/include/hw/boards.h index e0afde01..786a4ba2 100644 --- a/qemu/include/hw/boards.h +++ b/qemu/include/hw/boards.h @@ -7,6 +7,7 @@ #include "sysemu/accel.h" #include "hw/qdev.h" #include "qom/object.h" +#include "qom/cpu.h" #include "uc_priv.h" typedef int QEMUMachineInitFunc(struct uc_struct *uc, MachineState *ms); diff --git a/qemu/include/hw/hw.h b/qemu/include/hw/hw.h index 54b25b6b..e2e7f11b 100644 --- a/qemu/include/hw/hw.h +++ b/qemu/include/hw/hw.h @@ -2,12 +2,12 @@ #ifndef QEMU_HW_H #define QEMU_HW_H -#include "qemu-common.h" - -#if !defined(CONFIG_USER_ONLY) && !defined(NEED_CPU_H) -#include "exec/cpu-common.h" +#ifdef CONFIG_USER_ONLY +#error Cannot include hw/hw.h from user emulation #endif +#include "qemu-common.h" +#include "exec/cpu-common.h" #include "exec/ioport.h" #include "qemu/log.h" diff --git a/qemu/include/qemu-common.h b/qemu/include/qemu-common.h index 8a3fa009..6734bcbc 100644 --- a/qemu/include/qemu-common.h +++ b/qemu/include/qemu-common.h @@ -25,11 +25,6 @@ #include "unicorn/platform.h" -/* FIXME: Remove NEED_CPU_H. */ -#ifdef NEED_CPU_H -#include "cpu.h" -#endif /* !defined(NEED_CPU_H) */ - #define qemu_isalnum(c) isalnum((unsigned char)(c)) #define qemu_isalpha(c) isalpha((unsigned char)(c)) #define qemu_iscntrl(c) iscntrl((unsigned char)(c)) diff --git a/qemu/ioport.c b/qemu/ioport.c index 6a38a511..87293f83 100644 --- a/qemu/ioport.c +++ b/qemu/ioport.c @@ -28,6 +28,8 @@ /* Modified for Unicorn Engine by Nguyen Anh Quynh, 2015 */ #include "qemu/osdep.h" +#include "qemu-common.h" +#include "cpu.h" #include "exec/ioport.h" #include "exec/memory.h" #include "exec/address-spaces.h" diff --git a/qemu/memory.c b/qemu/memory.c index 754ffc59..959a4613 100644 --- a/qemu/memory.c +++ b/qemu/memory.c @@ -16,6 +16,8 @@ /* Modified for Unicorn Engine by Nguyen Anh Quynh, 2015 */ #include "qemu/osdep.h" +#include "qemu-common.h" +#include "cpu.h" #include "qapi/error.h" #include "qemu-common.h" #include "exec/memory.h" diff --git a/qemu/mips.h b/qemu/mips.h index 31eef32d..8d30c696 100644 --- a/qemu/mips.h +++ b/qemu/mips.h @@ -3160,6 +3160,7 @@ #define mips_cpu_register_types mips_cpu_register_types_mips #define cpu_mips_init cpu_mips_init_mips #define cpu_state_reset cpu_state_reset_mips +#define do_raise_exception_err do_raise_exception_err_mips #define helper_msa_andi_b helper_msa_andi_b_mips #define helper_msa_ori_b helper_msa_ori_b_mips #define helper_msa_nori_b helper_msa_nori_b_mips diff --git a/qemu/mips64.h b/qemu/mips64.h index d44c78c8..41a1eb2b 100644 --- a/qemu/mips64.h +++ b/qemu/mips64.h @@ -3160,6 +3160,7 @@ #define mips_cpu_register_types mips_cpu_register_types_mips64 #define cpu_mips_init cpu_mips_init_mips64 #define cpu_state_reset cpu_state_reset_mips64 +#define do_raise_exception_err do_raise_exception_err_mips64 #define helper_msa_andi_b helper_msa_andi_b_mips64 #define helper_msa_ori_b helper_msa_ori_b_mips64 #define helper_msa_nori_b helper_msa_nori_b_mips64 diff --git a/qemu/mips64el.h b/qemu/mips64el.h index faa6c7aa..c0c1857f 100644 --- a/qemu/mips64el.h +++ b/qemu/mips64el.h @@ -3160,6 +3160,7 @@ #define mips_cpu_register_types mips_cpu_register_types_mips64el #define cpu_mips_init cpu_mips_init_mips64el #define cpu_state_reset cpu_state_reset_mips64el +#define do_raise_exception_err do_raise_exception_err_mips64el #define helper_msa_andi_b helper_msa_andi_b_mips64el #define helper_msa_ori_b helper_msa_ori_b_mips64el #define helper_msa_nori_b helper_msa_nori_b_mips64el diff --git a/qemu/mipsel.h b/qemu/mipsel.h index ac108c7e..73474c88 100644 --- a/qemu/mipsel.h +++ b/qemu/mipsel.h @@ -3160,6 +3160,7 @@ #define mips_cpu_register_types mips_cpu_register_types_mipsel #define cpu_mips_init cpu_mips_init_mipsel #define cpu_state_reset cpu_state_reset_mipsel +#define do_raise_exception_err do_raise_exception_err_mipsel #define helper_msa_andi_b helper_msa_andi_b_mipsel #define helper_msa_ori_b helper_msa_ori_b_mipsel #define helper_msa_nori_b helper_msa_nori_b_mipsel diff --git a/qemu/target-arm/unicorn_aarch64.c b/qemu/target-arm/unicorn_aarch64.c index 55c21c66..3d62be53 100644 --- a/qemu/target-arm/unicorn_aarch64.c +++ b/qemu/target-arm/unicorn_aarch64.c @@ -1,15 +1,15 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh , 2015 */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/boards.h" #include "hw/arm/arm.h" #include "sysemu/cpus.h" #include "unicorn.h" -#include "cpu.h" #include "unicorn_common.h" #include "uc_priv.h" - const int ARM64_REGS_STORAGE_SIZE = offsetof(CPUARMState, tlb_table); static void arm64_set_pc(struct uc_struct *uc, uint64_t address) diff --git a/qemu/target-arm/unicorn_arm.c b/qemu/target-arm/unicorn_arm.c index dc2c6277..cf90f23a 100644 --- a/qemu/target-arm/unicorn_arm.c +++ b/qemu/target-arm/unicorn_arm.c @@ -1,11 +1,12 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh , 2015 */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/boards.h" #include "hw/arm/arm.h" #include "sysemu/cpus.h" #include "unicorn.h" -#include "cpu.h" #include "unicorn_common.h" #include "uc_priv.h" diff --git a/qemu/target-i386/unicorn.c b/qemu/target-i386/unicorn.c index 9cc06e6f..29c6e13f 100644 --- a/qemu/target-i386/unicorn.c +++ b/qemu/target-i386/unicorn.c @@ -1,11 +1,12 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh , 2015 */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/boards.h" #include "hw/i386/pc.h" #include "sysemu/cpus.h" #include "unicorn.h" -#include "cpu.h" #include "tcg.h" #include "unicorn_common.h" #include /* needed for uc_x86_mmr */ diff --git a/qemu/target-m68k/unicorn.c b/qemu/target-m68k/unicorn.c index 65b8cd98..ab066023 100644 --- a/qemu/target-m68k/unicorn.c +++ b/qemu/target-m68k/unicorn.c @@ -1,15 +1,15 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh , 2015 */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/boards.h" #include "hw/m68k/m68k.h" #include "sysemu/cpus.h" #include "unicorn.h" -#include "cpu.h" #include "unicorn_common.h" #include "uc_priv.h" - const int M68K_REGS_STORAGE_SIZE = offsetof(CPUM68KState, tlb_table); static void m68k_set_pc(struct uc_struct *uc, uint64_t address) diff --git a/qemu/target-mips/cpu.h b/qemu/target-mips/cpu.h index 47130b36..3819642e 100644 --- a/qemu/target-mips/cpu.h +++ b/qemu/target-mips/cpu.h @@ -1140,22 +1140,11 @@ static inline void cpu_mips_store_cause(CPUMIPSState *env, target_ulong val) } #endif -static inline void QEMU_NORETURN do_raise_exception_err(CPUMIPSState *env, - uint32_t exception, - int error_code, - uintptr_t pc) -{ - CPUState *cs = CPU(mips_env_get_cpu(env)); +void QEMU_NORETURN do_raise_exception_err(CPUMIPSState *env, uint32_t exception, + int error_code, uintptr_t pc); - if (exception < EXCP_SC) { - qemu_log_mask(CPU_LOG_INT, "%s: %d %d\n", - __func__, exception, error_code); - } - cs->exception_index = exception; - env->error_code = error_code; - - cpu_loop_exit_restore(cs, pc); -} +void QEMU_NORETURN do_raise_exception_err(CPUMIPSState *env, uint32_t exception, + int error_code, uintptr_t pc); static inline void QEMU_NORETURN do_raise_exception(CPUMIPSState *env, uint32_t exception, diff --git a/qemu/target-mips/helper.c b/qemu/target-mips/helper.c index 35769870..a9043566 100644 --- a/qemu/target-mips/helper.c +++ b/qemu/target-mips/helper.c @@ -827,3 +827,21 @@ void r4k_invalidate_tlb (CPUMIPSState *env, int idx, int use_extra) } } #endif + + +void QEMU_NORETURN do_raise_exception_err(CPUMIPSState *env, + uint32_t exception, + int error_code, + uintptr_t pc) +{ + CPUState *cs = CPU(mips_env_get_cpu(env)); + + if (exception < EXCP_SC) { + qemu_log_mask(CPU_LOG_INT, "%s: %d %d\n", + __func__, exception, error_code); + } + cs->exception_index = exception; + env->error_code = error_code; + + cpu_loop_exit_restore(cs, pc); +} diff --git a/qemu/target-mips/unicorn.c b/qemu/target-mips/unicorn.c index 53f8c215..72c88df2 100644 --- a/qemu/target-mips/unicorn.c +++ b/qemu/target-mips/unicorn.c @@ -1,11 +1,12 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh , 2015 */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/boards.h" #include "hw/mips/mips.h" #include "sysemu/cpus.h" #include "unicorn.h" -#include "cpu.h" #include "unicorn_common.h" #include "uc_priv.h" diff --git a/qemu/target-sparc/unicorn.c b/qemu/target-sparc/unicorn.c index e682b87a..af41c7ec 100644 --- a/qemu/target-sparc/unicorn.c +++ b/qemu/target-sparc/unicorn.c @@ -1,15 +1,15 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh , 2015 */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/boards.h" #include "hw/sparc/sparc.h" #include "sysemu/cpus.h" #include "unicorn.h" -#include "cpu.h" #include "unicorn_common.h" #include "uc_priv.h" - const int SPARC_REGS_STORAGE_SIZE = offsetof(CPUSPARCState, tlb_table); static bool sparc_stop_interrupt(int intno) diff --git a/qemu/target-sparc/unicorn64.c b/qemu/target-sparc/unicorn64.c index e6f07a33..ab837c67 100644 --- a/qemu/target-sparc/unicorn64.c +++ b/qemu/target-sparc/unicorn64.c @@ -1,6 +1,8 @@ /* Unicorn Emulator Engine */ /* By Nguyen Anh Quynh , 2015 */ +#include "qemu/osdep.h" +#include "cpu.h" #include "hw/boards.h" #include "hw/sparc/sparc.h" #include "sysemu/cpus.h" @@ -9,7 +11,6 @@ #include "unicorn_common.h" #include "uc_priv.h" - const int SPARC64_REGS_STORAGE_SIZE = offsetof(CPUSPARCState, tlb_table); static bool sparc_stop_interrupt(int intno) diff --git a/qemu/tcg/optimize.c b/qemu/tcg/optimize.c index 6db51680..9b0ff925 100644 --- a/qemu/tcg/optimize.c +++ b/qemu/tcg/optimize.c @@ -26,6 +26,7 @@ #include "qemu/osdep.h" #include "qemu-common.h" +#include "cpu.h" #include "tcg-op.h" #define CASE_OP_32_64(x) \ diff --git a/qemu/tcg/tcg-op.c b/qemu/tcg/tcg-op.c index 0aefb2c6..504b8f24 100644 --- a/qemu/tcg/tcg-op.c +++ b/qemu/tcg/tcg-op.c @@ -23,6 +23,8 @@ */ #include "qemu/osdep.h" +#include "qemu-common.h" +#include "cpu.h" #include "tcg.h" #include "tcg-op.h" diff --git a/qemu/tcg/tcg.h b/qemu/tcg/tcg.h index f12eed91..b2bb14ec 100644 --- a/qemu/tcg/tcg.h +++ b/qemu/tcg/tcg.h @@ -26,6 +26,7 @@ #define TCG_H #include "qemu-common.h" +#include "cpu.h" #include "qemu/bitops.h" #include "tcg-target.h" #include "exec/exec-all.h"