| version 1.39, 2011/12/21 16:33:44 | version 1.41, 2011/12/21 18:07:57 | 
| Line 213  typedef struct { | Line 213  typedef struct { | 
 | } FPU_REGS; | } FPU_REGS; | 
 |  |  | 
 | typedef struct { | typedef struct { | 
| UINT8           valid;  /* ¥ì¥¸¥¹¥¿Í¸ú */ | UINT8           valid;  /* ¥ì¥¸¥¹¥¿Í¸ú */ | 
| UINT8           sign;   /* É乿 */ | UINT8           sign;   /* É乿 */ | 
| UINT8           zero;   /* ¥¼¥í */ | UINT8           zero;   /* ¥¼¥í */ | 
| UINT8           inf;    /* ¡ç */ | UINT8           inf;    /* ¡ç */ | 
 | UINT8           nan;    /* NaN */ | UINT8           nan;    /* NaN */ | 
| UINT8           denorm; /* ÈóÀµµ¬²½ */ | UINT8           denorm; /* ñýÜè¥å¡×ð¨¾ç·ö */ | 
| SINT16          exp;    /* »Ø¿ôÉô */ | SINT16          exp;    /* ëì®èʲñ㥣 */ | 
| UINT64          num;    /* ¾®¿ôÉô */ | UINT64          num;    /* ê²¾èʲñ㥣 */ | 
 | } FP_REG; | } FP_REG; | 
 |  |  | 
 | typedef struct { | typedef struct { | 
| UINT8           top;    /* ¡¦¥±¡¦¥½¡¦¥Æ¡¦¥Ã¡¼¥Õ¥Æ¥è */ | UINT8           top;    /* ¥¹¥¿¥Ã¥¯°ÌÃÖ */ | 
| UINT8           pc;     /* ¥¿¥³¥Ê¥ë */ | UINT8           pc;     /* ÀºÅÙ */ | 
| UINT8           rc;     /* ¥¨¥ó¡¢*/ | UINT8           rc;     /* ´Ý¤á */ | 
 | UINT8           dmy[1]; | UINT8           dmy[1]; | 
 |  |  | 
 | FP_REG          reg[FPU_REG_NUM]; | FP_REG          reg[FPU_REG_NUM]; | 
| Line 264  typedef struct { | Line 264  typedef struct { | 
 | } I386EXT; | } I386EXT; | 
 |  |  | 
 | typedef struct { | typedef struct { | 
| I386STAT        s;                              /* STATsave¡¢¥ª¡¢ø¦öÇ¥í */ | I386STAT        s;                              /* STATsaveåáÊå£ìåâ¶ç¡¦¥¨ */ | 
 | I386EXT         e; | I386EXT         e; | 
 | } I386CORE; | } I386CORE; | 
 |  |  | 
| Line 450  extern sigjmp_buf exec_1step_jmpbuf; | Line 450  extern sigjmp_buf exec_1step_jmpbuf; | 
 | #define REAL_FLAGREG    ((CPU_FLAG & 0xf7ff) | (CPU_OV ? O_FLAG : 0) | 2) | #define REAL_FLAGREG    ((CPU_FLAG & 0xf7ff) | (CPU_OV ? O_FLAG : 0) | 2) | 
 | #define REAL_EFLAGREG   ((CPU_EFLAG & 0xfffff7ff) | (CPU_OV ? O_FLAG : 0) | 2) | #define REAL_EFLAGREG   ((CPU_EFLAG & 0xfffff7ff) | (CPU_OV ? O_FLAG : 0) | 2) | 
 |  |  | 
| void FASTCALL set_flags(UINT16 new_flags, UINT16 mask); | void CPUCALL set_flags(UINT16 new_flags, UINT16 mask); | 
| void FASTCALL set_eflags(UINT32 new_flags, UINT32 mask); | void CPUCALL set_eflags(UINT32 new_flags, UINT32 mask); | 
 |  |  | 
 |  |  | 
 | #define CPU_INST_OP32           CPU_STATSAVE.cpu_inst.op_32 | #define CPU_INST_OP32           CPU_STATSAVE.cpu_inst.op_32 | 
| Line 619  void ia32a20enable(BOOL enable); | Line 619  void ia32a20enable(BOOL enable); | 
 | void ia32(void); | void ia32(void); | 
 | void ia32_step(void); | void ia32_step(void); | 
 | void CPUCALL ia32_interrupt(int vect, int soft); | void CPUCALL ia32_interrupt(int vect, int soft); | 
 | void CPUCALL ia32_exception(int vect, int p1, int p2); |  | 
 |  |  | 
 | void exec_1step(void); | void exec_1step(void); | 
 | #define INST_PREFIX     (1 << 0) | #define INST_PREFIX     (1 << 0) | 
| Line 632  void ia32_panic(const char *buf, ...); | Line 631  void ia32_panic(const char *buf, ...); | 
 |  |  | 
 | void ia32_bioscall(void); | void ia32_bioscall(void); | 
 |  |  | 
| void FASTCALL change_pm(BOOL onoff); | void CPUCALL change_pm(BOOL onoff); | 
| void FASTCALL change_vm(BOOL onoff); | void CPUCALL change_vm(BOOL onoff); | 
| void FASTCALL change_pg(BOOL onoff); | void CPUCALL change_pg(BOOL onoff); | 
 |  |  | 
| void FASTCALL set_cr3(UINT32 new_cr3); | void CPUCALL set_cr3(UINT32 new_cr3); | 
| void FASTCALL set_cpl(int new_cpl); | void CPUCALL set_cpl(int new_cpl); | 
 |  |  | 
 | extern const UINT8 iflags[]; | extern const UINT8 iflags[]; | 
 | #define szpcflag        iflags | #define szpcflag        iflags | 
| Line 685  void dbg_printf(const char *str, ...); | Line 684  void dbg_printf(const char *str, ...); | 
 | #define FPU_REG(i)              FPU_STAT.reg[i] | #define FPU_REG(i)              FPU_STAT.reg[i] | 
 |  |  | 
 | /* FPU status register */ | /* FPU status register */ | 
| #define FP_IE_FLAG      (1 << 0)        /* ¥Õ¥ª¥¯ùè¥Ï¥Ë¡¼¥³*/ | #define FP_IE_FLAG      (1 << 0)        /* ̵¸ú¤Êưºî */ | 
| #define FP_DE_FLAG      (1 << 1)        /* ¥Ç¥Î¡¼¥Þ¥é¥¤¥º¥É¡¦¥ª¥Ú¥é¥ó¥É */ | #define FP_DE_FLAG      (1 << 1)        /* ¥Ç¥Î¡¼¥Þ¥é¥¤¥º¥É¡¦¥ª¥Ú¥é¥ó¥É */ | 
| #define FP_ZE_FLAG      (1 << 2)        /* ¥¼¥í¤Ë¤è¤ë½ü»» */ | #define FP_ZE_FLAG      (1 << 2)        /* ¥¼¥í¤Ë¤è¤ë½ü»» */ | 
| #define FP_OE_FLAG      (1 << 3)        /* ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼ */ | #define FP_OE_FLAG      (1 << 3)        /* ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼ */ | 
| #define FP_UE_FLAG      (1 << 4)        /* ¥¢¥ó¥À¡¼¥Õ¥í¡¼ */ | #define FP_UE_FLAG      (1 << 4)        /* ¥¢¥ó¥À¡¼¥Õ¥í¡¼ */ | 
| #define FP_PE_FLAG      (1 << 5)        /* ÀºÅÙ */ | #define FP_PE_FLAG      (1 << 5)        /* ÀºÅÙ */ | 
| #define FP_SF_FLAG      (1 << 6)        /* ¥¹¥¿¥Ã¥¯¥Õ¥©¥ë¥È */ | #define FP_SF_FLAG      (1 << 6)        /* ¥¹¥¿¥Ã¥¯¥Õ¥©¥ë¥È */ | 
| #define FP_ES_FLAG      (1 << 7)        /* ¥¨¥é¡¼¥µ¥Þ¥ê¥¹¥Æ¡¼¥¿¥¹ */ | #define FP_ES_FLAG      (1 << 7)        /* ¥¨¥é¡¼¥µ¥Þ¥ê¥¹¥Æ¡¼¥¿¥¹ */ | 
| #define FP_C0_FLAG      (1 << 8)        /* ¾ò·ï¥³¡¼¥É */ | #define FP_C0_FLAG      (1 << 8)        /* ¾ò·ï¥³¡¼¥É */ | 
| #define FP_C1_FLAG      (1 << 9)        /* ¾ò·ï¥³¡¼¥É */ | #define FP_C1_FLAG      (1 << 9)        /* ¾ò·ï¥³¡¼¥É */ | 
| #define FP_C2_FLAG      (1 << 10)       /* ¾ò·ï¥³¡¼¥É */ | #define FP_C2_FLAG      (1 << 10)       /* ¾ò·ï¥³¡¼¥É */ | 
| #define FP_TOP_FLAG     (7 << 11)       /* ¥¹¥¿¥Ã¥¯¥Ý¥¤¥ó¥È¤Î¥È¥Ã¥× */ | #define FP_TOP_FLAG     (7 << 11)       /* ¥¹¥¿¥Ã¥¯¥Ý¥¤¥ó¥È¤Î¥È¥Ã¥× */ | 
| #define FP_C3_FLAG      (1 << 14)       /* ¾ò·ï¥³¡¼¥É */ | #define FP_C3_FLAG      (1 << 14)       /* ¾ò·ï¥³¡¼¥É */ | 
| #define FP_B_FLAG       (1 << 15)       /* FPU ¥Ó¥¸¡¼ */ | #define FP_B_FLAG       (1 << 15)       /* FPU ¥Ó¥¸¡¼ */ | 
 |  |  | 
 | #define FP_TOP_SHIFT    11 | #define FP_TOP_SHIFT    11 | 
 | #define FP_TOP_GET()    ((FPU_STATUSWORD & FP_TOP_FLAG) >> FP_TOP_SHIFT) | #define FP_TOP_GET()    ((FPU_STATUSWORD & FP_TOP_FLAG) >> FP_TOP_SHIFT) | 
| Line 714  do { \ | Line 713  do { \ | 
 | } while (/*CONSTCOND*/0) | } while (/*CONSTCOND*/0) | 
 |  |  | 
 | /* FPU control register */ | /* FPU control register */ | 
| #define FP_CTRL_PC_SHIFT        8       /* ÅÙÀ©¸æ */ | #define FP_CTRL_PC_SHIFT        8       /* 精度é襫êÀ¡£ */ | 
| #define FP_CTRL_RC_SHIFT        10      /* ´Ý¤áÀ©¸æ */ | #define FP_CTRL_RC_SHIFT        10      /* 躥¯åâ¢ç°¸êÀ¡£ */ | 
 |  |  | 
| #define FP_CTRL_PC_24           0       /* ¥Æ¥¢¥¿¥³¥Ê¥ë */ | #define FP_CTRL_PC_24           0       /* éíÐ饤¥»ê¼¥ò */ | 
| #define FP_CTRL_PC_53           1       /* ¥Ì¥ï¥¿¥³¥Ê¥ë */ | #define FP_CTRL_PC_53           1       /* éàºé¥¤¥»ê¼¥ò */ | 
| #define FP_CTRL_PC_64           3       /* ¥¦¥Í¥È¡¦¥¿¥³¥Ê¥ë */ | #define FP_CTRL_PC_64           3       /* ë롣꾥ªî´¥»ê¼¥ò */ | 
 |  |  | 
 | #define FP_CTRL_RC_NEAREST_EVEN 0 | #define FP_CTRL_RC_NEAREST_EVEN 0 | 
 | #define FP_CTRL_RC_DOWN         1 | #define FP_CTRL_RC_DOWN         1 |