Revision 13b55754

b/cpu-i386.h
85 85
#define VIP_MASK                0x00100000
86 86
#define ID_MASK                 0x00200000
87 87

  
88
#define CR0_PE_MASK  (1 << 0)
89
#define CR0_TS_MASK  (1 << 3)
90
#define CR0_WP_MASK  (1 << 16)
91
#define CR0_AM_MASK  (1 << 18)
92
#define CR0_PG_MASK  (1 << 31)
93

  
94
#define CR4_VME_MASK  (1 << 0)
95
#define CR4_PVI_MASK  (1 << 1)
96
#define CR4_TSD_MASK  (1 << 2)
97
#define CR4_DE_MASK   (1 << 3)
98

  
88 99
#define EXCP00_DIVZ	0
89 100
#define EXCP01_SSTP	1
90 101
#define EXCP02_NMI	2
......
161 172
#endif
162 173

  
163 174
typedef struct SegmentCache {
175
    uint32_t selector;
164 176
    uint8_t *base;
165 177
    unsigned long limit;
166 178
    uint8_t seg_32bit;
167 179
} SegmentCache;
168 180

  
169
typedef struct SegmentDescriptorTable {
170
    uint8_t *base;
171
    unsigned long limit;
172
    /* this is the returned base when reading the register, just to
173
    avoid that the emulated program modifies it */
174
    unsigned long emu_base;
175
} SegmentDescriptorTable;
176

  
177 181
typedef struct CPUX86State {
178 182
    /* standard registers */
179 183
    uint32_t regs[8];
......
205 209
    } fp_convert;
206 210
    
207 211
    /* segments */
208
    uint32_t segs[6]; /* selector values */
209
    SegmentCache seg_cache[6]; /* info taken from LDT/GDT */
210
    SegmentDescriptorTable gdt;
211
    SegmentDescriptorTable ldt;
212
    SegmentDescriptorTable idt;
212
    SegmentCache segs[6]; /* selector values */
213
    SegmentCache ldt;
214
    SegmentCache tr;
215
    SegmentCache gdt; /* only base and limit are used */
216
    SegmentCache idt; /* only base and limit are used */
213 217
    
214 218
    /* exception/interrupt handling */
215 219
    jmp_buf jmp_env;
216 220
    int exception_index;
217 221
    int error_code;
218
    uint32_t cr2;
222
    uint32_t cr[5]; /* NOTE: cr1 is unused */
223
    uint32_t dr[8]; /* debug registers */
219 224
    int interrupt_request;
220 225

  
221 226
    /* user data */

Also available in: Unified diff