ia64/xen-unstable

view tools/ioemu/cpu-defs.h @ 6946:e703abaf6e3d

Add behaviour to the remove methods to remove the transaction's path itself. This allows us to write Remove(path) to remove the specified path rather than having to slice the path ourselves.
author emellor@ewan
date Sun Sep 18 14:42:13 2005 +0100 (2005-09-18)
parents 8e5fc5fe636c
children f7b43e5c42b9
line source
1 /*
2 * common defines for all CPUs
3 *
4 * Copyright (c) 2003 Fabrice Bellard
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 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, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20 #ifndef CPU_DEFS_H
21 #define CPU_DEFS_H
23 #include "config.h"
24 #include <setjmp.h>
25 #include <inttypes.h>
26 #include "osdep.h"
28 #ifndef TARGET_LONG_BITS
29 #error TARGET_LONG_BITS must be defined before including this header
30 #endif
32 #if defined(__alpha__) || defined (__ia64__) || defined(__x86_64__)
33 #define HOST_LONG_BITS 64
34 #else
35 #define HOST_LONG_BITS 32
36 #endif
38 #ifndef TARGET_PHYS_ADDR_BITS
39 #if TARGET_LONG_BITS >= HOST_LONG_BITS
40 #define TARGET_PHYS_ADDR_BITS TARGET_LONG_BITS
41 #else
42 #define TARGET_PHYS_ADDR_BITS HOST_LONG_BITS
43 #endif
44 #endif
46 #define TARGET_LONG_SIZE (TARGET_LONG_BITS / 8)
48 /* target_ulong is the type of a virtual address */
49 #if TARGET_LONG_SIZE == 4
50 typedef int32_t target_long;
51 typedef uint32_t target_ulong;
52 #elif TARGET_LONG_SIZE == 8
53 typedef int64_t target_long;
54 typedef uint64_t target_ulong;
55 #else
56 #error TARGET_LONG_SIZE undefined
57 #endif
59 /* target_phys_addr_t is the type of a physical address (its size can
60 be different from 'target_ulong'). We have sizeof(target_phys_addr)
61 = max(sizeof(unsigned long),
62 sizeof(size_of_target_physical_address)) because we must pass a
63 host pointer to memory operations in some cases */
65 #if TARGET_PHYS_ADDR_BITS == 32
66 typedef uint32_t target_phys_addr_t;
67 #elif TARGET_PHYS_ADDR_BITS == 64
68 typedef uint64_t target_phys_addr_t;
69 #else
70 #error TARGET_PHYS_ADDR_BITS undefined
71 #endif
73 #define HOST_LONG_SIZE (HOST_LONG_BITS / 8)
75 #define EXCP_INTERRUPT 256 /* async interruption */
76 #define EXCP_HLT 257 /* hlt instruction reached */
77 #define EXCP_DEBUG 258 /* cpu stopped after a breakpoint or singlestep */
79 #define MAX_BREAKPOINTS 32
81 #define CPU_TLB_SIZE 256
83 typedef struct CPUTLBEntry {
84 /* bit 31 to TARGET_PAGE_BITS : virtual address
85 bit TARGET_PAGE_BITS-1..IO_MEM_SHIFT : if non zero, memory io
86 zone number
87 bit 3 : indicates that the entry is invalid
88 bit 2..0 : zero
89 */
90 target_ulong address;
91 /* addend to virtual address to get physical address */
92 target_phys_addr_t addend;
93 } CPUTLBEntry;
95 #endif