|
|
1.1 ! root 1: /* ! 2: * QEMU PowerPC 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_PPC_CPU_QOM_H ! 21: #define QEMU_PPC_CPU_QOM_H ! 22: ! 23: #include "qemu/cpu.h" ! 24: #include "cpu.h" ! 25: ! 26: #ifdef TARGET_PPC64 ! 27: #define TYPE_POWERPC_CPU "powerpc64-cpu" ! 28: #elif defined(TARGET_PPCEMB) ! 29: #define TYPE_POWERPC_CPU "embedded-powerpc-cpu" ! 30: #else ! 31: #define TYPE_POWERPC_CPU "powerpc-cpu" ! 32: #endif ! 33: ! 34: #define POWERPC_CPU_CLASS(klass) \ ! 35: OBJECT_CLASS_CHECK(PowerPCCPUClass, (klass), TYPE_POWERPC_CPU) ! 36: #define POWERPC_CPU(obj) \ ! 37: OBJECT_CHECK(PowerPCCPU, (obj), TYPE_POWERPC_CPU) ! 38: #define POWERPC_CPU_GET_CLASS(obj) \ ! 39: OBJECT_GET_CLASS(PowerPCCPUClass, (obj), TYPE_POWERPC_CPU) ! 40: ! 41: /** ! 42: * PowerPCCPUClass: ! 43: * @parent_reset: The parent class' reset handler. ! 44: * ! 45: * A PowerPC CPU model. ! 46: */ ! 47: typedef struct PowerPCCPUClass { ! 48: /*< private >*/ ! 49: CPUClass parent_class; ! 50: /*< public >*/ ! 51: ! 52: void (*parent_reset)(CPUState *cpu); ! 53: } PowerPCCPUClass; ! 54: ! 55: /** ! 56: * PowerPCCPU: ! 57: * @env: #CPUPPCState ! 58: * ! 59: * A PowerPC CPU. ! 60: */ ! 61: typedef struct PowerPCCPU { ! 62: /*< private >*/ ! 63: CPUState parent_obj; ! 64: /*< public >*/ ! 65: ! 66: CPUPPCState env; ! 67: } PowerPCCPU; ! 68: ! 69: static inline PowerPCCPU *ppc_env_get_cpu(CPUPPCState *env) ! 70: { ! 71: return POWERPC_CPU(container_of(env, PowerPCCPU, env)); ! 72: } ! 73: ! 74: #define ENV_GET_CPU(e) CPU(ppc_env_get_cpu(e)) ! 75: ! 76: ! 77: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.