Diff for /np2/i386c/ia32/cpu.h between versions 1.39 and 1.44

version 1.39, 2011/12/21 16:33:44 version 1.44, 2012/02/07 09:11:10
Line 170  typedef struct { Line 170  typedef struct {
         UINT8           user_mode;          UINT8           user_mode;
   
         UINT8           hlt;          UINT8           hlt;
         UINT8           bp;     /* break point bitmap */          UINT8           bp;             /* break point bitmap */
         UINT8           bp_ev;  /* break point event */          UINT8           bp_ev;          /* break point event */
   
         UINT8           backout_sp;     /* backout ESP, when exception */          UINT8           backout_sp;     /* backout ESP, when exception */
   
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;
         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'ed */
         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 650  extern UINT16 *reg16_b53[0x100]; Line 649  extern UINT16 *reg16_b53[0x100];
 extern UINT32 *reg32_b20[0x100];  extern UINT32 *reg32_b20[0x100];
 extern UINT32 *reg32_b53[0x100];  extern UINT32 *reg32_b53[0x100];
   
 extern const char *reg8_str[8];  extern const char *reg8_str[CPU_REG_NUM];
 extern const char *reg16_str[8];  extern const char *reg16_str[CPU_REG_NUM];
 extern const char *reg32_str[8];  extern const char *reg32_str[CPU_REG_NUM];
   extern const char *sreg_str[CPU_SEGREG_NUM];
   
 char *cpu_reg2str(void);  char *cpu_reg2str(void);
 #if defined(USE_FPU)  #if defined(USE_FPU)
Line 685  void dbg_printf(const char *str, ...); Line 685  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 714  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
Line 775  typedef struct { Line 775  typedef struct {
 } disasm_context_t;  } disasm_context_t;
   
 int disasm(UINT32 *eip, disasm_context_t *ctx);  int disasm(UINT32 *eip, disasm_context_t *ctx);
   char *cpu_disasm2str(UINT32 eip);
   
 #ifdef __cplusplus  #ifdef __cplusplus
 }  }

Removed from v.1.39  
changed lines
  Added in v.1.44


RetroPC.NET-CVS <cvs@retropc.net>