home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / detk45he.zip / MI.H < prev    next >
C/C++ Source or Header  |  1999-03-15  |  19KB  |  540 lines

  1. /*static char *SCCSID = "@(#)mi.h       6.2 92/01/28";*/
  2. /*
  3.  *      Machine instruction, flag definitions and character types
  4.  *
  5.  *      Copyright 1992 IBM Corporation
  6.  */
  7.  
  8. /* NOINC */
  9. #if __IBMC__ || __IBMCPP__
  10.    #pragma info( none )
  11.       #ifndef __CHKHDR__
  12.          #pragma info( none )
  13.       #endif
  14.    #pragma info( restore )
  15. #endif
  16. /* INC */
  17.  
  18. #ifndef __MI__
  19. #define __MI__
  20.  
  21.  
  22. /*      386 eflags definitions
  23. */
  24. #define F_ID            0x00200000      // CPU ID instruction supported
  25. #define F_VIP           0x00100000      // (V)irtual (I)nterrupt (P)ending
  26. #define F_VIF           0x00080000      // (V)irtual (I)nterrupt (F)lag
  27. #define F_AC            0x00040000      /* (A)lignment (C)heck   */
  28. #define F_VM            0x00020000      /* (V)irtual 8086 (M)ode */
  29. #define F_RF            0x00010000      /* (R)esume (F)lag       */
  30. #define F_NT            0x00004000      /* (N)ested (T)ask       */
  31. #define F_NTCLEAR       (~F_NT)
  32. #define F_IOPL0         0
  33. #define F_IOPL1         0x00001000
  34. #define F_IOPL2         0x00002000
  35. #define F_IOPL3         0x00003000
  36. #define F_IOPLMASK      0x00003000      /* (I)/(O) (P)rivilege (L)evel */
  37. #define F_IOPLSYS       F_IOPL3         /* wide open                   */
  38. #define F_IOPLclear     (~F_IOPLMASK)
  39. #define F_OVERFLOW      0x00000800
  40. #define F_DIRECTION     0x00000400
  41. #define F_INTERRUPT     0x00000200
  42. #define F_TRACE         0x00000100
  43. #define F_SIGN          0x00000080
  44. #define F_ZERO          0x00000040
  45. #define F_AUX           0x00000010
  46. #define F_PARITY        0x00000004
  47. #define F_CARRY         0x00000001
  48. #define F_UNDEFINED     0x0000802A
  49.  
  50. /*      CR0 (Machine Status Register) bits
  51. */
  52. #define CR0_PE          0x00000001      /* (P)rotect (E)nable                   */
  53. #define CR0_MP          0x00000002      /* (M)onitor (P)rocessor extension      */
  54. #define CR0_EM          0x00000004      /* (EM)ulate processor extension        */
  55. #define CR0_TS          0x00000008      /* (T)ask (thread) (S)witched           */
  56. #define CR0_ET          0x00000010      /* (E)xtension (T)ype, 0/1=287/387      */
  57. #define CR0_NE          0x00000020      /* (N)umeric (E)xception 0/1=use 2/10h  */
  58. #define CR0_WP          0x00010000      /* (W)rite (P)rotect in rings 0-2       */
  59. #define CR0_AM          0x00040000      /* (A)lignment (M)ask, enable EFlags.AC */
  60. #define CR0_NW          0x20000000      /* (N)o (W)rite-through cache           */
  61. #define CR0_CD          0x40000000      /* (C)ache (D)isable                    */
  62. #define CR0_PG          0x80000000      /* (P)a(G)ing enable                    */
  63. #define CR0_RESERVED    0x1ffaffc0      /* reserved bits                        */
  64.  
  65. /*
  66.  *      Cache Operating Modes:
  67.  *
  68.  *      CR0_CD CR0_NW   Cache Fills     Write-Throughs and Invalidates
  69.  *      ------ ------   -----------     ------------------------------
  70.  *         1      1      disabled               disabled
  71.  *         1      0      disabled               enabled
  72.  *         0      1      INVALID combination - CR0 load causes GP fault
  73.  *         0      0      enabled                enabled (Normal mode)
  74.  */
  75.  
  76. /*      Machine Status Word bits (obsolete)
  77. */
  78. #define MSW_PE          CR0_PE
  79. #define MSW_MP          CR0_MP
  80. #define MSW_EM          CR0_EM
  81. #define MSW_TS          CR0_TS
  82. #define MSW_ET          CR0_ET
  83.  
  84. // Pentium Feature Flags                // 148688
  85. #define    VME_SUPPORTED    0x02            // 148688
  86. #define  DE_SUPPORTED    0x04            // 148688
  87.  
  88. /*      CR3 (Page Directory Base Register) bits
  89. */
  90. #define CR3_WRITETHROUGH 0x00000008     /* write-through cache (486 ignores)    */
  91. #define CR3_CACHEDISABLE 0x00000010     /* cache disable                        */
  92. #define CR3_FRAME        0xfffff000     /* page directory physical frame number */
  93. #define CR3_RESERVED     0x00000fe7     /* reserved bits                        */
  94.  
  95. //    CR4 bits
  96. #define CR4_VME          0x00000001
  97. #define CR4_PVI          0x00000002
  98. #define CR4_DE      0x00000008            // 148688
  99.  
  100. /*      Debug Registers
  101. */
  102. #define DR_COUNT        0x4             /* number of debug registers
  103.  
  104. /*      DR6 (Debug Registers Status Register) bits
  105. */
  106. #define DR6_B0          0x00000001      /* breakpoint register 0 triggered */
  107. #define DR6_B1          0x00000002      /* breakpoint register 1 triggered */
  108. #define DR6_B2          0x00000004      /* breakpoint register 2 triggered */
  109. #define DR6_B3          0x00000008      /* breakpoint register 3 triggered */
  110. #define DR6_BD          0x00002000      /* ICE hardware active             */
  111. #define DR6_BS_BIT_INDEX       0xe      /* Single step trap                */
  112. #define DR6_BS          (1 << DR6_BS_BIT_INDEX)
  113. #define DR6_BT          0x00008000      /* TSS trap                        */
  114.  
  115. #define DR6_VALID       (DR6_B0|DR6_B1|DR6_B2|DR6_B3|DR6_BD|DR6_BS|DR6_BT)
  116. #define DR6_RESERVED    ~(DR6_VALID)
  117.  
  118. /*      DR7 (Debug Register Control Register) bits
  119. */
  120. #define DR7_L0          0x00000001      /* DR0 Local Enable  */
  121. #define DR7_G0          0x00000002      /* DR0 Global Enable */
  122. #define DR7_L1          0x00000004      /* DR1 Local Enable  */
  123. #define DR7_G1          0x00000008      /* DR1 Global Enable */
  124. #define DR7_L2          0x00000010      /* DR2 Local Enable  */
  125. #define DR7_G2          0x00000020      /* DR2 Global Enable */
  126. #define DR7_L3          0x00000040      /* DR3 Local Enable  */
  127. #define DR7_G3          0x00000080      /* DR3 Global Enable */
  128.  
  129. #define DR7_LE          0x00000100      /* Local  - Exact Match */
  130. #define DR7_GE          0x00000200      /* Global - Exact Match */
  131.  
  132. #define DR7_RW0         0x00030000      /* DR0 RW bits  */
  133. #define DR7_LEN0        0x000c0000      /* DR0 Len bits */
  134. #define DR7_RW1         0x00300000      /* DR1 RW bits  */
  135. #define DR7_LEN1        0x00c00000      /* DR1 Len bits */
  136. #define DR7_RW2         0x03000000      /* DR2 RW bits  */
  137. #define DR7_LEN2        0x0c000000      /* DR2 Len bits */
  138. #define DR7_RW3         0x30000000      /* DR3 RW bits  */
  139. #define DR7_LEN3        0xc0000000      /* DR3 Len bits */
  140.  
  141. #define DR7_RESERVED    0x0000fc00      /* DR7 Intel Reserved */
  142.  
  143. #define DR7_EXECUTE     0x0             /* Execute              */
  144. #define DR7_WRITE       0x1             /* Data Write           */
  145. #define DR7_IO          0x2             /* 148688 - I/O Read or Write    */
  146. #define DR7_READWRITE   0x3             /* Data Read or Write   */
  147.  
  148. #define DR7_LEN_1       0x0             /* Length 1 bits        */
  149. #define DR7_LEN_2       0x1             /* Length 2             */
  150. #define DR7_LEN_4       0x3             /* Length 4             */
  151.  
  152. /*      Machine instruction, flag definitions and character types
  153. */
  154. #define MI_ARPL         0x63            /* ARPL instruction             */
  155. #define MI_HLT          0xf4            /* HLT instruction              */
  156. #define MI_OPERANDSIZE  0x66            /* Operand size override prefix */
  157. #define MI_ADDRESSSIZE  0x67            /* Address size override prefix */
  158. #define MI_TWOBYTEOP    0x0f            /* Two byte opcode prefix       */
  159.  
  160. #define MI_POP_DS       0x1f
  161. #define MI_POP_ES       0x07
  162. #define MI_POP_FS       0xA1            /* second byte to 0Fh opcode    */
  163. #define MI_POP_GS       0xA9            /* second byte to 0Fh opcode    */
  164.  
  165. #define MI_INT3         0xCC
  166. #define MI_INT          0xCD
  167. #define MI_IRET         0xCF
  168. #define MI_LONG_JMP     0xEA
  169. #define MI_LONG_CALL    0x9A
  170. #define MI_LONG_RET     0xCB
  171. #define MI_LONG_RETn    0xCA
  172. #define MI_NEAR_RET     0xC3
  173.  
  174. #define MI_IN_PORT_AL   0xE4            /* Opcode of IN port,AL  */
  175. #define MI_IN_PORT_AX   0xE5            /* Opcode of IN port,AX  */
  176. #define MI_OUT_PORT_AL  0xE6            /* Opcode of OUT port,AL */
  177. #define MI_OUT_PORT_AX  0xE7            /* Opcode of OUT port,AX */
  178. #define MI_IN_DX_AL     0xEC            /* Opcode of IN DX,AL    */
  179. #define MI_IN_DX_AX     0xED            /* Opcode of IN DX,AX    */
  180. #define MI_OUT_DX_AL    0xEE            /* Opcode of OUT DX,AL   */
  181. #define MI_OUT_DX_AX    0xEF            /* Opcode of OUT DX,AX   */
  182.  
  183. #define MI_GROUP5       0xFF            /* 5th group of 11-bit opcode inst.s */
  184. #define MI_SEGES        0x26            /* ES override prefix */
  185. #define MI_SEGCS        0x2E            /* CS override prefix */
  186. #define MI_SEGSS        0x36            /* SS override prefix */
  187. #define MI_SEGDS        0x3E            /* DS override prefix */
  188. #define MI_SEGFS        0x64            /* FS override prefix */
  189. #define MI_SEGGS        0x65            /* GS override prefix */
  190.  
  191. /*      ESC opcode prefix and mask
  192. */
  193. #define MI_ESCMASK      0xF8
  194. #define MI_ESC          0xD8
  195.  
  196. /*      MOD field equates
  197. */
  198. #define MI_MODMASK      0xC0            /* MOD field mask                       */
  199. #define MI_MODSHIFT     6               /* MOD field shift                      */
  200. #define MI_MODNONE      0x00            /* MOD = 0 (no displacement)            */
  201. #define MI_MODBYTE      0x40            /* MOD = 1 (byte displacement)          */
  202. #define MI_MODWORD      0x80            /* MOD = 2 (word displacement)          */
  203. #define MI_MODREG       0xC0            /* MOD = 3 (R/M field selects register) */
  204.  
  205. /*      REG field equates
  206. */
  207. #define MI_REGMASK      0x38            /* REG field mask    */
  208. #define MI_REGSHIFT     3               /* REG field shift   */
  209. #define MI_REGAX        0x00            /* REG = 0 (AX/AL)   */
  210. #define MI_REGCX        0x08            /* REG = 1 (CX/CL)   */
  211. #define MI_REGDX        0x10            /* REG = 2 (DX/DL)   */
  212. #define MI_REGBX        0x18            /* REG = 3 (BX/BL)   */
  213. #define MI_REG3         0x18            /* REG = 3 (part of 11-bit opcode) */
  214. #define MI_REGSP        0x20            /* REG = 4 (SP/AH)   */
  215. #define MI_REGBP        0x28            /* REG = 5 (BP/CH)   */
  216. #define MI_REGSI        0x30            /* REG = 6 (SI/DH)   */
  217. #define MI_REGDI        0x38            /* REG = 7 (DI/BH)   */
  218.  
  219. #define MI_REGES        0x00            /* REG = 0  MOV seg,r/m or MOV r/m,seg */
  220. #define MI_REGCS        0x08            /* REG = 1           */
  221. #define MI_REGSS        0x10            /* REG = 2           */
  222. #define MI_REGDS        0x18            /* REG = 3           */
  223. #define MI_REGFS        0x20            /* REG = 4           */
  224. #define MI_REGGS        0x28            /* REG = 5           */
  225.  
  226. /*      R/M field equates for memory operands (for 16-bit instructions)
  227. */
  228. #define MI_RMMASK       0x07            /* R/M field mask    */
  229. #define MI_RMSHIFT      0               /* R/M field shift   */
  230. #define MI_RMBXSI       0x00            /* R/M = 0 ([BX+SI]) */
  231. #define MI_RMBXDI       0x01            /* R/M = 1 ([BX+DI]) */
  232. #define MI_RMBPSI       0x02            /* R/M = 2 ([BP+SI]) */
  233. #define MI_RMBPDI       0x03            /* R/M = 3 ([BP+DI]) */
  234. #define MI_RMSI         0x04            /* R/M = 4 ([SI])    */
  235. #define MI_RMDI         0x05            /* R/M = 5 ([DI])    */
  236. #define MI_RMBP         0x06            /* R/M = 6 ([BP])    */
  237. #define MI_RMBX         0x07            /* R/M = 7 ([BX])    */
  238.  
  239. /*      32 bit instruction equates
  240. */
  241. #define MI_SIB_SSMASK           0xc0
  242. #define MI_SIB_SSSHIFT          0x06
  243.  
  244. #define MI_SIB_INDEXMASK        0x38
  245. #define MI_SIB_INDEXSHIFT       0x03
  246. #define MI_SIB_INDEXNONE        0x20
  247.  
  248. #define MI_SIB_BASEMASK         0x07
  249. #define MI_SIB_BASESHIFT        0x00
  250. #define MI_SIB_BASEESP          0x04
  251. #define MI_SIB_BASENONE         0x05
  252.  
  253. #define MI_RMEDX                0x02
  254. #define MI_RMSIB                0x04
  255. #define MI_RMDISP               0x05
  256. #define MI_RMEBP                0x05
  257.  
  258. #define MI_REG6                 0x30
  259. #define MI_REGCR0               0x00
  260.  
  261. /*      following machine instructions are used in Enable_386_Specific_code
  262. **      in virtmgr.asm
  263. */
  264. #define MI_PUSH_AX              0x50    /* "push ax" instruction                */
  265. #define MI_PUSH_IMM             0x68    /* "push immediate 16/32" instruction   */
  266. #define MI_MOV_REG_IMM          0xB8    /* opcode for "mov reg,immediate" instr */
  267. #define MI_MOV_REG_IMMEDIATE    0xB8    /* opcode for "mov reg,immediate" instr */
  268. #define MI_MOV_REG_REGMEM       0x8B    /* opcode for "mov reg,r/m 16/32" instr */
  269.  
  270. /*      Miscellaneous Opcodes
  271. */
  272. #define MI_ADD_AX_IMM           0x05    /* Opcode for Add (E)AX,imm(32)16       */
  273. #define MI_CALL_NEAR_REL        0xE8    /* Opcode for Call NEAR (relative)      */
  274. #define SIZE_CALL_NEAR_REL      5       /* Length of Call NEAR (relative) instr */
  275.  
  276. #define MI_LMSW_OPCODE          0x01    /* LMSW */
  277.  
  278. #define MI_GET_CRx_OPCODE       0x20    /* MOV r32,CRx   */
  279. #define MI_GET_DRx_OPCODE       0x21    /* MOV r32,DRx   */
  280. #define MI_SET_CRx_OPCODE       0x22    /* MOV CRx,r32   */
  281. #define MI_SET_DRx_OPCODE       0x23    /* MOV DRx,r32   */
  282. #define MI_GET_TRx_OPCODE       0x24    /* MOV r32,TRx   */
  283. #define MI_SET_TRx_OPCODE       0x26    /* MOV TRx,r32   */
  284.  
  285. #define MI_MOV_REG8_MEM8        0x8A    /* MOV reg8,mem8 */
  286. #define MI_MOV_SEG_MEM_OPCODE   0x8e    /* MOV seg,r/m16 */
  287.  
  288. /* WORD structure
  289. */
  290. struct w_s {
  291.         uchar_t lobyte;
  292.         uchar_t hibyte;
  293. };
  294. #define LowByte         lobyte
  295. #define HighByte        hibyte
  296.  
  297. /* DWORD structure
  298. */
  299. struct dw_s {
  300.         ushort_t loword;
  301.         ushort_t hiword;
  302. };
  303. #define LowWord         loword
  304. #define HighWord        hiword
  305.  
  306. /* Far pointer structure
  307. */
  308. struct  FarPtr {
  309.         ushort_t Offst;
  310.         ushort_t Segmt;
  311. };
  312.  
  313. /* Far 32 bit pointer structure
  314. */
  315. struct FarPtr32 {
  316.         ulong_t Offst32;        /* 32 bit offset */
  317.         ushort_t Segmt32;       /* segment       */
  318.         ushort_t Pad32;         /* segment pad   */
  319. };
  320.  
  321. /***    RETF16 - 16 bit RETF frame definition
  322.  *
  323.  *      16 bit RETF frame structure
  324.  */
  325.  
  326. typedef struct retf16_s {
  327.         ushort_t retf16_ip;
  328.         ushort_t retf16_cs;
  329. } RETF16;
  330.  
  331. typedef RETF16 *PRETF16;
  332.  
  333. /***    RETF32 - 32 bit RETF frame definition
  334.  *
  335.  *      32 bit RETF frame structure
  336.  */
  337.  
  338. typedef struct retf32_s {
  339.         ulong_t retf32_eip;
  340.         ushort_t retf32_cs;
  341.         ushort_t retf32_padcs;
  342. } RETF32;
  343.  
  344. typedef RETF32 *PRETF32;
  345.  
  346. /***    IRET16 - 16 bit IRET frame definition
  347.  *
  348.  *      16 bit IRET frame structure
  349.  */
  350.  
  351. typedef struct iret16_s {
  352.         ushort_t iret16_ip;
  353.         ushort_t iret16_cs;
  354.         ushort_t iret16_flag;
  355. } IRET16;
  356.  
  357. typedef IRET16 *PIRET16;
  358.  
  359. /* 16 bit Iret stack frame without privilege level transition
  360. */
  361. struct Iret_s {
  362.         struct  FarPtr  I_CSIP;
  363.         ushort_t I_FLAGS;
  364. };
  365.  
  366. struct IretFrame {
  367.         ushort_t IretIP ;
  368.         ushort_t IretCS ;
  369.         ushort_t IretFLAGS;
  370. };
  371.  
  372. /* ASM IretCSIP EQU     <DWORD PTR IretIP> */
  373.  
  374. /***    IRET32 - 32 bit IRET frame definition
  375.  *
  376.  *      32 bit IRET frame structure
  377.  */
  378.  
  379. typedef struct iret32_s {
  380.         ulong_t iret32_eip;
  381.         ushort_t iret32_cs;
  382.         ushort_t iret32_padcs;
  383.         ulong_t iret32_eflag;
  384. } IRET32;
  385.  
  386. typedef IRET32 *PIRET32;
  387.  
  388. /* 32 bit Iret stack frame without privilege level transition
  389. */
  390. struct Iret32_s {
  391.         struct  FarPtr32 I32_CSEIP;
  392.         ulong_t I32_EFLAGS;
  393. };
  394. /* ASM
  395. I32_CS          EQU     <I32_CSEIP.Segmt32>
  396. I32_EIP         EQU     <I32_CSEIP.Offst32>
  397. I32_IP          EQU     <I32_CSEIP.Offst32.loword>
  398. I32_FLAGS       EQU     <I32_EFLAGS.loword>
  399. */
  400.  
  401. /***    PLTIRET16 - 16 bit IRET frame definition
  402.  *
  403.  *      16 bit IRET frame structure with privilege level transtion
  404.  */
  405.  
  406. typedef struct pltiret16_s {
  407.         ushort_t pltiret16_ip;
  408.         ushort_t pltiret16_cs;
  409.         ushort_t pltiret16_flag;
  410.         ushort_t pltiret16_sp;
  411.         ushort_t pltiret16_ss;
  412. } PLTIRET16;
  413.  
  414. typedef PLTIRET16 *PPLTIRET16;
  415.  
  416. /* 16 bit Protected mode iret stack frame with privilege level transition
  417. */
  418. struct PLTIret_s {
  419.         struct  FarPtr  PI_CSIP;
  420.         ushort_t PI_FLAGS;
  421.         struct  FarPtr  PI_SSSP;
  422. };
  423.  
  424. struct PLTIretFrame {
  425.         ushort_t PLTIretIP;
  426.         ushort_t PLTIretCS;
  427.         ushort_t PLTIretFLAGS;
  428.         ushort_t PLTIretSP;
  429.         ushort_t PLTIretSS;
  430. };
  431.  
  432. /* ASM
  433. PLTIretCSIP     EQU     DWORD PTR PLTIretIP
  434. PLTIretSSSP     EQU     DWORD PTR PLTIretSP
  435. */
  436.  
  437. /***    PLTIRET32 - 32 bit IRET frame definition
  438.  *
  439.  *      32 bit IRET frame structure with privilege level transtion
  440.  */
  441.  
  442. typedef struct pltiret32_s {
  443.         ulong_t pltiret32_eip;
  444.         ushort_t pltiret32_cs;
  445.         ushort_t pltiret32_padcs;
  446.         ulong_t pltiret32_eflag;
  447.         ulong_t pltiret32_esp;
  448.         ushort_t pltiret32_ss;
  449.         ushort_t pltiret32_padss;
  450. } PLTIRET32;
  451.  
  452. typedef PLTIRET32 *PPLTIRET32;
  453.  
  454. /* 32 bit Protected mode iret stack frame with privilege level transition
  455. */
  456. struct PLTIret32_s {
  457.         struct  FarPtr32 PI32_CSEIP;
  458.         ulong_t PI32_EFLAGS;
  459.         struct  FarPtr32 PI32_SSESP;
  460. };
  461. /* ASM
  462. PI32_CS         EQU     <PI32_CSEIP.Segmt32>
  463. PI32_EIP        EQU     <PI32_CSEIP.Offst32>
  464. PI32_SS         EQU     <PI32_SSESP.Segmt32>
  465. PI32_ESP        EQU     <PI32_SSESP.Offst32>
  466. PI32_FLAGS      EQU     <WORD PTR PI32_EFLAGS>
  467. */
  468.  
  469. /* Generic 32-bit pointer structure
  470. */
  471. /* XLATOFF */
  472. union ptr_u {
  473.         struct FarPtr   ptr_far16;      /* 16-bit far pointer */
  474.         ulong_t         ptr_flat;       /* 32-bit flat pointer */
  475. };
  476. typedef union ptr_u     ptr_t;          /* Generic pointer type */
  477.  
  478. #define ptr_sel         ptr_far16.Segmt
  479. #define ptr_off         ptr_far16.Offst
  480. /* XLATON */
  481.  
  482. /* ASM
  483. ptr_t   STRUC
  484.         ptr_flat        DD      ?
  485. ptr_t   ENDS
  486. ptr_off         equ     <ptr_flat.Offst>
  487. ptr_sel         equ     <ptr_flat.Segmt>
  488. */
  489.  
  490.  
  491. /* PUSHA stack frame
  492. */
  493. struct pusha_s {
  494.         ushort_t pas_di;
  495.         ushort_t pas_si;
  496.         ushort_t pas_bp;
  497.         ushort_t pas_sp;
  498.         ushort_t pas_bx;
  499.         ushort_t pas_dx;
  500.         ushort_t pas_cx;
  501.         ushort_t pas_ax;
  502. };
  503.  
  504. /* PUSHAD stack frame
  505. */
  506. struct  pushad_s {
  507.         ulong_t pads_edi;
  508.         ulong_t pads_esi;
  509.         ulong_t pads_ebp;
  510.         ulong_t pads_esp;
  511.         ulong_t pads_ebx;
  512.         ulong_t pads_edx;
  513.         ulong_t pads_ecx;
  514.         ulong_t pads_eax;
  515. };
  516.  
  517. /* ASM
  518. pads_di EQU     <WORD PTR pads_edi>
  519. pads_si EQU     <WORD PTR pads_esi>
  520. pads_bp EQU     <WORD PTR pads_ebp>
  521. pads_sp EQU     <WORD PTR pads_esp>
  522. pads_bx EQU     <WORD PTR pads_ebx>
  523. pads_dx EQU     <WORD PTR pads_edx>
  524. pads_cx EQU     <WORD PTR pads_ecx>
  525. pads_ax EQU     <WORD PTR pads_eax>
  526. */
  527.  
  528. #endif /* __MI__ */
  529.  
  530.  
  531. /* NOINC */
  532. #if __IBMC__ || __IBMCPP__
  533.    #pragma info( none )
  534.       #ifndef __CHKHDR__
  535.          #pragma info( restore )
  536.       #endif
  537.    #pragma info( restore )
  538. #endif
  539. /* INC */
  540.