256 |
SegmentCache tr; |
SegmentCache tr; |
257 |
SegmentCache gdt; /* only base and limit are used */ |
SegmentCache gdt; /* only base and limit are used */ |
258 |
SegmentCache idt; /* only base and limit are used */ |
SegmentCache idt; /* only base and limit are used */ |
259 |
|
int cpl; /* current cpl */ |
260 |
|
|
261 |
/* sysenter registers */ |
/* sysenter registers */ |
262 |
uint32_t sysenter_cs; |
uint32_t sysenter_cs; |
277 |
|
|
278 |
uint32_t breakpoints[MAX_BREAKPOINTS]; |
uint32_t breakpoints[MAX_BREAKPOINTS]; |
279 |
int nb_breakpoints; |
int nb_breakpoints; |
280 |
|
int singlestep_enabled; |
281 |
|
|
282 |
/* user data */ |
/* user data */ |
283 |
void *opaque; |
void *opaque; |
300 |
/* needed to load some predefinied segment registers */ |
/* needed to load some predefinied segment registers */ |
301 |
void cpu_x86_load_seg(CPUX86State *s, int seg_reg, int selector); |
void cpu_x86_load_seg(CPUX86State *s, int seg_reg, int selector); |
302 |
|
|
303 |
|
/* wrapper, just in case memory mappings must be changed */ |
304 |
|
static inline void cpu_x86_set_cpl(CPUX86State *s, int cpl) |
305 |
|
{ |
306 |
|
s->cpl = cpl; |
307 |
|
} |
308 |
|
|
309 |
/* simulate fsave/frstor */ |
/* simulate fsave/frstor */ |
310 |
void cpu_x86_fsave(CPUX86State *s, uint8_t *ptr, int data32); |
void cpu_x86_fsave(CPUX86State *s, uint8_t *ptr, int data32); |
311 |
void cpu_x86_frstor(CPUX86State *s, uint8_t *ptr, int data32); |
void cpu_x86_frstor(CPUX86State *s, uint8_t *ptr, int data32); |