18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * common defines for all CPUs 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright (c) 2003 Fabrice Bellard 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This library is free software; you can redistribute it and/or 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * modify it under the terms of the GNU Lesser General Public 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * License as published by the Free Software Foundation; either 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * version 2 of the License, or (at your option) any later version. 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * This library is distributed in the hope that it will be useful, 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Lesser General Public License for more details. 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * You should have received a copy of the GNU Lesser General Public 179251866320b5f8329a043bb56b3a794f78d12849David 'Digit' Turner * License along with this library; if not, see <http://www.gnu.org/licenses/>. 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef CPU_DEFS_H 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CPU_DEFS_H 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef NEED_CPU_H 235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#error cpu.h included from common code 245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif 255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "config.h" 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <setjmp.h> 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <inttypes.h> 295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include <signal.h> 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "osdep.h" 31a5d412078b8e7478d81df03710eacc7a21096ba2David 'Digit' Turner#include "qemu-queue.h" 325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "targphys.h" 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef TARGET_LONG_BITS 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#error TARGET_LONG_BITS must be defined before including this header 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TARGET_LONG_SIZE (TARGET_LONG_BITS / 8) 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* target_ulong is the type of a virtual address */ 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if TARGET_LONG_SIZE == 4 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef int32_t target_long; 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint32_t target_ulong; 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TARGET_FMT_lx "%08x" 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TARGET_FMT_ld "%d" 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TARGET_FMT_lu "%u" 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#elif TARGET_LONG_SIZE == 8 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef int64_t target_long; 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint64_t target_ulong; 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TARGET_FMT_lx "%016" PRIx64 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TARGET_FMT_ld "%" PRId64 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TARGET_FMT_lu "%" PRIu64 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#error TARGET_LONG_SIZE undefined 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define HOST_LONG_SIZE (HOST_LONG_BITS / 8) 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXCP_INTERRUPT 0x10000 /* async interruption */ 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXCP_HLT 0x10001 /* hlt instruction reached */ 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXCP_DEBUG 0x10002 /* cpu stopped after a breakpoint or singlestep */ 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define EXCP_HALTED 0x10003 /* cpu is halted (waiting for external event) */ 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TB_JMP_CACHE_BITS 12 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TB_JMP_CACHE_SIZE (1 << TB_JMP_CACHE_BITS) 668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Only the bottom TB_JMP_PAGE_BITS of the jump cache hash bits vary for 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project addresses on the same page. The top bits are the same. This allows 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project TLB invalidation to quickly clear a subset of the hash table. */ 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TB_JMP_PAGE_BITS (TB_JMP_CACHE_BITS / 2) 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TB_JMP_PAGE_SIZE (1 << TB_JMP_PAGE_BITS) 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TB_JMP_ADDR_MASK (TB_JMP_PAGE_SIZE - 1) 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TB_JMP_PAGE_MASK (TB_JMP_CACHE_SIZE - TB_JMP_PAGE_SIZE) 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 755fbe340e4937c4df99b1064178076a85e341ca89David Turner#if !defined(CONFIG_USER_ONLY) 768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CPU_TLB_BITS 8 778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CPU_TLB_SIZE (1 << CPU_TLB_BITS) 788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 795fbe340e4937c4df99b1064178076a85e341ca89David Turner#if HOST_LONG_BITS == 32 && TARGET_LONG_BITS == 32 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CPU_TLB_ENTRY_BITS 4 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CPU_TLB_ENTRY_BITS 5 838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct CPUTLBEntry { 868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* bit TARGET_LONG_BITS to TARGET_PAGE_BITS : virtual address 878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project bit TARGET_PAGE_BITS-1..4 : Nonzero for accesses that should not 888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project go directly to ram. 898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project bit 3 : indicates that the entry is invalid 908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project bit 2..0 : zero 918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project */ 928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project target_ulong addr_read; 938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project target_ulong addr_write; 948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project target_ulong addr_code; 955fbe340e4937c4df99b1064178076a85e341ca89David Turner /* Addend to virtual address to get host address. IO accesses 965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner use the corresponding iotlb value. */ 97d9b6cb97a8a9e93f1bbe5351874b03f7faa81783David 'Digit' Turner size_t addend; 988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* padding to get a power of two size */ 99d9b6cb97a8a9e93f1bbe5351874b03f7faa81783David 'Digit' Turner uint8_t dummy[(1 << CPU_TLB_ENTRY_BITS) - 100d9b6cb97a8a9e93f1bbe5351874b03f7faa81783David 'Digit' Turner (sizeof(target_ulong) * 3 + 101d9b6cb97a8a9e93f1bbe5351874b03f7faa81783David 'Digit' Turner ((-sizeof(target_ulong) * 3) & (sizeof(size_t) - 1)) + 102d9b6cb97a8a9e93f1bbe5351874b03f7faa81783David 'Digit' Turner sizeof(size_t))]; 1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} CPUTLBEntry; 1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1055fbe340e4937c4df99b1064178076a85e341ca89David Turnerextern int CPUTLBEntry_wrong_size[sizeof(CPUTLBEntry) == (1 << CPU_TLB_ENTRY_BITS) ? 1 : -1]; 1065fbe340e4937c4df99b1064178076a85e341ca89David Turner 1075fbe340e4937c4df99b1064178076a85e341ca89David Turner#define CPU_COMMON_TLB \ 1085fbe340e4937c4df99b1064178076a85e341ca89David Turner /* The meaning of the MMU modes is defined in the target code. */ \ 1095fbe340e4937c4df99b1064178076a85e341ca89David Turner CPUTLBEntry tlb_table[NB_MMU_MODES][CPU_TLB_SIZE]; \ 1105fbe340e4937c4df99b1064178076a85e341ca89David Turner target_phys_addr_t iotlb[NB_MMU_MODES][CPU_TLB_SIZE]; \ 1115fbe340e4937c4df99b1064178076a85e341ca89David Turner target_ulong tlb_flush_addr; \ 1125fbe340e4937c4df99b1064178076a85e341ca89David Turner target_ulong tlb_flush_mask; 1135fbe340e4937c4df99b1064178076a85e341ca89David Turner 1145fbe340e4937c4df99b1064178076a85e341ca89David Turner#else 1155fbe340e4937c4df99b1064178076a85e341ca89David Turner 1165fbe340e4937c4df99b1064178076a85e341ca89David Turner#define CPU_COMMON_TLB 1175fbe340e4937c4df99b1064178076a85e341ca89David Turner 1185fbe340e4937c4df99b1064178076a85e341ca89David Turner#endif 1195fbe340e4937c4df99b1064178076a85e341ca89David Turner 1205fbe340e4937c4df99b1064178076a85e341ca89David Turner 12120894ae3fa98f82da925fbeb72e616eef509758aDavid 'Digit' Turner#ifdef HOST_WORDS_BIGENDIAN 1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct icount_decr_u16 { 1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint16_t high; 1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint16_t low; 1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} icount_decr_u16; 1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#else 1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct icount_decr_u16 { 1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint16_t low; 1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint16_t high; 1308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} icount_decr_u16; 1318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct kvm_run; 1345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct KVMState; 1355fbe340e4937c4df99b1064178076a85e341ca89David Turnerstruct qemu_work_item; 1365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct CPUBreakpoint { 1385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner target_ulong pc; 1395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int flags; /* BP_* */ 140a5d412078b8e7478d81df03710eacc7a21096ba2David 'Digit' Turner QTAILQ_ENTRY(CPUBreakpoint) entry; 1415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner} CPUBreakpoint; 1425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct CPUWatchpoint { 1445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner target_ulong vaddr; 1455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner target_ulong len_mask; 1465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int flags; /* BP_* */ 147a5d412078b8e7478d81df03710eacc7a21096ba2David 'Digit' Turner QTAILQ_ENTRY(CPUWatchpoint) entry; 1485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner} CPUWatchpoint; 1495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CPU_TEMP_BUF_NLONGS 128 1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define CPU_COMMON \ 1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct TranslationBlock *current_tb; /* currently executing TB */ \ 1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* soft mmu support */ \ 1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* in order to avoid passing too many arguments to the MMIO \ 1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project helpers, we store some rarely used information in the CPU \ 1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project context) */ \ 1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project unsigned long mem_io_pc; /* host pc at which the memory was \ 1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project accessed */ \ 1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project target_ulong mem_io_vaddr; /* target virtual addr at which the \ 1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project memory was accessed */ \ 1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint32_t halted; /* Nonzero if the CPU is in suspend state */ \ 1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint32_t interrupt_request; \ 1635d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner volatile sig_atomic_t exit_request; \ 1645fbe340e4937c4df99b1064178076a85e341ca89David Turner CPU_COMMON_TLB \ 1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct TranslationBlock *tb_jmp_cache[TB_JMP_CACHE_SIZE]; \ 1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* buffer for temporaries in the code generator */ \ 1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project long temp_buf[CPU_TEMP_BUF_NLONGS]; \ 1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project \ 1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int64_t icount_extra; /* Instructions until next timer event. */ \ 1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Number of cycles left, with interrupt flag in high bit. \ 1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project This allows a single read-compare-cbranch-write sequence to test \ 1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project for both decrementer underflow and exceptions. */ \ 1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project union { \ 1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint32_t u32; \ 1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project icount_decr_u16 u16; \ 1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } icount_decr; \ 1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project uint32_t can_do_io; /* nonzero if memory mapped IO is safe. */ \ 1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project \ 1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* from this point: preserved by CPU reset */ \ 1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* ice debug support */ \ 181a5d412078b8e7478d81df03710eacc7a21096ba2David 'Digit' Turner QTAILQ_HEAD(breakpoints_head, CPUBreakpoint) breakpoints; \ 1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int singlestep_enabled; \ 1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project \ 184a5d412078b8e7478d81df03710eacc7a21096ba2David 'Digit' Turner QTAILQ_HEAD(watchpoints_head, CPUWatchpoint) watchpoints; \ 1855d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner CPUWatchpoint *watchpoint_hit; \ 1865d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner \ 1875d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct GDBRegisterState *gdb_regs; \ 1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project \ 1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* Core interrupt code */ \ 1908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project jmp_buf jmp_env; \ 1918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int exception_index; \ 1928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project \ 1935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner CPUState *next_cpu; /* next CPU sharing TB cache */ \ 1948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int cpu_index; /* CPU index (informative) */ \ 1955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner uint32_t host_tid; /* host thread ID */ \ 1965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int numa_node; /* NUMA node this cpu is belonging to */ \ 197a5d412078b8e7478d81df03710eacc7a21096ba2David 'Digit' Turner int nr_cores; /* number of cores within this CPU package */ \ 198a5d412078b8e7478d81df03710eacc7a21096ba2David 'Digit' Turner int nr_threads;/* number of threads within this CPU */ \ 1998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int running; /* Nonzero if cpu is currently running(usermode). */ \ 2008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project /* user data */ \ 2018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project void *opaque; \ 2028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project \ 2035d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner uint32_t created; \ 2045fbe340e4937c4df99b1064178076a85e341ca89David Turner uint32_t stop; /* Stop request */ \ 2055fbe340e4937c4df99b1064178076a85e341ca89David Turner uint32_t stopped; /* Artificially stopped */ \ 2065d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct QemuThread *thread; \ 2075d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct QemuCond *halt_cond; \ 2085fbe340e4937c4df99b1064178076a85e341ca89David Turner struct qemu_work_item *queued_work_first, *queued_work_last; \ 2095d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner const char *cpu_model_str; \ 2105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct KVMState *kvm_state; \ 2115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct kvm_run *kvm_run; \ 2129251866320b5f8329a043bb56b3a794f78d12849David 'Digit' Turner int kvm_fd; \ 213a381ef07088ce479610129e37bfef42538f397daJun Nakajima int kvm_vcpu_dirty; \ 214a381ef07088ce479610129e37bfef42538f397daJun Nakajima struct hax_vcpu_state *hax_vcpu; 2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 217