|
|
1.1 ! root 1: /* ! 2: * QEMU x86 CPU ! 3: * ! 4: * Copyright (c) 2012 SUSE LINUX Products GmbH ! 5: * ! 6: * This library is free software; you can redistribute it and/or ! 7: * modify it under the terms of the GNU Lesser General Public ! 8: * License as published by the Free Software Foundation; either ! 9: * version 2.1 of the License, or (at your option) any later version. ! 10: * ! 11: * This library is distributed in the hope that it will be useful, ! 12: * but WITHOUT ANY WARRANTY; without even the implied warranty of ! 13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! 14: * Lesser General Public License for more details. ! 15: * ! 16: * You should have received a copy of the GNU Lesser General Public ! 17: * License along with this library; if not, see ! 18: * <http://www.gnu.org/licenses/lgpl-2.1.html> ! 19: */ ! 20: #ifndef QEMU_I386_CPU_QOM_H ! 21: #define QEMU_I386_CPU_QOM_H ! 22: ! 23: #include "qemu/cpu.h" ! 24: #include "cpu.h" ! 25: #include "error.h" ! 26: ! 27: #ifdef TARGET_X86_64 ! 28: #define TYPE_X86_CPU "x86_64-cpu" ! 29: #else ! 30: #define TYPE_X86_CPU "i386-cpu" ! 31: #endif ! 32: ! 33: #define X86_CPU_CLASS(klass) \ ! 34: OBJECT_CLASS_CHECK(X86CPUClass, (klass), TYPE_X86_CPU) ! 35: #define X86_CPU(obj) \ ! 36: OBJECT_CHECK(X86CPU, (obj), TYPE_X86_CPU) ! 37: #define X86_CPU_GET_CLASS(obj) \ ! 38: OBJECT_GET_CLASS(X86CPUClass, (obj), TYPE_X86_CPU) ! 39: ! 40: /** ! 41: * X86CPUClass: ! 42: * @parent_reset: The parent class' reset handler. ! 43: * ! 44: * An x86 CPU model or family. ! 45: */ ! 46: typedef struct X86CPUClass { ! 47: /*< private >*/ ! 48: CPUClass parent_class; ! 49: /*< public >*/ ! 50: ! 51: void (*parent_reset)(CPUState *cpu); ! 52: } X86CPUClass; ! 53: ! 54: /** ! 55: * X86CPU: ! 56: * @env: #CPUX86State ! 57: * ! 58: * An x86 CPU. ! 59: */ ! 60: typedef struct X86CPU { ! 61: /*< private >*/ ! 62: CPUState parent_obj; ! 63: /*< public >*/ ! 64: ! 65: CPUX86State env; ! 66: } X86CPU; ! 67: ! 68: static inline X86CPU *x86_env_get_cpu(CPUX86State *env) ! 69: { ! 70: return X86_CPU(container_of(env, X86CPU, env)); ! 71: } ! 72: ! 73: #define ENV_GET_CPU(e) CPU(x86_env_get_cpu(e)) ! 74: ! 75: /* TODO Drop once ObjectClass::realize is available */ ! 76: void x86_cpu_realize(Object *obj, Error **errp); ! 77: ! 78: ! 79: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.