mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 06:43:53 -06:00

AccelCPUClass is for accelerator to initialize target specific features of a vCPU. Not really related to hardware emulation, rename "hw/core/accel-cpu.h" as "accel/accel-cpu-target.h" (using the explicit -target suffix). More importantly, target specific header often access the target specific definitions which are in each target/FOO/cpu.h header, usually included generically as "cpu.h" relative to target/FOO/. However, there is already a "cpu.h" in hw/core/ which takes precedence. This change allows "accel-cpu-target.h" to include a target "cpu.h". Mechanical change doing: $ git mv include/hw/core/accel-cpu.h \ include/accel/accel-cpu-target.h $ sed -i -e 's,hw/core/accel-cpu.h,accel/accel-cpu-target.h,' \ $(git grep -l hw/core/accel-cpu.h) and renaming header guard 'ACCEL_CPU_TARGET_H'. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20250123234415.59850-12-philmd@linaro.org>
38 lines
1.1 KiB
C
38 lines
1.1 KiB
C
/*
|
|
* Accelerator interface, specializes CPUClass
|
|
* This header is used only by target-specific code.
|
|
*
|
|
* Copyright 2021 SUSE LLC
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
* See the COPYING file in the top-level directory.
|
|
*/
|
|
|
|
#ifndef ACCEL_CPU_TARGET_H
|
|
#define ACCEL_CPU_TARGET_H
|
|
|
|
/*
|
|
* This header is used to define new accelerator-specific target-specific
|
|
* accelerator cpu subclasses.
|
|
* It uses CPU_RESOLVING_TYPE, so this is clearly target-specific.
|
|
*
|
|
* Do not try to use for any other purpose than the implementation of new
|
|
* subclasses in target/, or the accel implementation itself in accel/
|
|
*/
|
|
|
|
#define TYPE_ACCEL_CPU "accel-" CPU_RESOLVING_TYPE
|
|
#define ACCEL_CPU_NAME(name) (name "-" TYPE_ACCEL_CPU)
|
|
typedef struct AccelCPUClass AccelCPUClass;
|
|
DECLARE_CLASS_CHECKERS(AccelCPUClass, ACCEL_CPU, TYPE_ACCEL_CPU)
|
|
|
|
typedef struct AccelCPUClass {
|
|
/*< private >*/
|
|
ObjectClass parent_class;
|
|
/*< public >*/
|
|
|
|
void (*cpu_class_init)(CPUClass *cc);
|
|
void (*cpu_instance_init)(CPUState *cpu);
|
|
bool (*cpu_target_realize)(CPUState *cpu, Error **errp);
|
|
} AccelCPUClass;
|
|
|
|
#endif /* ACCEL_CPU_H */
|