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