1b9e7a234SAndreas Färber /* 2b9e7a234SAndreas Färber * QEMU Motorola 68k CPU 3b9e7a234SAndreas Färber * 4b9e7a234SAndreas Färber * Copyright (c) 2012 SUSE LINUX Products GmbH 5b9e7a234SAndreas Färber * 6b9e7a234SAndreas Färber * This library is free software; you can redistribute it and/or 7b9e7a234SAndreas Färber * modify it under the terms of the GNU Lesser General Public 8b9e7a234SAndreas Färber * License as published by the Free Software Foundation; either 9b9e7a234SAndreas Färber * version 2.1 of the License, or (at your option) any later version. 10b9e7a234SAndreas Färber * 11b9e7a234SAndreas Färber * This library is distributed in the hope that it will be useful, 12b9e7a234SAndreas Färber * but WITHOUT ANY WARRANTY; without even the implied warranty of 13b9e7a234SAndreas Färber * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14b9e7a234SAndreas Färber * Lesser General Public License for more details. 15b9e7a234SAndreas Färber * 16b9e7a234SAndreas Färber * You should have received a copy of the GNU Lesser General Public 17b9e7a234SAndreas Färber * License along with this library; if not, see 18b9e7a234SAndreas Färber * <http://www.gnu.org/licenses/lgpl-2.1.html> 19b9e7a234SAndreas Färber */ 20b9e7a234SAndreas Färber #ifndef QEMU_M68K_CPU_QOM_H 21b9e7a234SAndreas Färber #define QEMU_M68K_CPU_QOM_H 22b9e7a234SAndreas Färber 2314cccb61SPaolo Bonzini #include "qom/cpu.h" 24b9e7a234SAndreas Färber 25b9e7a234SAndreas Färber #define TYPE_M68K_CPU "m68k-cpu" 26b9e7a234SAndreas Färber 27b9e7a234SAndreas Färber #define M68K_CPU_CLASS(klass) \ 28b9e7a234SAndreas Färber OBJECT_CLASS_CHECK(M68kCPUClass, (klass), TYPE_M68K_CPU) 29b9e7a234SAndreas Färber #define M68K_CPU(obj) \ 30b9e7a234SAndreas Färber OBJECT_CHECK(M68kCPU, (obj), TYPE_M68K_CPU) 31b9e7a234SAndreas Färber #define M68K_CPU_GET_CLASS(obj) \ 32b9e7a234SAndreas Färber OBJECT_GET_CLASS(M68kCPUClass, (obj), TYPE_M68K_CPU) 33b9e7a234SAndreas Färber 34b9e7a234SAndreas Färber /** 35b9e7a234SAndreas Färber * M68kCPUClass: 366d1bbc62SAndreas Färber * @parent_realize: The parent class' realize handler. 37b9e7a234SAndreas Färber * @parent_reset: The parent class' reset handler. 38b9e7a234SAndreas Färber * 39b9e7a234SAndreas Färber * A Motorola 68k CPU model. 40b9e7a234SAndreas Färber */ 41b9e7a234SAndreas Färber typedef struct M68kCPUClass { 42b9e7a234SAndreas Färber /*< private >*/ 43b9e7a234SAndreas Färber CPUClass parent_class; 44b9e7a234SAndreas Färber /*< public >*/ 45b9e7a234SAndreas Färber 466d1bbc62SAndreas Färber DeviceRealize parent_realize; 47b9e7a234SAndreas Färber void (*parent_reset)(CPUState *cpu); 48b9e7a234SAndreas Färber } M68kCPUClass; 49b9e7a234SAndreas Färber 50b9e7a234SAndreas Färber /** 51b9e7a234SAndreas Färber * M68kCPU: 52b9e7a234SAndreas Färber * @env: #CPUM68KState 53b9e7a234SAndreas Färber * 54b9e7a234SAndreas Färber * A Motorola 68k CPU. 55b9e7a234SAndreas Färber */ 56b9e7a234SAndreas Färber typedef struct M68kCPU { 57b9e7a234SAndreas Färber /*< private >*/ 58b9e7a234SAndreas Färber CPUState parent_obj; 59b9e7a234SAndreas Färber /*< public >*/ 60b9e7a234SAndreas Färber 61b9e7a234SAndreas Färber CPUM68KState env; 62b9e7a234SAndreas Färber } M68kCPU; 63b9e7a234SAndreas Färber 64b9e7a234SAndreas Färber static inline M68kCPU *m68k_env_get_cpu(CPUM68KState *env) 65b9e7a234SAndreas Färber { 66b9e7a234SAndreas Färber return M68K_CPU(container_of(env, M68kCPU, env)); 67b9e7a234SAndreas Färber } 68b9e7a234SAndreas Färber 69b9e7a234SAndreas Färber #define ENV_GET_CPU(e) CPU(m68k_env_get_cpu(e)) 70b9e7a234SAndreas Färber 71b9e7a234SAndreas Färber 72b9e7a234SAndreas Färber #endif 73