|
|
| version 1.1, 2003/12/08 00:55:31 | version 1.2, 2003/12/11 15:06:50 |
|---|---|
| Line 119 enum { | Line 119 enum { |
| CPU_SEGREG_NUM | CPU_SEGREG_NUM |
| }; | }; |
| #if 1 // パックしないとだめ? | |
| typedef struct { | typedef struct { |
| REG32 reg[CPU_REG_NUM]; | REG32 reg[CPU_REG_NUM]; |
| WORD sreg[CPU_SEGREG_NUM]; | WORD sreg[CPU_SEGREG_NUM]; |
| Line 181 typedef struct { | Line 179 typedef struct { |
| DWORD seg_base; | DWORD seg_base; |
| } CPU_INST; | } CPU_INST; |
| #else | |
| typedef struct { | |
| REG32 reg[CPU_REG_NUM]; | |
| WORD sreg[CPU_SEGREG_NUM]; | |
| REG32 eflags; | |
| REG32 eip; | |
| REG32 prev_eip; | |
| } __attribute__((packed)) CPU_REGS; | |
| typedef struct { | |
| WORD gdtr_limit; | |
| DWORD gdtr_base; | |
| WORD idtr_limit; | |
| DWORD idtr_base; | |
| WORD ldtr; | |
| WORD tr; | |
| descriptor_t ldtr_desc; | |
| descriptor_t tr_desc; | |
| DWORD cr0; | |
| DWORD cr1; | |
| DWORD cr2; | |
| DWORD cr3; | |
| DWORD cr4; | |
| DWORD mxcsr; | |
| } __attribute__((packed)) CPU_SYSREGS; | |
| typedef struct { | |
| descriptor_t sreg[CPU_SEGREG_NUM]; | |
| DWORD inport; | |
| DWORD ovflag; | |
| BYTE ss_32; | |
| BYTE trap; | |
| BYTE cpu_type; | |
| BYTE _dummy; | |
| BYTE cpl; | |
| BYTE protected_mode; | |
| BYTE paging; | |
| BYTE vm86; | |
| DWORD ioaddr; /* I/O bitmap linear address */ | |
| WORD iolimit; /* I/O bitmap count */ | |
| BYTE nerror; /* double fault/ triple fault */ | |
| BYTE prev_exception; | |
| } __attribute__((packed)) CPU_STAT; | |
| typedef struct { | |
| BYTE op_32; | |
| BYTE as_32; | |
| BYTE rep_used; | |
| BYTE seg_used; | |
| DWORD seg_base; | |
| } __attribute__((packed)) CPU_INST; | |
| #endif | |
| extern CPU_REGS cpu_regs; | extern CPU_REGS cpu_regs; |
| extern CPU_SYSREGS cpu_sysregs; | extern CPU_SYSREGS cpu_sysregs; |
| extern CPU_STAT cpu_stat; | extern CPU_STAT cpu_stat; |
| Line 504 void set_eflags(DWORD new_flags, DWORD m | Line 438 void set_eflags(DWORD new_flags, DWORD m |
| #define CPU_CR4_OSXMMEXCPT (1 << 10) | #define CPU_CR4_OSXMMEXCPT (1 << 10) |
| void ia32_initialize(void); | void ia32_init(void); |
| void ia32reset(void); | void ia32reset(void); |
| void ia32(void); | void ia32(void); |