|
|
1.1 ! root 1: /* ! 2: * i8086.h ! 3: */ ! 4: #define FPTEST 1 ! 5: ! 6: #include <sys/reg.h> ! 7: #include <ieeefp.h> ! 8: ! 9: #define TBIT 0x0100 ! 10: ! 11: /* ! 12: * Operand or address size constants ! 13: */ ! 14: #define RM16 16 ! 15: #define RM32 32 ! 16: ! 17: #define OPD16 16 ! 18: #define OPD32 32 ! 19: ! 20: /* ! 21: * Some debugger types ! 22: */ ! 23: #define DBBYTE 1 ! 24: #define DBWORD 2 ! 25: #define DBLONG 4 ! 26: #define DBPTR32 4 ! 27: #define DBPTR48 6 ! 28: ! 29: /* ! 30: * Define the number of various register types available ! 31: */ ! 32: #define NSEGREGS 6 ! 33: #define NCTRLREGS 4 ! 34: #define NDBGREGS 8 ! 35: #define NTSTREGS 8 ! 36: ! 37: /* ! 38: * Offsets into the users area. ! 39: */ ! 40: #if 0 ! 41: #define UREGOFF (UPASIZE-(sizeof (struct ureg))) ! 42: #endif ! 43: ! 44: /* ! 45: * Registers from the user area after a core dump. ! 46: */ ! 47: struct ureg { ! 48: long ur_gs; ! 49: long ur_fs; ! 50: long ur_es; ! 51: long ur_ds; ! 52: long ur_di; ! 53: long ur_si; ! 54: long ur_bp; /* bp */ ! 55: long ur_fill; /* sp */ ! 56: long ur_bx; /* bx */ ! 57: long ur_dx; /* dx */ ! 58: long ur_cx; /* cx */ ! 59: long ur_ax; /* ax */ ! 60: long ur_trapno; ! 61: long ur_id; /* id */ ! 62: long ur_ip; /* ip */ ! 63: long ur_cs; /* cs */ ! 64: long ur_fw; /* fw */ ! 65: long ur_sp; /* sp */ ! 66: long ur_ss; /* ss */ ! 67: #if FPTEST ! 68: long ur_filler; ! 69: struct _fpstate ur_fpstate; ! 70: #endif ! 71: }; ! 72: ! 73: /* ! 74: * Registers. ! 75: */ ! 76: typedef struct reg { ! 77: unsigned r_ax; /* Accumulator */ ! 78: unsigned r_bx; /* Base */ ! 79: unsigned r_cx; /* Count */ ! 80: unsigned r_dx; /* Data */ ! 81: unsigned r_sp; /* Stack pointer */ ! 82: unsigned r_bp; /* Base pointer */ ! 83: unsigned r_si; /* Source index */ ! 84: unsigned r_di; /* Destination index */ ! 85: unsigned r_cs; /* Code segment */ ! 86: unsigned r_ds; /* Data segment */ ! 87: unsigned r_ss; /* Stack segment */ ! 88: unsigned r_es; /* Extra segment */ ! 89: unsigned r_fs; ! 90: unsigned r_gs; ! 91: unsigned r_ip; /* Instruction pointer */ ! 92: unsigned r_fw; /* Status flags */ ! 93: unsigned valid; /* 0 = uninitialized */ ! 94: } REG; ! 95: ! 96: /* ! 97: * Instruction table. ! 98: */ ! 99: typedef struct { ! 100: unsigned i_code; /* Code */ ! 101: unsigned i_mask; /* Mask */ ! 102: char *i_name; /* Name */ ! 103: } INS; ! 104: ! 105: /* ! 106: * Functions. ! 107: */ ! 108: char *putifmt(); ! 109: char *fmatPercent(); ! 110: ! 111: /* ! 112: * Global symbols. ! 113: */ ! 114: extern int cacdata; /* Current word in cache */ ! 115: extern int cacaddr; /* Address of word in cache */ ! 116: extern int cacsegn; /* Segment number of word in cache */ ! 117: extern int sysflag; /* Executing a system call */ ! 118: extern BIN sin; /* Instruction after sys call */ ! 119: extern REG reg; /* General registers */ ! 120: ! 121: /* ! 122: * Tables. ! 123: */ ! 124: extern char *formtab[4][4]; /* Format table */ ! 125: extern char regitab[]; /* Register name table */ ! 126: extern char *regbtab[]; /* Byte register table */ ! 127: extern char *regwtab[]; /* Word register table */ ! 128: extern char *indmtab[]; /* Indirect mode table */ ! 129: extern char *jumptab[]; /* Jump table */ ! 130: extern char *sysitab[]; /* System call table */ ! 131: extern INS insrtab[]; /* Instruction table */ ! 132: extern INS fpinstab[]; /* 8087 Instruction table */ ! 133: extern INS vminstab[]; /* Virtual Mode Instruction table */ ! 134: ! 135: extern char *opStrMap1[]; /* Map 1 of the instruction strings */ ! 136: extern char *opStrMap2[]; /* Map 2 of the instruction strings */ ! 137: extern char *grpStrMap0[]; /* Map "grp0" of the instruction strings */ ! 138: extern char *grpStrMap1[]; /* Map "grp1" of the instruction strings */ ! 139: extern char *grpStrMap2[]; /* Map "grp2" of the instruction strings */ ! 140: extern char *grpStrMap3[]; /* Map "grp3" of the instruction strings */ ! 141: extern char *grpStrMap4[]; /* Map "grp4" of the instruction strings */ ! 142: extern char *grpStrMap5[]; /* Map "grp5" of the instruction strings */ ! 143: extern char *grpStrMap6[]; /* Map "grp6" of the instruction strings */ ! 144: extern char *grpStrMap7[]; /* Map "grp7" of the instruction strings */ ! 145: extern char *grpStrMap8[]; /* Map "grp8" of the instruction strings */ ! 146: extern char **grpStrMap[]; /* Map "grp" of the instruction strings */ ! 147: extern char *segReg[]; /* Strings for the segment regs */ ! 148: extern char *genReg8[]; /* Strings for 8 bit general regs */ ! 149: extern char *genReg16[]; /* Strings for 16 bit general regs */ ! 150: extern char *genReg32[]; /* Strings for 32 bit general regs */ ! 151: extern char **genReg[]; /* Strings for 32 bit general regs */ ! 152: extern char *ctrlReg[]; /* Strings for the control regs */ ! 153: extern char *dbgReg[]; /* Strings for the debug regs */ ! 154: extern char *tstReg[]; /* Strings for the test regs */ ! 155: extern char *modRMtab16[]; /* Strings for 16b indirect addressing */ ! 156: extern char *modRMtab32[]; /* Strings for 16b indirect addressing */ ! 157: extern char **modRMtab[]; /* Strings for indirect addressing */ ! 158: extern char *sibtab0[]; /* Strings for indexed addressing * 1 */ ! 159: extern char *sibtab1[]; /* Strings for indexed addressing * 2 */ ! 160: extern char *sibtab2[]; /* Strings for indexed addressing * 4 */ ! 161: extern char *sibtab3[]; /* Strings for indexed addressing * 8 */ ! 162: extern char **sibtab[]; /* Strings for indexed addressing * 8 */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.