xref: /qemu/include/accel/accel-cpu-target.h (revision b12a0f856691264bc1a8f0ed1e5e62649cea7fd2)
1fb6916ddSClaudio Fontana /*
2fb6916ddSClaudio Fontana  * Accelerator interface, specializes CPUClass
3fb6916ddSClaudio Fontana  * This header is used only by target-specific code.
4fb6916ddSClaudio Fontana  *
5fb6916ddSClaudio Fontana  * Copyright 2021 SUSE LLC
6fb6916ddSClaudio Fontana  *
7fb6916ddSClaudio Fontana  * This work is licensed under the terms of the GNU GPL, version 2 or later.
8fb6916ddSClaudio Fontana  * See the COPYING file in the top-level directory.
9fb6916ddSClaudio Fontana  */
10fb6916ddSClaudio Fontana 
11*b12a0f85SPhilippe Mathieu-Daudé #ifndef ACCEL_CPU_TARGET_H
12*b12a0f85SPhilippe Mathieu-Daudé #define ACCEL_CPU_TARGET_H
13fb6916ddSClaudio Fontana 
14fb6916ddSClaudio Fontana /*
15fb6916ddSClaudio Fontana  * This header is used to define new accelerator-specific target-specific
16fb6916ddSClaudio Fontana  * accelerator cpu subclasses.
17fb6916ddSClaudio Fontana  * It uses CPU_RESOLVING_TYPE, so this is clearly target-specific.
18fb6916ddSClaudio Fontana  *
19fb6916ddSClaudio Fontana  * Do not try to use for any other purpose than the implementation of new
20fb6916ddSClaudio Fontana  * subclasses in target/, or the accel implementation itself in accel/
21fb6916ddSClaudio Fontana  */
22fb6916ddSClaudio Fontana 
23fb6916ddSClaudio Fontana #define TYPE_ACCEL_CPU "accel-" CPU_RESOLVING_TYPE
24fb6916ddSClaudio Fontana #define ACCEL_CPU_NAME(name) (name "-" TYPE_ACCEL_CPU)
25fb6916ddSClaudio Fontana typedef struct AccelCPUClass AccelCPUClass;
26fb6916ddSClaudio Fontana DECLARE_CLASS_CHECKERS(AccelCPUClass, ACCEL_CPU, TYPE_ACCEL_CPU)
27fb6916ddSClaudio Fontana 
28fb6916ddSClaudio Fontana typedef struct AccelCPUClass {
29fb6916ddSClaudio Fontana     /*< private >*/
30fb6916ddSClaudio Fontana     ObjectClass parent_class;
31fb6916ddSClaudio Fontana     /*< public >*/
32fb6916ddSClaudio Fontana 
33fb6916ddSClaudio Fontana     void (*cpu_class_init)(CPUClass *cc);
34fb6916ddSClaudio Fontana     void (*cpu_instance_init)(CPUState *cpu);
356294e502SPhilippe Mathieu-Daudé     bool (*cpu_target_realize)(CPUState *cpu, Error **errp);
36fb6916ddSClaudio Fontana } AccelCPUClass;
37fb6916ddSClaudio Fontana 
38fb6916ddSClaudio Fontana #endif /* ACCEL_CPU_H */
39