Diff for /np2/i386c/ia32/cpu.h between versions 1.37 and 1.42

version 1.37, 2008/03/22 04:03:07 version 1.42, 2012/01/08 11:32:16
Line 1 Line 1
 /*      $Id$    */  
   
 /*  /*
  * Copyright (c) 2002-2003 NONAKA Kimihiro   * Copyright (c) 2002-2003 NONAKA Kimihiro
  * All rights reserved.   * All rights reserved.
Line 215  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 266  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 452  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 483  do { \ Line 481  do { \
         CPU_PREV_ESP = (esp); \          CPU_PREV_ESP = (esp); \
 } while (/*CONSTCOND*/0)  } while (/*CONSTCOND*/0)
 #define CPU_SET_PREV_ESP()      CPU_SET_PREV_ESP1(CPU_ESP)  #define CPU_SET_PREV_ESP()      CPU_SET_PREV_ESP1(CPU_ESP)
 #define CPU_CLEAR_PREV_ESP(esp) \  #define CPU_CLEAR_PREV_ESP() \
 do { \  do { \
         CPU_STATSAVE.cpu_stat.backout_sp = 0; \          CPU_STATSAVE.cpu_stat.backout_sp = 0; \
 } while (/*CONSTCOND*/0)  } while (/*CONSTCOND*/0)
Line 621  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 634  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 687  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 716  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
Line 777  typedef struct { Line 774  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.37  
changed lines
  Added in v.1.42


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