home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / dos / tools / inter47 / opcodes.lst < prev    next >
File List  |  1995-06-04  |  117KB  |  5,607 lines

  1. [Last change: 6/04/95]
  2.  
  3. ------------------------------------------------------------
  4. This is DOC 'bout undocument command and document command
  5. of any last processors. And 'bout some registers and
  6. Chip specified stuffs.
  7. ------------------------------------------------------------
  8.  (C) (P) Potemkin's Hackers Group 1994,1995
  9. ------------------------------------------------------------
  10. Revision 1.27             01 May 1995
  11. ------------------------------------------------------------
  12. All Your messages send to ->
  13. E-mail: avp@iron.misa.ac.ru
  14. AirMail:
  15.     111538 RUSSIA,    Moscow
  16.     P.O.        box 430
  17.     Potemkin's Hackers Group (PHG)
  18. -------------------------------------------------------------
  19.  
  20.  
  21. ---------------------------------------------------
  22. AAA   -     ASCII adjust AX after addition
  23.  
  24.  
  25. CPU:  8086+
  26.  
  27. Type of Instruction: User
  28.  
  29. Instruction:  AAA   ; (no operands)
  30.  
  31.  
  32. Description:
  33.  
  34.     IF ((( AL and 0FH ) > 9 ) or (AF==1)
  35.     THEN {
  36.         IF CPU<286 THEN {  AL <- AL+6 }
  37.                ELSE {  AX <- AX+6 }
  38.         AH <- AH+1
  39.         CF <- 1
  40.         AF <- 1
  41.     } ELSE {
  42.         CF <- 0
  43.         AF <- 0
  44.     }
  45.     AL <- AL and 0Fh
  46.  
  47.  
  48. Note: This istruction incorrectly documented in Intel's materials.
  49.       See description field.
  50.  
  51. Flags Affected:    AF,CF        (modified)
  52.         OF,SF,ZF,PF (undefined)
  53.  
  54.  
  55. CPU mode: RM,PM,VM,SMM
  56.  
  57. +++++++++++++++++++++++
  58. Physical Form:
  59. COP (Code of Operation)     : 37H
  60.  
  61. Clocks:
  62.         AAA
  63. 8086:        4
  64. 8088:        4
  65. 80186:        8
  66. 80286:        3
  67. 80386:        4
  68. i486:        3
  69. Pentium:    3
  70.  
  71. Cx486SLC:    4
  72. Cx486DX:    4
  73. IBM 486BL3X:    4
  74. UMC U5S:    1
  75.  
  76.  
  77. ---------------------------------------------------
  78. AAD    - ASCII adjust AX before Division
  79.  
  80. CPU:  8086+
  81.  
  82. Type of Instruction: User
  83.  
  84. Instruction:  AAD basen
  85.  
  86.  
  87. Description:
  88.         AL <- (AH*basen) + AL
  89.         AH <- 0
  90.  
  91.  
  92.  
  93. Flags Affected: SF,ZF,PF    (modified)
  94.         OF,AF,CF    (undefined)
  95.  
  96. CPU mode: RM,PM,VM,SMM
  97.  
  98. Note:    AAD    without operands means AAD with operand 0AH.
  99.  
  100. Note: NECs understand only AAD 0AH form.
  101.  
  102. +++++++++++++++++++++++
  103.  
  104. Physical Form: AAD imm8
  105.  
  106. COP (Code of Operation)     : D5H    imm8
  107.  
  108. Clocks:        AAD 0AH
  109. 8086:        60
  110. 80186:        15
  111. 80286:        14
  112. 80386:        19
  113. i486:        14
  114. Pentium:    10
  115.  
  116. Cx486SLC:    4
  117. Cx486DX:    4
  118.  
  119. IBM 486BL3X:    15
  120. UMC    U5S:    11
  121.  
  122. ---------------------------------------------------
  123. AAM    - ASCII adjust AX after Multiply
  124.  
  125. CPU:  8086+
  126.  
  127. Type of Instruction: User
  128.  
  129. Instruction:  AAM basen
  130.  
  131.  
  132. Description:
  133.         AH <- AL  / basen
  134.         AL <- AL MOD basen
  135.  
  136.  
  137.  
  138. Flags Affected: SF,ZF,PF    (modified)
  139.         OF,AF,CF    (undefined)
  140.  
  141. CPU mode: RM,PM,VM,SMM
  142.  
  143. Note:    AAM    without operands means AAM with operand 0AH.
  144.  
  145. WARNING: NECs understand only AAM 0Ah form.
  146.  
  147. +++++++++++++++++++++++
  148.  
  149. Physical Form: AAM imm8
  150.  
  151. COP (Code of Operation)     : D4H    imm8
  152.  
  153. Clocks:        AAM 0AH
  154. 8086:        83
  155. 80186:        19
  156. 80286:        16
  157. 80386:        17
  158. i486:        15
  159. Pentium:    18
  160.  
  161. Cx486SLC:    16
  162. Cx486DX:    16
  163.  
  164. IBM 486BL3X:    17
  165. UMC    U5S:    12
  166.  
  167. ---------------------------------------------------
  168. ADD4S  -  Addition for packed BCD strings
  169.  
  170.  
  171. CPU: NEC V20/V30
  172.  
  173. Type of Instruction: User
  174.  
  175. Instruction:  ADD4S
  176.  
  177.  
  178. Description:
  179.  
  180.     BCD STRING (ADDRESS=ES:DI,LENGTH=CL) <-
  181.       BCD STRING (ADDRESS=DS:SI,LENGTH=CL) +
  182.       BCD STRING (ADDRESS=ES:DI,LENGTH=CL);
  183.  
  184. Note:    si,di, other registers not changed
  185.  
  186. Flags Affected: OF,CF,ZF
  187.     ;;  ZF set if both strings are zeros.
  188.     ;;  CF,OF set as result of operation with most
  189.     ;;  signification BCDs.
  190.  
  191. CPU mode: RM
  192.  
  193. +++++++++++++++++++++++
  194. Physical Form:
  195. COP (Code of Operation)     : 0FH 20H
  196.  
  197. Clocks:
  198.         ADD4S
  199. NEC V20:    ~19*(CL/2)+7
  200.  
  201. ---------------------------------------------------
  202. BOUND    -  Chack Array Index Against Bounds
  203.  
  204. CPU:  80186+,NECs
  205.  
  206. Type of Instruction: User - HLL support
  207.  
  208. Instruction:  BOUND index,bound_array
  209.  
  210.  
  211. Description:
  212.  
  213.         IF (index < (opsize ptr [bound_array]))
  214.            OR
  215.            (index > (opsize ptr [bound_array+opsize]))
  216.         THEN  INT 5;
  217.  
  218.  
  219.  
  220. Flags Affected: No Flags Affected
  221.  
  222. CPU mode: RM,PM,VM,SMM
  223.  
  224. Note:     (186s&NECs) saved CS:IP BOUND interrupt as pointer to following
  225.       instruction that self.
  226.      (286+) saved as pointer to BOUND instruction.
  227.  
  228.  
  229.  
  230. +++++++++++++++++++++++
  231.  
  232. Physical Form: BOUND reg16,mem32
  233.            BOUND reg32,mem64
  234.  
  235. COP (Code of Operation)     : 62H    Postbyte
  236. Note: for 32bit op. add Pfix 66h if in 16bit mode
  237.  
  238. Clocks:        BOUND reg16,mem16
  239.         In Range    Out Range
  240. 80186:                33-35
  241. 80286:        13        int+13
  242. 80386:        10
  243. i486:        7
  244. Pentium:    8        int+32
  245.  
  246. Cx486SLC:    11        int+11
  247. Cx486DX:    11        int+11
  248.  
  249.  
  250.  
  251. ---------------------------------------------------
  252. BSWAP  - Bytes Swap
  253.  
  254.  
  255. CPU:  I486 +
  256.  
  257. Type of Instruction: User
  258.  
  259. Instruction: BSWAP dwordr
  260.  
  261. Description:
  262.  
  263.          XCHG  BYTE dwordr[31:24],dwordr[7:0]
  264.          XCHG  BYTE dwordr[23:16],dwordr[15:8]
  265.  
  266.          ; Need Good Picture to Show It
  267.  
  268. Notes: This instruction used for converting big-endian
  269. (Intel) format to little-endian (Motorolla etc.) format.
  270.  
  271.  
  272. Flags Affected: None
  273. CPU mode: RM,PM,VM,SMM
  274.  
  275. Physical Form:         BSWAP r32
  276. COP (Code of Operation): 0FH 11001rrr  (For 32bit segment)
  277. Clocks: Cyrix Cx486SLC : 4
  278.           i486     : 1
  279.           Pentium  : 1
  280.     Cyrix Cx486DX  : 4
  281.     UMC   U5S      : 2
  282.     IBM 486BL3X    : 9
  283. ---------------------------------------------------
  284. CALLN      - Call Native Mode Routine
  285.  
  286.  
  287. CPU: NEC/Sony V20/V30 etc
  288.  
  289. Type of Instruction: System
  290.  
  291. Instruction:  CALLN intnum
  292.  
  293.  
  294. Description:
  295.     CALLN instruction call (interrupt service in Native Mode)
  296.     from 8080 emulation mode:
  297.         PUSH    FLAGS
  298.         PUSH    CS
  299.         PUSH    IP
  300.         IF <- 0
  301.         TF <- 0
  302.         MD <- 1
  303.         MOV    CS,0:[intnum*4+2]
  304.         MOV    IP,0:[intnum*4]
  305.  
  306.  
  307.  
  308. Flags Affected: IF,TF,MD
  309.  
  310. CPU mode: 8080 Emulation
  311.  
  312. +++++++++++++++++++++++
  313. Physical Form: CALLN imm8
  314. COP (Code of Operation)     : EDH EDH imm8
  315.  
  316. Clocks:
  317. NEC V20/V30:    38-58
  318.  
  319.  
  320. ---------------------------------------------------
  321. CMPXCHG8B  - Compare and exchange 8 bytes
  322.  
  323.  
  324. CPU:  Pentium (tm)
  325.  
  326. Type of Instruction: Operation
  327.  
  328. Instruction: CMPXCHG8B dest
  329.  
  330. Note: dest is memory operand: QWORD PTR [memory]
  331.  
  332. Description:
  333.  
  334.     IF ( QWORD(EDX:EAX) = dest) THEN
  335.              {
  336.              ZF <- 1;
  337.              dest <- QWORD(ECX:EBX);
  338.              }
  339.            ELSE
  340.              {
  341.              ZF <- 0;
  342.              EDX:EAX <- dest
  343.              }
  344.       END
  345.  
  346. Flags Affected:     ZF
  347.  
  348. CPU mode: RM,PM,VM,SMM
  349.  
  350. Physical Form:           CMPXCHG8B mem64
  351. COP (Code of Operation)     : 0FH C7H Postbyte
  352. Clocks:          Pentium     : 10
  353.  
  354. Note: Postbyte MMRRRMMM:  MM<>11 if (==) then INT 6
  355.  
  356. ---------------------------------------------------
  357. CMPXCHG     - Compare and exchange
  358.  
  359.  
  360.  
  361. CPU:  i486+
  362.  
  363. Type of Instruction: User
  364.  
  365. Instruction: CMPXCHG dest,sorc
  366.  
  367.  
  368. Description:
  369.  
  370.     Acc = if OperationSize(8)  -> AL
  371.          OperationSize(16) -> AX
  372.          OperationSize(32) -> EAX
  373.  
  374.     IF ( Acc = dest) THEN
  375.              {
  376.              ZF <- 1;
  377.              dest <- sorc;
  378.              }
  379.            ELSE
  380.              {
  381.              ZF <- 0;
  382.              Acc <- dest;
  383.              }
  384.       END
  385.  
  386. Note: This instruction used to support semaphores
  387.  
  388.  
  389. Flags Affected:     ZF ( see description)
  390.          OF,SF,AF,PF,CF ( like CMP instruction ) ( see description)
  391.  
  392. CPU mode: RM,PM,VM,SMM
  393.  
  394. +++++++++++++++++++++++
  395. Physical Form:           CMPXCHG  r/m8,r8
  396. COP (Code of Operation)     : 0FH A6H Postbyte    ; i486 (A-B0 step)
  397.              : 0FH B0H Postbyte    ; i486 (B1+ step clones
  398.                            ;      and upgrades)
  399.  
  400. Clocks:
  401.        Intel i486     :  6/7     if compare OK
  402.              :  6/10 if compare FAIL
  403.      Cyrix Cx486SLC     :  5/7
  404.      Pentium (tm)     :  6
  405.  
  406. Penalty if cache miss     :
  407.       Intel i486     : 2
  408.      Cyrix Cx486SLC     : 1
  409. +++++++++++++++++++++
  410. Physical Form:           CMPXCHG  r/m16,r16
  411.                CMPXCHG  r/m32,r32
  412. COP (Code of Operation)     : 0FH A7H Postbyte    ; i486 (A-B0 step)
  413.              : 0FH B1H Postbyte    ; i486 (B1+ step clones
  414.                            ;      and upgrades)
  415.  
  416. Clocks:
  417.        Intel i486     :  6/7     if compare OK
  418.              :  6/10 if compare FAIL
  419.      Cyrix Cx486SLC     :  5/7
  420.      Pentium (tm)     :  6
  421.  
  422. Penalty if cache miss     :
  423.       Intel i486     : 2
  424.      Cyrix Cx486SLC     : 1
  425.  
  426.  
  427.  
  428. ---------------------------------------------------
  429. CPUID - CPU Identification
  430.  
  431.  
  432. CPU:  Intel 486DX/SX/DX2 SL Enhanced and all later
  433. Intel processors include ( IntelDX4, IntelSX2,
  434. Pentium etc.), UMC microprocessors: U5S,U5SD,U5S-VL.
  435.  
  436. Note: i.e.  1993+ years processors produced by Intel
  437. Note: To know if your CPU support CPUID instruction
  438. try to set ID flag ( bit 21 of EFLAGS ) to 1, and
  439. if it sets this mean that CPUID support.(Soft).
  440. Or If Your CPU is Intel Look for '&E' signature on
  441. Top side of Chip.(Hard)
  442.  
  443. Type of Instruction: Operation
  444.  
  445. Instruction: CPUID
  446.  
  447. Description:
  448.  
  449.     IF (EAX=0) THEN
  450.           {
  451.           EAX <- Maximum value of EAX to CALL CPUID instruction
  452.             1 for all processors (date 1 September 1994)
  453.             may be >1 in future microprocessors
  454.  
  455.           ;; EBX,EDX and ECX contain a OEM name string
  456.           ;; for Intel this string is 'GenuineIntel'
  457.  
  458.            EBX <- 756E6547H i.e. 'Genu'
  459.            EDX <- 49656E69H i.e. 'ineI'
  460.            ECX <- 6C65746EH i.e. 'ntel'
  461.  
  462.           ;; for UMC   this string is 'UMC UMC UMC '
  463.  
  464.            EBX <- 32434D55H i.e. 'UMC '
  465.            EDX <- 32434D55H i.e. 'UMC '
  466.            ECX <- 32434D55H i.e. 'UMC '
  467.  
  468.           ;; for Cyrix this string is 'CyrixInstead'  (M1)
  469.           ;; for AMD   this string is 'AuthenticAMD'  (K6)
  470.  
  471.           }
  472.     ELSEIF (EAX=1) THEN
  473.           {
  474.           EAX[3:0]    <- Stepping ID
  475.           EAX[7:4]    <- Model
  476.           EAX[11:8] <- Family
  477.              ;    4 - i486 family
  478.              ;    5 - Pentium family
  479.           EAX[15:12] <- Reserved
  480.              ;    set to 0 now
  481.              ;    but I'm sure that for Pentium OverDrive for P54C
  482.              ;this field will be set to 1
  483.           EAX[31:16] <- Reserved and set to 0s now
  484.  
  485.           EDX <- Compability flags
  486.           ;; below all info if bit flag =1
  487.          EDX[0] <- FPU on Chip
  488.          EDX[1] <- Virtual Mode Extention present
  489.          EDX[2] <- CPU support I/O Breakpoints
  490.          EDX[3] <- CPU support    4MB size pages
  491.          EDX[4] <- TSC present (See RDTSC command)
  492.          EDX[5] <- CPU have Pentium Compatible MSR
  493.                (Model Specified Registers.
  494.          EDX[6] <- Reserved (=0 now)
  495.          EDX[7] <- Machine Check exception
  496.          EDX[8] <- CMPXCHG8B instruction
  497.          EDX[9] <- APIC on Chip
  498.          EDX[31:10] <- Reserved and set to 0s now
  499.           }
  500.     ELSEIF ( EAX > 1 ) THEN
  501.           {
  502.           EAX,EBX,ECX,EDX <- Undefined
  503.           }
  504.     END.
  505.  
  506.  
  507. Global Note:
  508.        This file contain open i.e nonconfiderential information about
  509.        CPUID information.
  510.        If you want MORE try to contact Intel, may be (but I'm sure that not)
  511.          Intelers give you "Yellow Pages" (i.e Supplement to Pentium(tm)
  512.          Processor User's Manual) to read inside office.
  513.  
  514. Refer to:  Appendix B for more informations about CPU codes.
  515.  
  516. Here is 3 examples of Information we can may get from CPUID instruction:
  517.  
  518. 1) UMC U5S
  519.    Note: All UMC Chips: U5S,U5SD, 3V chips never have FPU on-chip,
  520.      and never support VME
  521.  
  522.  
  523. CPUID return CPUID information
  524. Maximum Available of CPUID info entrys:1
  525. Vendor string is : "UMC UMC UMC "
  526.  
  527. Model Info :
  528. Stepping ID is : 3
  529. Model           : 2
  530. Family           : 4
  531. M field           : 0
  532. Compability Flags:
  533. FPU on Chip               :-
  534. Virtual Mode Extensions present       :-
  535. CPU support I/O breakpoints       :-
  536. CPU support 4MB pages           :-
  537. Time Stamp Counter Presents       :-
  538. CPU have Pentium compatible MSRs   :-
  539. Machine Check Exception Presents   :-
  540. CMPXCHG8B instruction support       :-
  541. APIC on Chip               :-
  542.  
  543.  
  544.  
  545. 2) Intel 486
  546.    Note: All SL Enhanced 486:  { i486SX,i486DX,i486DX2 marked '&E' on chip
  547.    surface }, IntelSX2,IntelDX4 support VME !!!!
  548.    But: Sxs never have FPU on chip.
  549.  
  550. CPUID return CPUID information
  551. Maximum Available of CPUID info entrys:1
  552. Vendor string is : "GenuineIntel"
  553.  
  554. Model Info :
  555. Stepping ID is : 0
  556. Model           : 8
  557. Family           : 4
  558. M field           : 0
  559. Compability Flags:
  560. FPU on Chip               :+
  561. Virtual Mode Extensions present       :+
  562. CPU support I/O breakpoints       :-
  563. CPU support 4MB pages           :-
  564. Time Stamp Counter Presents       :-
  565. CPU have Pentium compatible MSRs   :-
  566. Machine Check Exception Presents   :-
  567. CMPXCHG8B instruction support       :-
  568. APIC on Chip               :-
  569.  
  570.  
  571. 3) Pentium
  572.    Note: P54C may say that build-in APIC not present if it
  573.    not supported by external hardware !!!!! (This data from
  574.    P54C in single processor configuration)
  575.  
  576. CPUID return CPUID information
  577. Maximum Available of CPUID info entrys:1
  578. Vendor string is : "GenuineIntel"
  579.  
  580. Model Info :
  581. Stepping ID is : 1
  582. Model           : 2
  583. Family           : 5
  584. M field           : 0
  585. Compability Flags:
  586. FPU on Chip               :+
  587. Virtual Mode Extensions present       :+
  588. CPU support I/O breakpoints       :+
  589. CPU support 4MB pages           :+
  590. Time Stamp Counter Presents       :+
  591. CPU have Pentium compatible MSRs   :+
  592. Machine Check Exception Presents   :+
  593. CMPXCHG8B instruction support       :+
  594. APIC on Chip               :-
  595.  
  596.  
  597. 4) Pentium OverDrive
  598.    Note: P24T never have Machine Check Exception
  599.  
  600. CPUID return CPUID information
  601. Maximum Available of CPUID info entrys:1
  602. Vendor string is : "GenuineIntel"
  603.  
  604. Model Info :
  605. Stepping ID is : 1
  606. Model           : 3
  607. Family           : 5
  608. M field           : 1
  609. Compability Flags:
  610. FPU on Chip               :+
  611. Virtual Mode Extensions present       :+
  612. CPU support I/O breakpoints       :+
  613. CPU support 4MB pages           :+
  614. Time Stamp Counter Presents       :+
  615. CPU have Pentium compatible MSRs   :+
  616. Machine Check Exception Presents   :-
  617. CMPXCHG8B instruction support       :+
  618. APIC on Chip               :-
  619.  
  620.  
  621. -> END of Examples
  622.  
  623.  
  624. Note: NexGen Nx586 never support CPUID.
  625.  
  626. Flags Affected: None
  627.  
  628. CPU mode: RM,PM,VM,SMM
  629.  
  630. Physical Form:         CPUID
  631. COP (Code of Operation): 0FH A2H
  632. Clocks:      486s & Pentium  (EAX=1)        : 14
  633.       486s & Pentium  (EAX=0 or EAX>1)  : 9
  634.  
  635.  
  636.  
  637.  
  638.  
  639. ---------------------------------------------------
  640. F4X4 - FPU: Multiplicate vector on Matrix 4x4
  641.  
  642.  
  643.  
  644. FPU:  IIT FPUs.
  645.  
  646. Type of Instruction: FPU instruction
  647.  
  648. Instruction: F4X4
  649.  
  650. Description:
  651.  
  652.     ;   This Instruction Multiplicate vector on
  653.     ; Matrix 4X4
  654.  
  655.  _  _        _               _    _  _
  656. |    |       |            |      |    |
  657. | Xn |       | A00  A01  A02  A03 |      | X0 |
  658. | Yn |    =  | A10  A11  A12  A13 |  X   | Y0 |
  659. | Zn |       | A20  A21  A22  A23 |      | Z0 |
  660. | Wn |       | A30  A31  A31  A33 |      | W0 |
  661. |_  _|       |_               _|      |_  _|
  662.  
  663.  
  664.      ; Data fetches/stores from/to FPU registers:
  665.  
  666.     # of      F E T C H E S          STORE
  667.        Register     Bank0 Bank1 Bank2    Bank0
  668.     ST      X0    A33   A31      Xn
  669.     ST(1)      Y0    A23   A21      Yn
  670.     ST(2)      Z0    A13   A11      Zn
  671.     ST(3)      W0    A03   A01      Wn
  672.     ST(4)        A32   A30
  673.     ST(5)        A22   A20
  674.     ST(6)        A12   A10
  675.     ST(7)        A02   A00
  676.  
  677.  
  678.  
  679. Note: See FSBP0,FSBP1,FSBP2 for more information
  680.  
  681.  
  682. FPU Flags Affected:  S
  683.  
  684. FPU mode: Any
  685.  
  686. Physical Form:         F4X4
  687. COP (Code of Operation): DBH F1H
  688. Clocks:       IIT 2c87    : 242
  689.        IIT 3c87    : 242
  690.        IIT 3c87SX  : 242
  691.  
  692.  
  693. ---------------------------------------------------
  694. FNSTDW - FPU Not wait Store Device Word register
  695.  
  696.  
  697. FPU:  i387SL Mobile
  698.  
  699. Type of Instruction: FPU instruction
  700.  
  701. Instruction: FNSTDW dest
  702.  
  703. Description:
  704.  
  705.     dest <- Device Word
  706.  
  707. Format of Device word:
  708.     bit(s)    Description
  709.     0-7    Reserved
  710.      8    S - Status bit:
  711.             if S=1 then FP device is a static design and OS
  712.             or APM Bios may set CLK slow to 0 Mhz without
  713.             lost any data.
  714.     9-15    Reserved
  715.  
  716.  
  717. Note: Device word register valid only after FNINIT
  718.  
  719.  
  720. FPU Flags Affected: None
  721.  
  722. CPU mode: Any
  723.  
  724. Physical Form:         FNSTDW     AX
  725. COP (Code of Operation): DFH E1H
  726. Clocks:          i387SL Mobile: 13
  727.  
  728.  
  729. ---------------------------------------------------
  730. FNSTSG - FPU Not wait Store Signature Word register
  731.  
  732.  
  733.  
  734. FPU:  i387SL Mobile
  735.  
  736. Type of Instruction: FPU instruction
  737.  
  738. Instruction: FNSTSG dest
  739.  
  740. Description:
  741.  
  742.     dest <- Signature Word
  743.  
  744. Format of Signature word:
  745.     bit(s)    Description
  746.      3-0    Revision
  747.      7-4    Steppin
  748.     11-8    Family
  749.     15-12    Version
  750.  
  751. Note:
  752.     For i387(tm) SL Mobile Signature is:
  753.         Version     = 2
  754.         Family     = 3   ; 387
  755.         Stepping = 1   ; Ax step
  756.         Revision = 0   ; x0 step
  757.                 i.e i387(tm) SL is A0 step
  758.  
  759. Note: This FPU is out of life
  760.  
  761.  
  762. Note: Signature word register valid only after FNINIT
  763.  
  764.  
  765. FPU Flags Affected: None
  766.  
  767. CPU mode: Any
  768.  
  769. Physical Form:         FNSTSG     AX
  770. COP (Code of Operation): DFH E2H
  771. Clocks:          i387SL Mobile: 13
  772.  
  773.  
  774. ---------------------------------------------------
  775. FRICHOP - FPU: Round to Integer chop method
  776.  
  777.  
  778. FPU:  Cyrix FPUs and 486s with FPU on chip
  779.  
  780. Type of Instruction: FPU instruction
  781.  
  782. Instruction: FRICHOP
  783.  
  784. Description:
  785.  
  786.     ST <- ROUND ( ST,CHOP )
  787.  
  788. Note:
  789.     This instruction calculate rounding ST toward zero
  790.     i.e.  ignoring part righter that decimal .
  791.  
  792. Examples:
  793.  
  794.      1.2   ->   1.0
  795.     -1.2   ->  -1.0
  796.      3.0   ->   3.0
  797.      0.0   ->   0.0
  798.      1.5   ->   1.0
  799.     -2.0   ->  -2.0
  800.  
  801.  
  802. FPU Flags Affected:  S,P,D,I,C1
  803.  
  804. FPU mode: Any
  805.  
  806. Physical Form:         FRICHOP
  807. COP (Code of Operation): DDH FCH
  808. Clocks:          Cx83D87  : 15
  809.           Cx83S87  : 15
  810.           CxEMC87  : 15
  811.           Cx487DLC :
  812.  
  813.  
  814. ---------------------------------------------------
  815. FRINEAR - FPU: Round to Integer Nearest method
  816.  
  817.  
  818. FPU:  Cyrix FPUs and 486s with FPU on chip
  819.  
  820. Type of Instruction: FPU instruction
  821.  
  822. Instruction: FRINEAR
  823.  
  824. Description:
  825.  
  826.     ST <- ROUND ( ST,NEAREST )
  827.  
  828. Note:
  829.     This instruction calculate rounding ST toward nearest
  830.  
  831. Examples:
  832.  
  833.      1.2   ->   1.0
  834.     -1.2   ->  -1.0
  835.      3.0   ->   3.0
  836.      0.0   ->   0.0
  837.      1.5   ->   1.0
  838.      1.8   ->   2.0
  839.     -2.0   ->  -2.0
  840.  
  841.  
  842. FPU Flags Affected:  S,P,D,I,C1
  843.  
  844. FPU mode: Any
  845.  
  846. Physical Form:         FRINEAR
  847. COP (Code of Operation): DFH FCH
  848. Clocks:          Cx83D87  : 15
  849.           Cx83S87  : 15
  850.           CxEMC87  : 15
  851.           Cx487DLC :
  852.  
  853.  
  854.  
  855. ---------------------------------------------------
  856. FRINT2 - FPU: Round to Integer
  857.  
  858.  
  859. FPU:  Cyrix FPUs and 486s with FPU on chip
  860.  
  861. Type of Instruction: FPU instruction
  862.  
  863. Instruction: FRINT2
  864.  
  865. Description:
  866.  
  867.     IF ( exact half ) THEN
  868.         {
  869.         ST <- SIGN(ST) * ROUND(ABS(ST)+0.5,NEAREST)
  870.         }
  871.         ELSE
  872.         {
  873.         ST <- ROUND ( ST,NEAREST )
  874.         }
  875.     END
  876.  
  877. Note:
  878.     This instruction calculate rounding ST toward nearest,
  879.     but if number is exact half then this instruction round
  880.     it toward signed infinity. Sign of this infinity is same
  881.     with sign of number.
  882.  
  883. Examples:
  884.  
  885.      1.2   ->   1.0
  886.     -1.2   ->  -1.0
  887.      3.0   ->   3.0
  888.      0.0   ->   0.0
  889.      1.5   ->   2.0
  890.      1.8   ->   2.0
  891.     -2.0   ->  -2.0
  892.     -1.5   ->  -2.0
  893.  
  894. FPU Flags Affected:  S,P,D,I,C1
  895.  
  896. FPU mode: Any
  897.  
  898. Physical Form:         FRINT2
  899. COP (Code of Operation): DBH FCH
  900. Clocks:          Cx83D87  : 15
  901.           Cx83S87  : 15
  902.           CxEMC87  : 15
  903.           Cx487DLC :
  904.  
  905.  
  906. ---------------------------------------------------
  907. FRSTPM - FPU Reset Protected Mode
  908.  
  909.  
  910.  
  911. FPU:  i287XL i287XLT
  912.  
  913. Type of Instruction: FPU instruction
  914.  
  915. Instruction: FRSTPM
  916.  
  917. Description:
  918.  
  919.     Reset Cooprocessor from Protected Mode
  920.     to Real Address mode.
  921.  
  922. FPU Flags Affected: None
  923.  
  924. CPU mode:Any ???
  925.  
  926. Physical Form:         FRSTPM
  927. COP (Code of Operation): DBH E5H
  928. Clocks:          i287XL   : 12
  929.           i287XLT  : 12
  930.  
  931.  
  932. ---------------------------------------------------
  933. FSBP0 - FPU: Set Bank pointer to Bank # 0
  934.  
  935.  
  936. FPU:  IIT FPUs.
  937.  
  938. Type of Instruction: FPU instruction
  939.  
  940. Instruction: FSBP0
  941.  
  942. Description:
  943.  
  944.     ;   This Instruction set current bank pointer to
  945.     ; Bank # 0.
  946.  
  947.     ;   Each bank contain eight 80bit registers
  948.     ;   There are 3 banks (0,1,2) in Chip
  949.  
  950.     ;   After initialization FPU select bank # 0.
  951.  
  952.  
  953. FPU Flags Affected:  None
  954.  
  955. FPU mode: Any
  956.  
  957. Physical Form:         FSBP0
  958. COP (Code of Operation): DBH E8H
  959. Clocks:       IIT 2c87    : 6
  960.        IIT 3c87    : 6
  961.        IIT 3c87SX  : 6
  962.  
  963.  
  964. ---------------------------------------------------
  965. FSBP1 - FPU: Set Bank pointer to Bank # 1
  966.  
  967.  
  968.  
  969. FPU:  IIT FPUs.
  970.  
  971. Type of Instruction: FPU instruction
  972.  
  973. Instruction: FSBP1
  974.  
  975. Description:
  976.  
  977.     ;   This Instruction set current bank pointer to
  978.     ; Bank # 1.
  979.  
  980.     ;   Each bank contain eight 80bit registers
  981.     ;   There are 3 banks (0,1,2) in Chip
  982.  
  983.     ;   After initialization FPU select bank # 0.
  984.  
  985.  
  986. FPU Flags Affected:  None
  987.  
  988. FPU mode: Any
  989.  
  990. Physical Form:         FSBP1
  991. COP (Code of Operation): DBH EBH
  992. Clocks:       IIT 2c87    : 6
  993.        IIT 3c87    : 6
  994.        IIT 3c87SX  : 6
  995.  
  996.  
  997. ---------------------------------------------------
  998. FSBP2 - FPU: Set Bank pointer to Bank # 2
  999.  
  1000.  
  1001.  
  1002. FPU:  IIT FPUs.
  1003.  
  1004. Type of Instruction: FPU instruction
  1005.  
  1006. Instruction: FSBP2
  1007.  
  1008. Description:
  1009.  
  1010.     ;   This Instruction set current bank pointer to
  1011.     ; Bank # 2.
  1012.  
  1013.     ;   Each bank contain eight 80bit registers
  1014.     ;   There are 3 banks (0,1,2) in Chip
  1015.  
  1016.     ;   After initialization FPU select bank # 0.
  1017.  
  1018.  
  1019. FPU Flags Affected:  None
  1020.  
  1021. FPU mode: Any
  1022.  
  1023. Physical Form:         FSBP2
  1024. COP (Code of Operation): DBH EAH
  1025. Clocks:       IIT 2c87    : 6
  1026.        IIT 3c87    : 6
  1027.        IIT 3c87SX  : 6
  1028.  
  1029.  
  1030. ---------------------------------------------------
  1031. IBTS    -  Insert Bits String
  1032.  
  1033.  
  1034. CPU:  80386 step A0-B0 only
  1035.  
  1036. Type of Instruction: User
  1037.  
  1038. Instruction:  IBTS base,bitoffset,len,sorc
  1039.  
  1040.  
  1041. Description:
  1042.          Write bit string length <len> bits from
  1043.          <sorc> [bits <len> .. 0 ]    (lowest bits) to bitfield,
  1044.          defined by <base> and bitsoffset <bitoffset> from this base
  1045.          to start of the field to write. String write from this start
  1046.          field bit to higher memory addresses or register bits.
  1047.  
  1048.  
  1049.  
  1050. Flags Affected: None
  1051.  
  1052. CPU mode: RM,PM,VM
  1053.  
  1054. +++++++++++++++++++++++
  1055. Physical Form:      IBTS    r/m16,AX,CL,r16
  1056.           IBTS    r/m32,EAX,CL,r32
  1057. COP (Code of Operation)     : 0FH A7H Postbyte
  1058.  
  1059. Clocks:        IBTS
  1060. 80386:        12/19
  1061.  
  1062.  
  1063. ---------------------------------------------------
  1064. ICEBP  - PWI Mode BreakPoint, ICE address space
  1065.  
  1066.  
  1067.  
  1068. CPU:  IBM 486SLC2
  1069.  
  1070. Type of Instruction: System
  1071.  
  1072. Instruction: ICEBP
  1073.  
  1074. Description:
  1075.  
  1076.     IF (condition) THEN  ; see condition below
  1077.            {
  1078.            SAVE STATUS OF EXECUTION TO ICE space;
  1079.            ENTER SMM;
  1080.            }
  1081.        ELSE
  1082.           {
  1083.           INT 1;
  1084.           }
  1085.        END
  1086.  
  1087. Note:    This condition can be set before execution this instruction:
  1088.     CPL=0
  1089.     MSR1000H.EPCEA=1
  1090.     MSR1000H.EPWI=1
  1091.  
  1092.  
  1093.  
  1094. Flags Affected: None
  1095.  
  1096. CPU mode: RM,PM0
  1097.  
  1098. Physical Form:         ICEBP
  1099. COP (Code of Operation): F1H
  1100. Clocks:     IBM 486SLC2   : 460
  1101.  
  1102.  
  1103. ---------------------------------------------------
  1104. ICEBP  -  In-Circuit Emulator Breakpoint
  1105.  
  1106.  
  1107.  
  1108. CPU:  some models of i486, i386
  1109.  
  1110. Type of Instruction: System
  1111.  
  1112. Instruction: ICEBP
  1113.  
  1114. Description:
  1115.  
  1116.     IF (condition) THEN  ; see condition below
  1117.            {
  1118.            CHANGED TO THE ICE instruction mode;
  1119.            }
  1120.        ELSE
  1121.           {
  1122.           INT 1;
  1123.           }
  1124.        END
  1125.  
  1126. Note:    Condition  is  DR7.bit12=1
  1127.  
  1128. Note: This instruction very usefull to debbuging as Single-Byte Interrupt
  1129.       but it generate never int 3, but int 1.
  1130.  
  1131. Note: Frank van Gilluwe in his book "The PC Undocument", 1994 year say
  1132.       that this instruction is VERY UNDOCUMENT.
  1133.  
  1134. Flags Affected: None
  1135.  
  1136. CPU mode: RM,PM0
  1137.  
  1138. Physical Form:         ICEBP
  1139. COP (Code of Operation): F1H
  1140. Clocks:               : N/A
  1141.  
  1142.  
  1143.  
  1144. ---------------------------------------------------
  1145. ICERET    - Return from PWI mode, ICE space
  1146.  
  1147.  
  1148. CPU: IBM 486SLC2
  1149.  
  1150. Type of Instruction: System Operation
  1151.             (Work only then CPL=0)
  1152.  
  1153. Instruction: ICERET
  1154.  
  1155. Description:
  1156.           Load All Registers (Include Shadow Registers) from Table
  1157.           Which Begin on  place pointed ES:EDI, and return from PWI
  1158.           mode.
  1159.  
  1160. Format of ICERET Table:
  1161.  
  1162.            Offset  Len  Description
  1163.         0H    4    CR0
  1164.         4H    4    EFLAGS
  1165.         8H    4    EIP
  1166.         CH    4    EDI
  1167.         10H    4    ESI
  1168.         14H    4    EBP
  1169.         18H    4    ESP
  1170.         1CH    4    EBX
  1171.         20H    4    EDX
  1172.         24H    4    ESX
  1173.         28H    4    EAX
  1174.         2CH    4    DR6
  1175.         30H    4    DR7
  1176.         34H    4    TR     (16 bit, zero filled up)
  1177.         38H    4    LDT  ---------
  1178.         3CH    4    GS   ---------
  1179.         40H    4    FS   ---------
  1180.         44H    4    DS   ---------
  1181.         48H    4    SS   ---------
  1182.         4CH    4    CS   ---------
  1183.         50H    4    ES   ---------
  1184.         54H    4    TSS.attrib
  1185.         58H    4    TSS.base
  1186.         5CH    4    TSS.limit
  1187.         60H    4    Reserved
  1188.         64H    4    IDT.base
  1189.         68H    4    IDT.limit
  1190.         6CH    4    REP OUTS overrun flag
  1191.         70H    4    GDT.base
  1192.         74H    4    GDT.limit
  1193.         78H    4    LDT.attrib
  1194.         7CH    4    LDT.base
  1195.         80H    4    LDT.limit
  1196.         84H    4    GS.attrib
  1197.         88H    4    GS.base
  1198.         8CH    4    GS.limit
  1199.         90H    4    FS.attrib
  1200.         94H    4    FS.base
  1201.         98H    4    FS.limit
  1202.         9CH    4    DS.attrib
  1203.         A0H    4    DS.base
  1204.         A4H    4    DS.limit
  1205.         A8H    4    SS.attrib
  1206.         ACH    4    SS.base
  1207.         B0H    4    SS.limit
  1208.         B4H    4    CS.attrib
  1209.         B8H    4    CS.base
  1210.         BCH    4    CS.limit
  1211.         C0H    4    ES.attrib
  1212.         C4H    4    ES.base
  1213.         C8H    4    ES.limit
  1214.                 Unknown Unusable area
  1215.                 ;; Temporary registers:
  1216.         100H    4    TST
  1217.         104H    4    IDX
  1218.         108H    4    TMPH
  1219.         10CH    4    TMPG
  1220.         110H    4    TMPF
  1221.         114H    4    TMPE
  1222.         118H    4    TMPD
  1223.         11CH    4    TMPC
  1224.         120H    4    TMPB
  1225.         124H    4    TMPA
  1226.  
  1227.         128H    4    CR2
  1228.         12CH    4    CR3
  1229.         130H    4    MSR1001H (31-0)
  1230.         134H    4    MSR1001H (63-32)
  1231.         138H    4    MSR1000H (15-0)
  1232.         13CH    4    DR0
  1233.         140H    4    DR1
  1234.         144H    4    DR2
  1235.         148H    4    DR3
  1236.         14CH    4    PEIP
  1237.         Length of table is 150H bytes.
  1238.  
  1239. Note: For descriptor format refer to LOADALL and RES3 instructions.
  1240.  
  1241.  
  1242. Flags Affected: All (FLAGS Register Reload)
  1243.  
  1244. CPU mode: SMM
  1245.  
  1246. Physical Form:         ICERET
  1247. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  1248. Clocks:     IBM 486SLC2   : 440
  1249.  
  1250.  
  1251.  
  1252. ---------------------------------------------------
  1253. INVD  - Invalidate Cache Buffer
  1254.  
  1255.  
  1256.  
  1257. CPU:  I486 +
  1258.  
  1259. Type of Instruction: System
  1260.  
  1261. Instruction: INVD
  1262.  
  1263. Description:
  1264.  
  1265.          FLUSH INTERNAL CACHE
  1266.    ( It means that all lines of internal caches sets as
  1267.     invalid )
  1268.      SIGNAL EXTERNAL CACHE TO FLUSH
  1269.  
  1270.  
  1271. Notes: This instruction not work in Real Mode and  in
  1272. Protected mode work only in ring 0 ;
  1273.  
  1274. Flags Affected: None
  1275.  
  1276. CPU mode: PM0,SMM?
  1277.  
  1278. Physical Form:         INVD
  1279. COP (Code of Operation): 0FH 08H
  1280. Clocks: Cyrix Cx486SLC : 4
  1281.           i486     : 4
  1282.           Pentium  : 15
  1283.  
  1284.  
  1285. ---------------------------------------------------
  1286. INVLPG    - Invalidate Page Entry In TLB
  1287.  
  1288.  
  1289.  
  1290. CPU:  I486 +
  1291.  
  1292. Type of Instruction: System
  1293.  
  1294. Instruction: INVLPG mem
  1295.  
  1296. Description:
  1297.  
  1298.     IF found in data or code (if both) (or common if single)
  1299.        TLB entry with linear address (page part) same as
  1300.        memory operand <mem> then mark this entry as Invalid;
  1301.  
  1302. Notes: This instruction not work in Real Mode and  in
  1303. Protected mode work only in ring 0 ;
  1304.  
  1305. Flags Affected: None
  1306.  
  1307. CPU mode: RM,PM,VM,SMM
  1308.  
  1309. Physical Form:         INVLPG mem
  1310. COP (Code of Operation): 0FH 01H mm111mmm
  1311. Clocks: Cyrix Cx486SLC : 4
  1312.           i486     : 12 if hit
  1313.                : 11 if not hit
  1314.           Pentium  : 25
  1315.  
  1316. ---------------------------------------------------
  1317. LOADALL     - Load All Registers
  1318.  
  1319.  
  1320. CPU:  Intel 386+ +all clones
  1321.  
  1322.  
  1323. Type of Instruction: System
  1324.             (Work only then CPL=0)
  1325.  
  1326. Instruction: LOADALL
  1327.  
  1328. Description:
  1329.           Load All Registers (Include Shadow Registers) from Table
  1330.           Which Begin on  place pointed ES:EDI
  1331.  
  1332. Format of LOADALL Table:
  1333.  
  1334.            Offset  Len  Description
  1335.         0H    4    CR0
  1336.         4H    4    EFLAGS
  1337.         8H    4    EIP
  1338.         CH    4    EDI
  1339.         10H    4    ESI
  1340.         14H    4    EBP
  1341.         18H    4    ESP
  1342.         1CH    4    EBX
  1343.         20H    4    EDX
  1344.         24H    4    ESX
  1345.         28H    4    EAX
  1346.         2CH    4    DR6
  1347.         30H    4    DR7
  1348.         34H    4    TR     (16 bit, zero filled up)
  1349.         38H    4    LDT  ---------
  1350.         3CH    4    GS   ---------
  1351.         40H    4    FS   ---------
  1352.         44H    4    DS   ---------
  1353.         48H    4    SS   ---------
  1354.         4CH    4    CS   ---------
  1355.         50H    4    ES   ---------
  1356.         54H    4    TSS.attrib
  1357.         58H    4    TSS.base
  1358.         5CH    4    TSS.limit
  1359.         60H    4    0s
  1360.         64H    4    IDT.base
  1361.         68H    4    IDT.limit
  1362.         6CH    4    0s
  1363.         70H    4    GDT.base
  1364.         74H    4    GDT.limit
  1365.         78H    4    LDT.attrib
  1366.         7CH    4    LDT.base
  1367.         80H    4    LDT.limit
  1368.         84H    4    GS.attrib
  1369.         88H    4    GS.base
  1370.         8CH    4    GS.limit
  1371.         90H    4    FS.attrib
  1372.         94H    4    FS.base
  1373.         98H    4    FS.limit
  1374.         9CH    4    DS.attrib
  1375.         A0H    4    DS.base
  1376.         A4H    4    DS.limit
  1377.         A8H    4    SS.attrib
  1378.         ACH    4    SS.base
  1379.         B0H    4    SS.limit
  1380.         B4H    4    CS.attrib
  1381.         B8H    4    CS.base
  1382.         BCH    4    CS.limit
  1383.         C0H    4    ES.attrib
  1384.         C4H    4    ES.base
  1385.         C8H    4    ES.limit
  1386.         CCH    4    Length of table
  1387.         D0H    30h    Unused,not loaded
  1388.         100H    4    Temporary Register IST
  1389.         104H    4    Temporary Register I
  1390.         108H    4    Temporary Register H
  1391.         10CH    4    Temporary Register G
  1392.         110H    4    Temporary Register F
  1393.         114H    4    Temporary Register E
  1394.         118H    4    Temporary Register D
  1395.         11CH    4    Temporary Register C
  1396.         120H    4    Temporary Register B
  1397.         124H    4    Temporary Register A
  1398.  
  1399.  
  1400.  
  1401. Format    of Attrib field:
  1402.  
  1403.            Byte    Description
  1404.            0    0s
  1405.            1    AR (Access Right) byte in the Descriptor format
  1406.             Note:
  1407.                P bit is a valid bit
  1408.                if valid bit=0 then Shadow Register is invalid and
  1409.                   INT 0DH - General Protection Fault call
  1410.                DPL of SS,CS det. CPL
  1411.            2-3    0s
  1412.  
  1413.  
  1414. Flags Affected: All (FLAGS Register Reload)
  1415.  
  1416. CPU mode: RM,PM0
  1417.  
  1418. Physical Form:         LOADALL
  1419. COP (Code of Operation): 0FH 07H
  1420. Clocks:          i386XX   : n/a
  1421.           i486XX   : n/a
  1422.  
  1423. Note: This operation used 102 data transfer cycles on 32bit bus
  1424.       Typical clocks:
  1425.           i386SX: ~350
  1426.           i386DX: ~290
  1427.           i486XX: ~220
  1428.  
  1429.  
  1430.  
  1431. ---------------------------------------------------
  1432. LOADALL     - Load All Registers From Table
  1433.  
  1434.  
  1435. CPU:  Intel 80286 and all its clones
  1436.  
  1437.  
  1438. Type of Instruction: System
  1439.             (Work only then CPL=0)
  1440.  
  1441. Instruction: LOADALL
  1442.  
  1443. Description:
  1444.           Load All Registers (Include Shadow Registers) from Table
  1445.           Which Begin on  000800H  Address, Len of this table is
  1446.           66H
  1447.  
  1448. Format of LOADALL Table:
  1449.  
  1450.            Address    Len  Description
  1451.         800H    6    None
  1452.         806H    2    MSW
  1453.         808H    14    None
  1454.         816H    2    TR
  1455.         818H    2    FLAGS
  1456.         81AH    2    IP
  1457.         81CH    2    LDTR
  1458.         81EH    2    DS
  1459.         820H    2    SS
  1460.         822H    2    CS
  1461.         824H    2    ES
  1462.         826H    2    DI
  1463.         828H    2    SI
  1464.         82AH    2    BP
  1465.         82CH    2    SP
  1466.         82EH    2    BX
  1467.         830H    2    DX
  1468.         832H    2    CX
  1469.         834H    2    AX
  1470.         836H    6    ES Shadow Descriptor
  1471.         83CH    6    CS Shadow Descriptor
  1472.         842H    6    SS Shadow Descriptor
  1473.         848H    6    DS Shadow Descriptor
  1474.         84EH    6    GDTR
  1475.         854H    6    LDT Shadow Descriptor
  1476.         85AH    6    IDTR
  1477.         860H    6    TSS Shadow Descriptor
  1478.  
  1479. Format    of Shadow Descriptor:
  1480.  
  1481.            Byte    Description
  1482.            0-2    24bit Phisical Address
  1483.         3    AR (Access Right) byte
  1484.            4-5    16bit Segment Limit
  1485.  
  1486.  
  1487. Format    of GDTR and IDTR:
  1488.  
  1489.            Byte    Description
  1490.            0-2    24bit Phisical Address
  1491.         3    0s
  1492.            4-5    16bit Segment Limit
  1493.  
  1494.  
  1495. Note: Using this instruction we may turn on "Big Real Mode" i.e. mode then
  1496. PG=1,PE=0,cpl=0. This mode very usefull,But Pentium never  support this
  1497. instruction.
  1498.  
  1499.  
  1500. Flags Affected: All (FLAGS Register Reload)
  1501.  
  1502. CPU mode: RM,PM0
  1503.  
  1504. Physical Form:         LOADALL
  1505. COP (Code of Operation): 0FH 05H
  1506. Clocks:          80286    : 195
  1507.  
  1508.  
  1509. ---------------------------------------------------
  1510. RDMSR  - Read From Model Specified Register
  1511.  
  1512.  
  1513. CPU:  Pentium (tm), IBM 386SLC,486SLC,486SLC2
  1514.  
  1515. Type of Instruction: System
  1516.  
  1517. Instruction: RDMSR
  1518.  
  1519. Description:
  1520.  
  1521.     IF (ECX is valid number of MSR) and (CPL=0)  THEN
  1522.           {
  1523.           EDX:EAX <- MSR [ECX];
  1524.           }
  1525.         ELSE
  1526.           {
  1527.           General Protection Fault  INT 0DH (0)
  1528.           }
  1529.     END
  1530.  
  1531.  
  1532. Valid number Of MSR is:
  1533.     Pentium:  0-2,4-0Eh,10h-13h
  1534.     IBM 486SLC2:  1000H-1002H
  1535.     IBM 386SLC:      1000H-1001H
  1536.     IBM 486SLC:      1000H-1001H
  1537.  
  1538.  
  1539. Flags Affected: None
  1540.  
  1541. CPU mode: RM,PM0,SMM
  1542.  
  1543. Physical Form:         RDMSR
  1544. COP (Code of Operation): 0FH 32H
  1545. Clocks:         Pentium   : 20-24
  1546.  
  1547. Note: The MSR # 3,0fh and >13h are reserved. Do not execute RDMSR/WRMSR with
  1548.       this values.
  1549.  
  1550.       Register    Description
  1551.  
  1552.       MSR 0  is Machine check Exception Address register (Read only)
  1553.         bits    Description
  1554.         63..32    Reserved
  1555.         31..0    Machine Check Phisical Address
  1556.  
  1557.       MSR 1  is Machine Check Type register (Read Only)
  1558.         bits    Description
  1559.         63..5    Reserved
  1560.         4    LOCK
  1561.             =1 if bus cycle called Machine Check was Locked
  1562.             =0 if --//-- not locked (normal)
  1563.         3    M/IO# \
  1564.         2    D/C#     State of output pins in bus cycle called
  1565.         1    W/R#  /     Machine check
  1566.         0    CHK  (Check)
  1567.             =1 after last read MSR 1 was Machine Check
  1568.             Note: This bit Clearing on reading
  1569.  
  1570.       MSR 2,4,5,6,7,8,9,Ah,Bh,Ch,Dh,Eh used to perform Cache,TLB,BTB testing.
  1571.          This registers named Test Registers 0,2-C.
  1572.  
  1573.       MSR Eh  is Test Register 12 (TR 12) (Read/Write)
  1574.         bits    Description
  1575.         63..4    Reserved
  1576.         3    CI
  1577.         2    SE
  1578.         1    TR (Tracing Control)
  1579.             After reset clear to zero.
  1580.             This bit enable/disable special branch trace
  1581.             message cycle which generating when BTB hit.
  1582.             =0 disable
  1583.             =1 enable
  1584.         0    NBP
  1585.  
  1586.       MSR 10h is Time Stamp Counter  (TSC) (Read/Write)
  1587.         Time Stamp Counter (as all other MSRs) is clearing to 0 when
  1588.         RESET pin shutdown and unchanged when INIT pin shutdown.
  1589.         TSC is incremented every CPU core clock cycle.
  1590.  
  1591.       MSR 11h is Control/Event Select Register (CESR) (Read/Write)
  1592.         Init value after reset = 00000000000000000h
  1593.         bits    Description
  1594.         63..25    Reserved
  1595.         24    Counting Method (Counter #1)
  1596.             =1 count CPU cycles
  1597.             =0 count events
  1598.         23    Allow count in CPL=3 (Counter #1)
  1599.             =1 Yes
  1600.             =0 No
  1601.         22    Allow count in CPL<3 (Counter #1)
  1602.             =1 Yes
  1603.             =0 No
  1604.         21..16    Event Type for Counter #1 (see below)
  1605.         15..9    Reserved
  1606.         8    Counting Method (Counter #0)
  1607.             =1 count CPU cycles
  1608.             =0 count events
  1609.         7    Allow count in CPL=3 (Counter #0)
  1610.             =1 Yes
  1611.             =0 No
  1612.         6    Allow count in CPL<3 (Counter #0)
  1613.             =1 Yes
  1614.             =0 No
  1615.         5..0    Event Type for counter #0
  1616.             Value    Event Type
  1617.             00h    Data Read
  1618.             01h    Data Write
  1619.             02h    Data TLB miss
  1620.             03h    Data Read Miss
  1621.             04h    Data Write miss
  1622.             05h    Write hit to Modified or Exclusive Cacheline
  1623.             06h    Data cache lines written back
  1624.             07h    Data cache snoops
  1625.             08h    Data cache snoops hit
  1626.             09h    Memory access in both pipes
  1627.             0Ah    Data bank access conflict
  1628.             0Bh    Misaligned data memory references
  1629.             0Ch    Code read
  1630.             0Dh    Code TLB miss
  1631.             0Eh    Code cache miss
  1632.             0Fh    Any segment register load
  1633.             10h    Segment descriptor cache accessed
  1634.             11h    Segment descriptor cache hit
  1635.             12h    Branches
  1636.             13h    BTB hit
  1637.             14h    Taken branch or BTB hit
  1638.             15h    Pipeline flushes
  1639.             16h    Instructions executed
  1640.             17h    Instruction executed in V pipes
  1641.             18h    Bus utilization
  1642.             19h    Pipeline stalled by write backups
  1643.             1Ah    Pipeline stalled by data memory read
  1644.             1Bh    Pipeline stalled by write to M or E line
  1645.             1Ch    Locked bus cycle
  1646.             1Dh    I/O cycle
  1647.             1Eh    Noncachable memory references
  1648.             1Fh    Pipeline stalled by AGI
  1649.             20h-21h    Reserved
  1650.             22h    FP operations
  1651.             23h    Breakpoint 0 match
  1652.             24h    Breakpoint 1 match
  1653.             25h    Breakpoint 2 match
  1654.             26h    Breakpoint 3 match
  1655.             27h    Hardware interrupt
  1656.             28h    Data read or data write
  1657.             29h    Data read/write miss
  1658.             2Ah-3Fh Reserved
  1659.  
  1660.  
  1661.       MSR 12h is Counter #0 (Read/Write)
  1662.         bits    Description
  1663.         63..??    Reserved
  1664.         ??..0    Current counter value
  1665.  
  1666.       MSR 13h is Counter #1 (Read/Write)
  1667.         bits    Description
  1668.         63..??    Reserved
  1669.         ??..0    Current counter value
  1670.  
  1671.       MSR 1000H is Processor Operation Register (IBM only)
  1672.         (486SLC/486SLC2/386SLC)
  1673.         bits    Description
  1674.         63..19    Reserved
  1675.         18    LWPLA (Low Power PLA) (reserved on IBM 386SLC)
  1676.         17    BUSRD (Bus Read)      (reserved on IBM 386SLC)
  1677.         16    CPGE  (Cache Parity Generate Error)
  1678.             (reserved on IBM 386SLC)
  1679.         15    ECNPX (Enable cachebility of NPX operands)
  1680.         14    EPWIA (Enable PWI ADS)
  1681.         13    ELPWH (Enable Low Power Halt Mode)
  1682.         12    XTOUT (Extend Out Instruction)
  1683.         11    CRLD  (Cache reload bit)
  1684.         10    EIKEN (Enable internal KEN#)
  1685.         9    DSCL  (Disable cache Lock Mode)
  1686.         8    Reserved
  1687.         7    CE     (Cache enable)
  1688.         6    EDBS   (Enable DBCS)
  1689.         5    EPWI   (Enable Power Interrupt)
  1690.         4    EFSP   (Enable Flush Snooping)
  1691.         3    ENSP   (Enable Snoop Input)
  1692.         2    A20M   (Address line 20 Mask)
  1693.         1    CPCE   (Cache Parity Checking Enable)
  1694.         0    CPE    (Cache Parity Error)
  1695.  
  1696.       MSR 1001H is Cache Region Control Register  (IBM only)
  1697.         ( IBM 386SLC/486SLC/486SLC2)
  1698.         bits    description
  1699.         63..40    Reserved
  1700.         39..32    Cache Memory Limit (CMLR)
  1701.         31..16    1st MB Read Only (LMROR)
  1702.         15..0    1st MB Cachable (LMCR)
  1703.  
  1704.       MSR 1002H is processor operation register (IBM only)
  1705.         (IBM 486SLC2 only)
  1706.         bits    description
  1707.         63..30    Reserved
  1708.         29    EEDFS (Enable External Dynamic Frequency Shift)
  1709.         28    DFSRY (Dynamic Frequency Shift Ready)
  1710.         27    DFSMD (Dynamic Frequency Shift Mode)
  1711.         26..24    CLKMD (Clock Mode)
  1712.             =000    x2
  1713.             =011    x1
  1714.         23..0    Reserved
  1715.  
  1716.  
  1717. Note: MSRs usefull documented in "Supplement to Pentium Processors User's
  1718. Manual" (Intel Corp. 1993,1994).
  1719.       IBM MSRs documented in "486SLC2 (tm) Microprocessor Data Sheet"
  1720. (IBM Corp. 1993,Order number: VT05452)
  1721.  
  1722.  
  1723. ---------------------------------------------------
  1724. RDTSC  - Read From Time Stamp Counter
  1725.  
  1726.  
  1727. CPU:  Pentium (tm)
  1728.  
  1729. Type of Instruction: System/User
  1730.  
  1731. Instruction: RDTSC
  1732.  
  1733. Description:
  1734.  
  1735.     IF (CR4.TSD=0) or ((CR4.TSD=1) and (CPL=0))  THEN
  1736.           {
  1737.           EDX:EAX <- TSC;
  1738.           }
  1739.         ELSE
  1740.           {
  1741.           General Protection Fault  INT 0DH (0)
  1742.           }
  1743.     END
  1744.  
  1745.  
  1746.  
  1747. Note: TSC is one of MSR and after global hardware reset (not SRESET , but
  1748. RESET ) it clear to 0000000000000000H.
  1749.       TSC is MSR index 10h. TSC may set using WRMSR instruction.
  1750.       TSC incremented every CPU core clock cycle.
  1751.  
  1752.  
  1753. Flags Affected: None
  1754.  
  1755. CPU mode: RM,PM0,SMM
  1756.       ; PM,VM if enable
  1757.  
  1758. Physical Form:         RDTSC
  1759. COP (Code of Operation): 0FH 31H
  1760. Clocks:         Pentium   : n/a [20-24]
  1761.  
  1762.  
  1763. ---------------------------------------------------
  1764. REPC  - Repeat While Carry Flag
  1765.  
  1766.  
  1767. CPU:  NEC V20, NEC V30, etc [ Vxx seria ]
  1768.       Sony V20, Sony V30
  1769.  
  1770. Type of Instruction: Prefix
  1771.  
  1772. Instruction: REPC
  1773.  
  1774. Description:
  1775.  
  1776.     DO
  1777.          CX=CX-1;
  1778.          SERVICE_PENDING_INTERRUPT;
  1779.          STRING_INSTRUCTION;
  1780.        LOOPWHILE ((CX<>0) AND (CF==1));
  1781.  
  1782.  
  1783. Flags Affected: None
  1784.  
  1785. CPU Mode: RM 8086
  1786.  
  1787. Physical Form:         REPC
  1788. COP (Code of Operation): 65H
  1789. Clocks:          NEC V20  : 2
  1790.           NEC V30  : 2
  1791.  
  1792.  
  1793. ---------------------------------------------------
  1794. REPNC  - Repeat While Not Carry Flag
  1795.  
  1796.  
  1797.  
  1798. CPU:  NEC V20, NEC V30, etc [ Vxx seria ]
  1799.       Sony V20, Sony V30
  1800.  
  1801. Type of Instruction: Prefix
  1802.  
  1803. Instruction: REPNC
  1804.  
  1805. Description:
  1806.  
  1807.     DO
  1808.          CX=CX-1;
  1809.          SERVICE_PENDING_INTERRUPT;
  1810.          STRING_INSTRUCTION;
  1811.        LOOPWHILE ((CX<>0) AND (CF<>1));
  1812.  
  1813.  
  1814. Flags Affected: None
  1815.  
  1816. CPU mode: RM 8086
  1817.  
  1818. Physical Form:         REPNC
  1819. COP (Code of Operation): 64H
  1820. Clocks:          NEC V20  : 2
  1821.           NEC V30  : 2
  1822.  
  1823.  
  1824. ---------------------------------------------------
  1825. RES3  - Restore All  CPU Registers
  1826.  
  1827.  
  1828. CPU:  AMD Am386SXLV, Am386DXLV
  1829.  
  1830.  
  1831. Type of Instruction: System Operation
  1832.             (Work only then CPL=0)
  1833.  
  1834. Instruction: RES3
  1835.  
  1836. Description:
  1837.           Load All Registers (Include Shadow Registers) from Table
  1838.           Which Begin on  place pointed ES:EDI
  1839.  
  1840. Note:
  1841.           This instruction is AMD analog Intel's LOADALL instruction
  1842.           but it's more i.c. return from SMM used this instruction.
  1843.  
  1844.           Then in SMM table is in SMRAM, then non SMM then table is
  1845.           in main memory.
  1846.  
  1847. Format of RES3 Table:
  1848.  
  1849.            Offset  Len  Description
  1850.         0H    4    CR0
  1851.         4H    4    EFLAGS
  1852.         8H    4    EIP
  1853.         CH    4    EDI
  1854.         10H    4    ESI
  1855.         14H    4    EBP
  1856.         18H    4    ESP
  1857.         1CH    4    EBX
  1858.         20H    4    EDX
  1859.         24H    4    ESX
  1860.         28H    4    EAX
  1861.         2CH    4    DR6
  1862.         30H    4    DR7
  1863.         34H    4    TR     (16 bit, zero filled up)
  1864.         38H    4    LDT  ---------
  1865.         3CH    4    GS   ---------
  1866.         40H    4    FS   ---------
  1867.         44H    4    DS   ---------
  1868.         48H    4    SS   ---------
  1869.         4CH    4    CS   ---------
  1870.         50H    4    ES   ---------
  1871.         54H    4    TSS.attrib
  1872.         58H    4    TSS.base
  1873.         5CH    4    TSS.limit
  1874.         60H    4    Reserved
  1875.         64H    4    IDT.base
  1876.         68H    4    IDT.limit
  1877.         6CH    4    REP OUTS overrun flag
  1878.         70H    4    GDT.base
  1879.         74H    4    GDT.limit
  1880.         78H    4    LDT.attrib
  1881.         7CH    4    LDT.base
  1882.         80H    4    LDT.limit
  1883.         84H    4    GS.attrib
  1884.         88H    4    GS.base
  1885.         8CH    4    GS.limit
  1886.         90H    4    FS.attrib
  1887.         94H    4    FS.base
  1888.         98H    4    FS.limit
  1889.         9CH    4    DS.attrib
  1890.         A0H    4    DS.base
  1891.         A4H    4    DS.limit
  1892.         A8H    4    SS.attrib
  1893.         ACH    4    SS.base
  1894.         B0H    4    SS.limit
  1895.         B4H    4    CS.attrib
  1896.         B8H    4    CS.base
  1897.         BCH    4    CS.limit
  1898.         C0H    4    ES.attrib
  1899.         C4H    4    ES.base
  1900.         C8H    4    ES.limit
  1901.                 Unknown Unusable area
  1902.         100H    4    Temporary register
  1903.         104H    4    -------------
  1904.         108H    4    -------------
  1905.         10CH    4    -------------
  1906.         110H    4    -------------
  1907.         114H    4    -------------
  1908.         118H    4    -------------
  1909.         11CH    4    -------------
  1910.         120H    4    -------------
  1911.         124H    4    Last EIP (Last instruction EIP for Restart)
  1912.  
  1913. Format    of Attrib field:
  1914.  
  1915.            Byte    Description
  1916.            0    0s
  1917.            1    AR (Access Right) byte in the Descriptor format
  1918.             Note:
  1919.                P bit is a valid bit
  1920.                if valid bit=0 then Shadow Register is invalid and
  1921.                   INT 0DH - General Protection Fault call
  1922.                DPL of SS,CS det. CPL
  1923.            2-3    0s
  1924.  
  1925.  
  1926. Flags Affected: All (FLAGS Register Reload)
  1927.  
  1928. CPU mode: RM,PM0,SMM
  1929.  
  1930. Physical Form:         RES3
  1931. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  1932. Clocks:       Am386SXLV   : 366
  1933.        Am386DXLV   : 291
  1934.  
  1935. ---------------------------------------------------
  1936. RES4  - Restore All  CPU Registers
  1937.  
  1938.  
  1939. CPU:  AMD Am486SXLV, Am486DXLV
  1940.  
  1941.  
  1942. Type of Instruction: System Operation
  1943.             (Work only then CPL=0)
  1944.  
  1945. Instruction: RES3
  1946.  
  1947. Description:
  1948.           Load All Registers (Include Shadow Registers) from Table
  1949.           Which Begin on  place pointed ES:EDI
  1950.  
  1951. Note:
  1952.           This instruction is AMD analog Intel's LOADALL instruction
  1953.           but it's more i.c. return from SMM used this instruction.
  1954.  
  1955.           Then in SMM table is in SMRAM, then non SMM then table is
  1956.           in main memory.
  1957.  
  1958. Format of RES3 Table:
  1959.  
  1960.            Offset  Len  Description
  1961.         0H    4    CR0
  1962.         4H    4    EFLAGS
  1963.         8H    4    EIP
  1964.         CH    4    EDI
  1965.         10H    4    ESI
  1966.         14H    4    EBP
  1967.         18H    4    ESP
  1968.         1CH    4    EBX
  1969.         20H    4    EDX
  1970.         24H    4    ESX
  1971.         28H    4    EAX
  1972.         2CH    4    DR6
  1973.         30H    4    DR7
  1974.         34H    4    TR     (16 bit, zero filled up)
  1975.         38H    4    LDT  ---------
  1976.         3CH    4    GS   ---------
  1977.         40H    4    FS   ---------
  1978.         44H    4    DS   ---------
  1979.         48H    4    SS   ---------
  1980.         4CH    4    CS   ---------
  1981.         50H    4    ES   ---------
  1982.         54H    4    TSS.attrib
  1983.         58H    4    TSS.base
  1984.         5CH    4    TSS.limit
  1985.         60H    4    Reserved
  1986.         64H    4    IDT.base
  1987.         68H    4    IDT.limit
  1988.         6CH    4    REP OUTS overrun flag
  1989.         70H    4    GDT.base
  1990.         74H    4    GDT.limit
  1991.         78H    4    LDT.attrib
  1992.         7CH    4    LDT.base
  1993.         80H    4    LDT.limit
  1994.         84H    4    GS.attrib
  1995.         88H    4    GS.base
  1996.         8CH    4    GS.limit
  1997.         90H    4    FS.attrib
  1998.         94H    4    FS.base
  1999.         98H    4    FS.limit
  2000.         9CH    4    DS.attrib
  2001.         A0H    4    DS.base
  2002.         A4H    4    DS.limit
  2003.         A8H    4    SS.attrib
  2004.         ACH    4    SS.base
  2005.         B0H    4    SS.limit
  2006.         B4H    4    CS.attrib
  2007.         B8H    4    CS.base
  2008.         BCH    4    CS.limit
  2009.         C0H    4    ES.attrib
  2010.         C4H    4    ES.base
  2011.         C8H    4    ES.limit
  2012.                 Unknown Unusable area
  2013.         100H    4    Temporary register
  2014.         104H    4    -------------
  2015.         108H    4    -------------
  2016.         10CH    4    -------------
  2017.         110H    4    -------------
  2018.         114H    4    -------------
  2019.         118H    4    -------------
  2020.         11CH    4    -------------
  2021.         120H    4    -------------
  2022.         124H    4    Last EIP (Last instruction EIP for Restart)
  2023.         128H    4    PEIP - Previous SRAM space instruction pointer
  2024.         12EH    36    Unused
  2025.         150H    22    Floating Pointer Internal Registers (Am486DXLV)
  2026.  
  2027.  
  2028. Format    of Attrib field:
  2029.  
  2030.            Byte    Description
  2031.            0    0s
  2032.            1    AR (Access Right) byte in the Descriptor format
  2033.             Note:
  2034.                P bit is a valid bit
  2035.                if valid bit=0 then Shadow Register is invalid and
  2036.                   INT 0DH - General Protection Fault call
  2037.                DPL of SS,CS det. CPL
  2038.            2-3    0s
  2039.  
  2040.  
  2041. Flags Affected: All (FLAGS Register Reload)
  2042.  
  2043. CPU mode: RM,PM0,SMM
  2044.  
  2045. Physical Form:         RES4
  2046. COP (Code of Operation): 0FH 07H  Note: Code is same with Intel's LOADALL
  2047. Clocks:       Am486SXLV   : N/A
  2048.  
  2049. ---------------------------------------------------
  2050. RSDC  - Restore Register and Descriptor
  2051.  
  2052.  
  2053. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2054.       IBM   BL486DX/DX2
  2055.       TI    486SLC/DLC/e
  2056.       TI    486SXL/SXL2/SXLC
  2057.       TI    Potomac
  2058.  
  2059. Type of Instruction: System
  2060.  
  2061. Instruction:  RSDC sreg,sorc
  2062.  
  2063.  
  2064. Description:
  2065.  
  2066.     sreg [selector,shadow_descriptor] <- sorc
  2067.  
  2068.     ; sorc is register and descriptor structure (see below)
  2069.  
  2070.     ; Note: This instruction load segment register
  2071.     ;    include shadow descriptor
  2072.  
  2073.  
  2074. Format or Register and Descriptor Structure:
  2075.     +00    Limit (15-0)
  2076.     +02    Base  (15-0)
  2077.     +04    Base  (23-16)
  2078.     +05    AR byte
  2079.     +06    AR2/Limit (19-16)
  2080.     +07    Base  (31-24)
  2081.     +08    Selector
  2082.     Length of structure is 10h
  2083.  
  2084.  
  2085.  
  2086. Flags Affected: None
  2087.  
  2088. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2089.  
  2090.  
  2091.        1) CPL=0
  2092.        2) CCR1.bit1=1  ; SMI enable
  2093.        3) SMAR size > 0
  2094.        4A) in SMM
  2095.        4B) CCR1.bit2=1 ; SMAC is on
  2096.  
  2097.  
  2098.  
  2099. ++++++++++++++++
  2100.  
  2101. Physical Form: RSDC sgeg,mem80
  2102. COP (Code of Operation)     : 0FH 79H  [mm sreg3 mmm]
  2103. Clocks    IBM BL486DX: 10
  2104.     TI  486SXL : 14
  2105.  
  2106. Note: sreg3 is: 000 ES
  2107.         001 CS
  2108.         010 SS
  2109.         011 DS
  2110.         100 FS
  2111.         101 GS
  2112.  
  2113.  
  2114.  
  2115. ---------------------------------------------------
  2116. RSLDT  - Restore LDTR and Descriptor
  2117.  
  2118.  
  2119. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2120.       IBM   BL486DX/DX2
  2121.       TI    486SLC/DLC/e
  2122.       TI    486SXL/SXL2/SXLC
  2123.       TI    Potomac
  2124.  
  2125. Type of Instruction: System
  2126.  
  2127. Instruction:  RSLDT sorc
  2128.  
  2129.  
  2130. Description:
  2131.  
  2132.     LDTR [selector,shadow_descriptor] <- sorc
  2133.  
  2134.     ; sorc is register and descriptor structure (see below)
  2135.  
  2136.  
  2137.  
  2138. Format or Register and Descriptor Structure:
  2139.     +00    Limit (15-0)
  2140.     +02    Base  (15-0)
  2141.     +04    Base  (23-16)
  2142.     +05    AR byte
  2143.     +06    AR2/Limit (19-16)
  2144.     +07    Base  (31-24)
  2145.     +08    Selector
  2146.     Length of structure is 10h
  2147.  
  2148.  
  2149.  
  2150. Flags Affected: None
  2151.  
  2152. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2153.  
  2154.  
  2155.        1) CPL=0
  2156.        2) CCR1.bit1=1  ; SMI enable
  2157.        3) SMAR size > 0
  2158.        4A) in SMM
  2159.        4B) CCR1.bit2=1 ; SMAC is on
  2160.  
  2161.  
  2162.  
  2163. ++++++++++++++++
  2164.  
  2165. Physical Form: RSLDT  mem80
  2166. COP (Code of Operation)     : 0FH 7BH  [mm 000 mmm]
  2167. Clocks    IBM BL486DX: 10
  2168.     TI  486SXL : 14
  2169.  
  2170.  
  2171.  
  2172.  
  2173. ---------------------------------------------------
  2174. RSM  - Resume from System Managment Mode
  2175.  
  2176.  
  2177. CPU:  I486 SL Enhanced+,i486SL,i386CX,i386EX
  2178.  
  2179. Type of Instruction: System
  2180.  
  2181. Instruction: RSM
  2182.  
  2183. Description:
  2184.  
  2185.        Restore execution state from SMRAM and
  2186.        return to previous CPU mode
  2187.  
  2188.  
  2189. CPU mode: SMM only
  2190.      ( INT 6 - Undefined Opcode in all other mode )
  2191.  
  2192. Flags Affected: All
  2193.  
  2194. Note: CPU state restored from dump created entrance to SMM.
  2195.       The CPU leave SMM and return to previous mode.
  2196.       If CPU detect any invalid state it enters shutdown.
  2197.       This invalid states is:
  2198.        * The value stored in State Dump Base field is not 32K aligned
  2199.      address
  2200.        * Any Reserved bit of CR4 is set to 1 (Pentium only)
  2201.        * Any  illegal Combination of CR0:
  2202.        ** (PG=1 and PE=0)
  2203.        ** (NW=1 and CD=0)
  2204.  
  2205.  
  2206. Format of Execution State in SMRAM:
  2207.     Offset    Register
  2208.     7FFCh    CR0
  2209.     7FF8h    CR3
  2210.     7FF4h    EFLAGS
  2211.     7FF0h    EIP
  2212.     7FECh    EDI
  2213.     7FE8h    ESI
  2214.     7FE4h    EBP
  2215.     7FE0h    ESP
  2216.     7FDCh    EBX
  2217.     7FD8h    EDX
  2218.     7FD4h    ECX
  2219.     7FD0h    EAX
  2220.     7FCCh    DR7
  2221.     7FC4h    TR, upper 2 bytes reserved
  2222.     7FC0h    LDTR, upper 2 bytes reserved
  2223.     7FBCh    GS, upper 2 bytes reserved
  2224.     7FB8h    FS, upper 2 bytes reserved
  2225.     7FB4h    DS, upper 2 bytes reserved
  2226.     7FB0h    SS, upper 2 bytes reserved
  2227.     7FACh    CS, upper 2 bytes reserved
  2228.     7FA8h    ES, upper 2 bytes reserved
  2229.     7F98h    Reserved
  2230.     7F94h    IDT base  (4 bytes)
  2231.     7F8Ch    Reserved
  2232.     7F88h    GDT base  (4 bytes)
  2233.     7F04h    Reserved
  2234.     7F02h    Auto HALT Restart Slot (2 bytes)
  2235.         Bits 15..2 are reserved
  2236.         Bit 1  Bit 0    Description
  2237.         0    0    Resume to next instruction in interrupted
  2238.                 program
  2239.         0    1    Unpredictable
  2240.         1    0    Return to next instruction after HALT
  2241.         1    1    Return to HALT state
  2242.     7F00h    I/O Restart Slot (2 bytes)
  2243.         When RSM execution if I/O restart slot = 0FFh then
  2244.         EIP modified to instruction immediate preceding the
  2245.         SMI# request i.e. CPU automatically reexecute I/O
  2246.         instruction which be trapped by SMI.
  2247.     7EFCh    SMM Revision Identificator (4 bytes)
  2248.         Bits    Description
  2249.         31..18    Reserved
  2250.         17    If=1 Processor support SMBASE relocation
  2251.             else not support
  2252.         16    If =1 Processor support I/O Instruction Restart
  2253.         15..0    SMM Revision Identificator
  2254.             P5,486s = 0000h
  2255.             P54C when I/O Restarts enable = 0002h
  2256.     7EF8h    SMBASE Slot (4 bytes)
  2257.         SMBASE is 32KB aligned 32bit dword which contained a base
  2258.         address for SMRAM.
  2259.         Default value is 30000h
  2260.         Starting Address for for jump in SMM is:
  2261.           SMBASE+8000h
  2262.         Starting address for State Save area is
  2263.           SMBASE+[8000h+7FFFh]
  2264.     7E00h    Reserved
  2265.  
  2266.  
  2267. Note: In fields marked Reserved saved and restores next registers:
  2268.       CR1,CR2,CR3, hidden descriptors for CS,DS,ES,FS,SS,GS.
  2269.       Never saved registers: DR5-DR0,TR7-TR3,all FPU registers.
  2270.       More Information Not available Yet.
  2271.  
  2272.  
  2273. Physical Form:          RSM
  2274. COP (Code of Operation)      : 0FH AAH
  2275. Clocks:      i386CX      : 338
  2276.     i486 SL Enhanced  : ???
  2277.      IntelDX4      : 452        ; SMBASE relocation
  2278.               : 456        ; AutoHALT restart
  2279.               : 465        ; I/O Trap restart
  2280.          Pentium  : 83
  2281.  
  2282. ---------------------------------------------------
  2283. RSM  - Resume from SMM
  2284.  
  2285.  
  2286. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2287.       IBM   BL486DX/DX2
  2288.       TI    486SLC/DLC/e
  2289.       TI    486SXL/SXL2/SXLC
  2290.       TI    Potomac
  2291.  
  2292. Type of Instruction: System
  2293.  
  2294. Instruction:  RSM
  2295.  
  2296.  
  2297. Description:
  2298.  
  2299.     RESTORE CPU STATE FROM SMM HEADER AT THE TOP OF
  2300.     SMM SPACE (defined by SMAR register);
  2301.     EXIT SMM;
  2302.  
  2303. Format of SMM Header:
  2304.     Offset    Length    Description
  2305.     -00h    -    Nothing (Top of SMM space) (Not accessable)
  2306.     -04h    32    DR7
  2307.     -08h    32    EFLAGS
  2308.     -0Ch    32    CR0
  2309.     -10h    32    Current EIP
  2310.     -14h    32    Next instruction EIP
  2311.     -16h    16    Reserved
  2312.     -18h    16    CS selector
  2313.     -1Ch    32    CS descriptor(63-32)
  2314.     -20h    32    CS descriptor(31-0)
  2315.     -24h    32    SMM Flags
  2316.             [ ALL BITS are Not available in Cx486S/S2/D/D2]
  2317.             Bit   Description
  2318.             1    I (IN/INSx/OUT/OUTx Indicator)
  2319.                  If =0 current instruction performed
  2320.                    I/O read
  2321.                 =1 I/O write
  2322.             2    P (REP INSx/OUTx Prefix)
  2323.                  If =1 current instruction has REP pfix.
  2324.                 =0 not has REP pfix
  2325.             3    S (Software SMI)
  2326.                  If =1 current SMM is result of execution
  2327.                    SMINT instruction
  2328.                 =0 current SMM is result of hardware SMI
  2329.             Note: TI 486SXL/SXL2 support only bits 1,2.
  2330.     -26h    16    I/O Write Data size
  2331.             [ Not available in Cx486S/S2/D/D2]
  2332.             [ Not available in TI486SXL/SXL2]
  2333.             [ Not available in TI486SLC/DLC/e]
  2334.             1h = byte
  2335.             3h = word
  2336.             fh = dword
  2337.     -28h    16    I/O Write Address
  2338.             [ Not avaliable in Cx486S/S2/D/D2]
  2339.             [ Not available in TI486SXL/SXL2]
  2340.             [ Not available in TI486SLC/DLC/e]
  2341.     -2Ch    32    I/O Write Data
  2342.             [ Not avaliable in Cx486S/S2/D/D2]
  2343.             [ Not available in TI486SXL/SXL2]
  2344.             [ Not available in TI486SLC/DLC/e]
  2345.     -30h    32    ESI or EDI
  2346.             This field saved value of source/destination
  2347.             for restart INSx/OUTSx instruction
  2348.             [ Not avaliable in Cx486S/S2/D/D2]
  2349.  
  2350.  
  2351.  
  2352. Flags Affected: All
  2353.  
  2354. CPU mode: SMM
  2355.  
  2356. ++++++++++++++++
  2357.  
  2358. Physical Form: RSM
  2359. COP (Code of Operation)     : 0FH AAH
  2360. Clocks    IBM BL486DX: 76
  2361.     TI  486SXL : 58
  2362.  
  2363.  
  2364.  
  2365.  
  2366. ---------------------------------------------------
  2367. RSTS  - Restore TR and Descriptor
  2368.  
  2369.  
  2370. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2371.       TI    486SLC/DLC/e
  2372.       TI    486SXL/SXL2/SXLC
  2373.       IBM   BL486DX/DX2
  2374.  
  2375. Type of Instruction: System
  2376.  
  2377. Instruction:  RSTS sorc
  2378.  
  2379.  
  2380. Description:
  2381.  
  2382.     TR [selector,shadow_descriptor] <- sorc
  2383.  
  2384.     ; sorc is register and descriptor structure (see below)
  2385.  
  2386.  
  2387.  
  2388. Format or Register and Descriptor Structure:
  2389.     +00    Limit (15-0)
  2390.     +02    Base  (15-0)
  2391.     +04    Base  (23-16)
  2392.     +05    AR byte
  2393.     +06    AR2/Limit (19-16)
  2394.     +07    Base  (31-24)
  2395.     +08    Selector
  2396.     Length of structure is 10h
  2397.  
  2398.  
  2399.  
  2400. Flags Affected: None
  2401.  
  2402. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2403.  
  2404.  
  2405.        1) CPL=0
  2406.        2) CCR1.bit1=1  ; SMI enable
  2407.        3) SMAR size > 0
  2408.        4A) in SMM
  2409.        4B) CCR1.bit2=1 ; SMAC is on
  2410.  
  2411.  
  2412.  
  2413. ++++++++++++++++
  2414.  
  2415. Physical Form: RSTS  mem80
  2416. COP (Code of Operation)     : 0FH 7DH  [mm 000 mmm]
  2417. Clocks    IBM BL486DX: 10
  2418.     TI  486SXL : 14
  2419.  
  2420.  
  2421.  
  2422.  
  2423. ---------------------------------------------------
  2424. SETALC    - Set AL to Carry Flag
  2425.  
  2426.  
  2427. CPU:  Intel 80286 and all its clones and upward
  2428.     compatibility chips.
  2429.  
  2430. Type of Instruction: User
  2431.  
  2432. Instruction: SETALC
  2433.  
  2434. Description:
  2435.  
  2436.     IF (CF=0) THEN AL:=0 ELSE AL:=FFH;
  2437.  
  2438.  
  2439. Flags Affected: None
  2440.  
  2441. CPU mode: RM,PM,VM,SMM
  2442.  
  2443. Physical Form:         SETALC
  2444. COP (Code of Operation): D6H
  2445. Clocks:          80286    : n/a   [3]
  2446.           80386    : n/a   [3]
  2447.          Cx486SLC  : n/a   [2]
  2448.           i486     : n/a   [3]
  2449.           Pentium  : n/a   [3]
  2450. Note: n/a is Time that Intel etc not say.
  2451.       [3] is real time it executed.
  2452.  
  2453.  
  2454.  
  2455. ---------------------------------------------------
  2456. SMI  - System Managment Interrupt
  2457.  
  2458. CPU:  AMD Am386SXLV,Am386DXLV
  2459.       AMD 486s
  2460.  
  2461. Type of Instruction: System
  2462.  
  2463. Instruction: SMI
  2464.  
  2465. Description:
  2466.  
  2467.     IF (SMIE=1) THEN
  2468.            {
  2469.            SAVE STATUS OF EXECUTION TO SMRAM;
  2470.            ENTER SMM;
  2471.            SMMS <- 1;
  2472.            }
  2473.        ELSE
  2474.           {
  2475.           INT 1;
  2476.           }
  2477.        END
  2478.  
  2479. Notes: SMIE is <Soft SMI Enable> (DR7.bit12)
  2480.            =1 Enable soft SMI
  2481.            =0 Disable soft SMI
  2482.        SMMS is <SMM status bit>     (DR6.bit12)
  2483.            =1 SMM was entered
  2484.            =0 SMM status cleared
  2485.  
  2486. Flags Affected: None
  2487.  
  2488. CPU mode: RM?,PM0
  2489.  
  2490. Physical Form:         SMI
  2491. COP (Code of Operation): F1H
  2492. Clocks:         Am386SXLV : 357
  2493.          Am386DXLV : 325
  2494.          Am486xxxx : Don't know, do you?
  2495.  
  2496. ---------------------------------------------------
  2497. SMINT - Software SMM Interrupt
  2498.  
  2499.  
  2500. CPU:  Cyrix Cx486DX/DX2
  2501.       IBM   BL486DX/DX2
  2502. Note: Never in Cx486S/S2/D/D2
  2503.       Never in any TI's chips.
  2504.  
  2505. Type of Instruction: System
  2506.  
  2507. Instruction:  SMINT
  2508.  
  2509.  
  2510. Description:
  2511.     SAVE CPU STATE TO SMM HEADER AT THE TOP OF
  2512.     SMM SPACE (defined by SMAR register);
  2513.     ENTER SMM MODE;
  2514.  
  2515.  
  2516. Format of SMM Header: Refer to Cyrix/IBM SMI Instruction
  2517.  
  2518.  
  2519. Flags Affected: None
  2520.  
  2521. CPU mode: CPL=0, CCR1.bit1=1, SMAR size >= 30h.
  2522.  
  2523.  
  2524. ++++++++++++++++
  2525.  
  2526. Physical Form: SMINT
  2527. COP (Code of Operation)     : 0FH 7EH
  2528. Clocks    IBM BL486DX: 24
  2529.  
  2530.  
  2531.  
  2532. ---------------------------------------------------
  2533. SVDC  - Save Register and Descriptor
  2534.  
  2535.  
  2536. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2537.       IBM   BL486DX/DX2
  2538.       TI    486SLC/DLC/e
  2539.       TI    486SXL/SXL2/SXLC
  2540.       TI    Potomac
  2541.  
  2542. Type of Instruction: System
  2543.  
  2544. Instruction:  SVDC dest,sreg
  2545.  
  2546.  
  2547. Description:
  2548.  
  2549.     dest <- sreg [selector,shadow_descriptor]
  2550.  
  2551.     ; dest is register and descriptor structure (see below)
  2552.  
  2553.  
  2554.  
  2555. Format or Register and Descriptor Structure:
  2556.     +00    Limit (15-0)
  2557.     +02    Base  (15-0)
  2558.     +04    Base  (23-16)
  2559.     +05    AR byte
  2560.     +06    AR2/Limit (19-16)
  2561.     +07    Base  (31-24)
  2562.     +08    Selector
  2563.     Length of structure is 10h
  2564.  
  2565.  
  2566.  
  2567. Flags Affected: None
  2568.  
  2569. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2570.  
  2571.  
  2572.        1) CPL=0
  2573.        2) CCR1.bit1=1  ; SMI enable
  2574.        3) SMAR size > 0
  2575.        4A) in SMM
  2576.        4B) CCR1.bit2=1 ; SMAC is on
  2577.  
  2578.  
  2579.  
  2580. ++++++++++++++++
  2581.  
  2582. Physical Form: SVDC mem80,sreg
  2583. COP (Code of Operation)     : 0FH 78H  [mm sreg3 mmm]
  2584. Clocks    IBM BL486DX: 18
  2585.     TI  486SXL : 22
  2586.  
  2587. Note: sreg3 is: 000 ES
  2588.         001 CS
  2589.         010 SS
  2590.         011 DS
  2591.         100 FS
  2592.         101 GS
  2593.  
  2594.  
  2595.  
  2596. ---------------------------------------------------
  2597. SVLDT  - Save LDTR and Descriptor
  2598.  
  2599.  
  2600. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2601.       IBM   BL486DX/DX2
  2602.       TI    486SLC/DLC/e
  2603.       TI    486SXL/SXL2/SXLC
  2604.       TI    Potomac
  2605.  
  2606. Type of Instruction: System
  2607.  
  2608. Instruction:  SVLDT dest
  2609.  
  2610.  
  2611. Description:
  2612.  
  2613.     dest <- LDTR [selector,shadow_descriptor]
  2614.  
  2615.     ; dest is register and descriptor structure (see below)
  2616.  
  2617.  
  2618.  
  2619. Format or Register and Descriptor Structure:
  2620.     +00    Limit (15-0)
  2621.     +02    Base  (15-0)
  2622.     +04    Base  (23-16)
  2623.     +05    AR byte
  2624.     +06    AR2/Limit (19-16)
  2625.     +07    Base  (31-24)
  2626.     +08    Selector
  2627.     Length of structure is 10h
  2628.  
  2629.  
  2630.  
  2631. Flags Affected: None
  2632.  
  2633. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2634.  
  2635.  
  2636.        1) CPL=0
  2637.        2) CCR1.bit1=1  ; SMI enable
  2638.        3) SMAR size > 0
  2639.        4A) in SMM
  2640.        4B) CCR1.bit2=1 ; SMAC is on
  2641.  
  2642.  
  2643.  
  2644. ++++++++++++++++
  2645.  
  2646. Physical Form: SVLDT mem80
  2647. COP (Code of Operation)     : 0FH 7AH  [mm 000 mmm]
  2648. Clocks    IBM BL486DX: 18
  2649.     TI  486SXL : 22
  2650.  
  2651.  
  2652.  
  2653. ---------------------------------------------------
  2654. SVTS  - Save TR and Descriptor
  2655.  
  2656.  
  2657. CPU:  Cyrix Cx486S/S2/D/D2/DX/DX2
  2658.       IBM   BL486DX/DX2
  2659.       TI    486SLC/DLC/e
  2660.       TI    486SXL/SXL2/SXLC
  2661.       TI    Potomac
  2662.  
  2663. Type of Instruction: System
  2664.  
  2665. Instruction:  SVTS dest
  2666.  
  2667.  
  2668. Description:
  2669.  
  2670.     dest <- TR [selector,shadow_descriptor]
  2671.  
  2672.     ; dest is register and descriptor structure (see below)
  2673.  
  2674.  
  2675.  
  2676. Format or Register and Descriptor Structure:
  2677.     +00    Limit (15-0)
  2678.     +02    Base  (15-0)
  2679.     +04    Base  (23-16)
  2680.     +05    AR byte
  2681.     +06    AR2/Limit (19-16)
  2682.     +07    Base  (31-24)
  2683.     +08    Selector
  2684.     Length of structure is 10h
  2685.  
  2686.  
  2687.  
  2688. Flags Affected: None
  2689.  
  2690. CPU mode: (1) and (2) and (3) and [(4A) or (4B)]
  2691.  
  2692.  
  2693.        1) CPL=0
  2694.        2) CCR1.bit1=1  ; SMI enable
  2695.        3) SMAR size > 0
  2696.        4A) in SMM
  2697.        4B) CCR1.bit2=1 ; SMAC is on
  2698.  
  2699.  
  2700.  
  2701. ++++++++++++++++
  2702.  
  2703. Physical Form: SVTS mem80
  2704. COP (Code of Operation)     : 0FH 7CH  [mm 000 mmm]
  2705. Clocks    IBM BL486DX: 18
  2706.     TI  486SXL : 22
  2707.  
  2708.  
  2709.  
  2710. ---------------------------------------------------
  2711. UMOV  - Mov Data to Main (User) Memory
  2712.  
  2713.  
  2714. CPU:  AMD Am386SXLV,Am386DXLV
  2715.       AMD 486s
  2716.       IBM 486SLC2
  2717.  
  2718. Type of Instruction: Special System
  2719.  
  2720. Instruction: UMOV dest,sorc
  2721.  
  2722.  
  2723. Description:
  2724.  
  2725.       dest <- sorc;
  2726.  
  2727. Note!!!!!: But all memory operands placed in Main memory only !
  2728.       ( i.e. not in SMRAM then in SMM )
  2729.  
  2730. WARNING: UMC's CPUs hang on execution this instruction !!!!!!
  2731.      check that CPU is none UMC's before
  2732.  
  2733. Note:     On Cyrix's CPUs UMOV opcodes do nothing. This way used to
  2734.      determination of Cyrix Microprocessors.
  2735.  
  2736. Note:     Pentium P54C never support this instruction
  2737.  
  2738. Flags Affected:     None
  2739.  
  2740. CPU mode: RM?,PM?,VM?,SMM
  2741.  
  2742. +++++++++++++++++++++++
  2743. Physical Form:           UMOV     r/m8,r8
  2744. COP (Code of Operation)     : 0FH 10H Postbyte
  2745.  
  2746. Clocks:
  2747.       Am386SXLV or AM386DXLV:  2/2
  2748.       IBM 486SLC2        :  4
  2749. +++++++++++++++++++++
  2750. Physical Form:           UMOV     r/m16,r16
  2751.                UMOV     r/m32,r32
  2752. COP (Code of Operation)     : 0FH 11H Postbyte
  2753.  
  2754. Clocks:
  2755.       Am386SXLV or AM386DXLV:  2/2
  2756.       IBM 486SLC2        :  4
  2757. +++++++++++++++++++++++
  2758. Physical Form:           UMOV     r8,r/m8
  2759. COP (Code of Operation)     : 0FH 12H Postbyte
  2760.  
  2761. Clocks:
  2762.       Am386SXLV or AM386DXLV:  2/4
  2763.       IBM 486SLC2        :  4
  2764. +++++++++++++++++++++
  2765. Physical Form:           UMOV     r16,r/m16
  2766.                UMOV     r32,r/m32
  2767. COP (Code of Operation)     : 0FH 13H Postbyte
  2768.  
  2769. Clocks:
  2770.       Am386SXLV or AM386DXLV:  2/4
  2771.       IBM 486SLC2        :  4
  2772.  
  2773.  
  2774. ---------------------------------------------------
  2775. WBINVD    - Write Back and Invalidate Cache
  2776.  
  2777.  
  2778. CPU:  I486 +
  2779.  
  2780. Type of Instruction: System
  2781.  
  2782. Instruction: WBINVD
  2783.  
  2784. Description:
  2785.          IF (internal cache is WB and in WB mode) THEN
  2786.               {
  2787.               Write Back Internal Cache;
  2788.               }
  2789.          Flush internal cache;
  2790.          Signal external cache to Write Back;
  2791.          Signal external cache to Flush;
  2792.  
  2793.  
  2794. Notes: This instruction not work in Real Mode and  in
  2795. Protected mode work only in ring 0 ;
  2796.  
  2797. Flags Affected: None
  2798.  
  2799. CPU mode: PM0,SMM
  2800.  
  2801. Physical Form:         INVD
  2802. COP (Code of Operation): 0FH 09H
  2803. Clocks: Cyrix Cx486SLC : 4
  2804.           i486     : 5
  2805.           Pentium  : 2000+
  2806.  
  2807. ---------------------------------------------------
  2808. WRMSR  - Write to From Model Specified Register
  2809.  
  2810. CPU:  Pentium (tm), IBM 486SLC2
  2811.  
  2812. Type of Instruction: System
  2813.  
  2814. Instruction: WRMSR
  2815.  
  2816. Description:
  2817.  
  2818.     IF (ECX is valid number of MSR) and (CPL=0)  THEN
  2819.           {
  2820.           MSR [ECX] <- EDX:EAX;
  2821.           }
  2822.         ELSE
  2823.           {
  2824.           General Protection Fault  INT 0DH (0)
  2825.           }
  2826.     END
  2827.  
  2828.  
  2829.  
  2830. Flags Affected: None
  2831.  
  2832. Note: Refer to RDMSR for more Info.
  2833.  
  2834. CPU mode: RM,PM0,SMM
  2835.  
  2836. Physical Form:         WRMSR
  2837. COP (Code of Operation): 0FH 30H
  2838. Clocks:         Pentium   : 30-45
  2839.  
  2840. ---------------------------------------------------
  2841. XADD  - Exchange and addition
  2842.  
  2843.  
  2844. CPU:  i486+
  2845.  
  2846. Type of Instruction: User
  2847.  
  2848. Instruction: XADD dest,sorc
  2849.  
  2850.  
  2851. Description:
  2852.  
  2853.       Temporary <- dest;
  2854.       dest        <- dest + sorc;
  2855.       sorc        <- Temporary;
  2856.  
  2857.  
  2858. Flags Affected:     ZF,OF,SF,AF,PF,CF ( like ADD instruction ) ( see description)
  2859.  
  2860. CPU mode: RM,PM,VM,SMM
  2861.  
  2862. +++++++++++++++++++++++
  2863. Physical Form:           XADD     r/m8,r8
  2864. COP (Code of Operation)     : 0FH C0H Postbyte
  2865.  
  2866. Clocks:
  2867.        Intel i486     :  3/4
  2868.      Cyrix Cx486SLC     :  3/6
  2869.      Pentium (tm)     :  3/4
  2870.  
  2871. Penalty if cache miss     :
  2872.       Intel i486     : 6/2    ; Unlocked/Locked
  2873.      Cyrix Cx486SLC     : 0    ; N/A
  2874. +++++++++++++++++++++
  2875. Physical Form:           XADD     r/m16,r16
  2876.                XADD     r/m32,r32
  2877. COP (Code of Operation)     : 0FH C1H Postbyte
  2878.  
  2879. Clocks:
  2880.        Intel i486     :  3/4
  2881.      Cyrix Cx486SLC     :  3/6
  2882.      Pentium (tm)     :  3/4
  2883.  
  2884. Penalty if cache miss     :
  2885.       Intel i486     : 6/2    ; Unlocked/Locked
  2886.      Cyrix Cx486SLC     : 1    ; N/A
  2887.  
  2888.  
  2889.  
  2890. ---------------------------------------------------
  2891. XBTS    -  Extract  Bits String
  2892.  
  2893.  
  2894. CPU:  80386 step A0-B0 only
  2895.  
  2896. Type of Instruction: User
  2897.  
  2898. Instruction:  XBTS dest,base,bitoffset,len
  2899.  
  2900.  
  2901. Description:
  2902.          Write bit string length <len> bits from bitfield, defined by
  2903.         <base> and bitsoffset <bitoffset> from this base to start of
  2904.         the field to read. String read from this start field bit to
  2905.         higher memory addresses or register bits.
  2906.         And after it string placed to <dest> operand, lowest bit of
  2907.         register or memory to bit 0 of <dest>.
  2908.  
  2909. Note:         Use SHLD/SHRD instructions for extract bits strings.
  2910.          On 80386 steps B1+ this opcode generation INT 6,
  2911.          and on some of 486 other instruction replace this
  2912.          instruction opcode.
  2913.  
  2914.  
  2915. Flags Affected: None
  2916.  
  2917. CPU mode: RM,PM,VM
  2918.  
  2919. +++++++++++++++++++++++
  2920. Physical Form:      XBTS    r16,r/m16,AX,CL
  2921.           XBTS    r32,r/m32,EAX,CL
  2922. COP (Code of Operation)     : 0FH A6H Postbyte
  2923.  
  2924. Clocks:        XBTS
  2925. 80386:        6/13
  2926.  
  2927.  
  2928. -----------------------------------------------------
  2929. APPENDIX    A0
  2930. Cyrix Cx486SLC/DLC configuration Registers
  2931.  
  2932. for Cx486DLC:
  2933. Register    Full Register Name        Index    size(bits)
  2934. CCR0    Configuration Control Register #0    C0H    8
  2935. CCR1    Configuration Control Register #1    C1H    8
  2936. NCR1    Non-cacheble Region #0            C4H-C6H    24
  2937. NCR2    Non-cachable Region #1            C7H-C9H    24
  2938. NCR3    Non-cacheble Region #2            CAH-CCH 24
  2939. NCR4    Non-cacheble Region #4            CDH-CFH    24
  2940.  
  2941. for Cx486SLC:
  2942. Register    Full Register Name        Index    size(bits)
  2943. CCR0    Configuration Control Register #0    C0H    8
  2944. CCR1    Configuration Control Register #1    C1H    8
  2945. NCR1    Non-cacheble Region #0            C5H-C6H    16
  2946. NCR2    Non-cachable Region #1            C8H-C9H    16
  2947. NCR3    Non-cacheble Region #2            CBH-CCH 16
  2948. NCR4    Non-cacheble Region #4            CEH-CFH    16
  2949.  
  2950.  
  2951. For access to this register You need to do:
  2952.  
  2953. A) write INDEX_OF_REGISTER to I/O port #22H
  2954. B) wait 5-6 clocks
  2955. D) read/write DATA from/to register via I/O port #23
  2956.  
  2957. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  2958.       generated external bus cycle. If You try to read I/O port
  2959.       #22H CPU will generated external bus cycle too. Then index
  2960.       is out of range all operations with port #23H will generate
  2961.       external bus cycle.
  2962.  
  2963. State After Reset:
  2964.     CCR0    00H
  2965.     CCR1    xxxx xxx0B
  2966.     NCR1    000Fh
  2967.     NCR2    0
  2968.     NCR3    0
  2969.     NCR4    0
  2970.  
  2971. format of registers:
  2972.  
  2973. CCR0:
  2974. Bit    Name    Description
  2975. 7    SUSPEND
  2976.     If =1 then enable SUSP# and SUSPA# pins, which used for
  2977.     put CPU in PowerSave mode.
  2978.     If =0 disable
  2979.  
  2980. 6    CO    (Cache Organisation)
  2981.     If =0 2ways set associative
  2982.     If =1 Dirrect Mapped
  2983.  
  2984. 5    BARB
  2985.     If =1 then enable flushing internal cache when begining
  2986.     HOLD state.
  2987.     IF =0 disable.
  2988.  
  2989. 4    FLUSH
  2990.     If =1 enable input pin FLUSH#
  2991.     if =0 disable
  2992.  
  2993. 3    KEN
  2994.     If =1 enable input pin KEN#
  2995.     if =0 disable
  2996.  
  2997. 2    A20M
  2998.     If =1 enable input pin A20M#
  2999.     if =0 disable
  3000.  
  3001. 1    NC1
  3002.     If=1 then 640KB-1MB area never caching
  3003.     If=0 caching (but see NCRi)
  3004.  
  3005. 0    NC0
  3006.     If=1 then first 64K of each 1MB bounds not caching,
  3007.     when in Real or Virtual8086 mode
  3008.     If =0 caching
  3009.  
  3010.  
  3011. CCR1:
  3012. Bit    Name    Description
  3013. 7-1    Reserved
  3014. 0    RPL
  3015.     If =1 then enable RPLSET,RPLVAL# pins
  3016.     If =0 this pins are disable and float.
  3017.  
  3018. NCRi:
  3019. Byte    Bits    Description
  3020. 0    7-0    Address bits A31-A24 of non-cacheble region  start
  3021.         (Reserved for Cx486SLC)
  3022. 1    7-0    Address bits A23-A16 of non-cachable region start
  3023. 2    7-4    Address bits A15-A12 of non-cacheble region start
  3024. 2    3-0    Size of non-cacheble block:
  3025.         0000  Disable NCRi
  3026.         0001  4K
  3027.         0010  8K
  3028.         0011  16K
  3029.         0100  32K
  3030.         0101  64K
  3031.         0110  128K
  3032.         0111  256K
  3033.         1000  512K
  3034.         1001  1M
  3035.         1010  2M
  3036.         1011  4M
  3037.         1100  8M
  3038.         1101  16M
  3039.         1110  32M
  3040.         1111  4G
  3041.  
  3042. NCRi bytes:
  3043.  
  3044.  
  3045.     Byte
  3046. NCRi    0    1    2
  3047. NCR1    C4H    C5H    C6H
  3048. NCR2    C7H    C8H    C9H
  3049. NCR3    CAH    CBH    CCH
  3050. NCR4    CDH    CDH    CEH
  3051.  
  3052.  
  3053.  
  3054.  
  3055.  
  3056. ---------------------------------------------------
  3057. APPENDIX    A1
  3058. Cyrix Cx486S/S2/D/D2/DX/DX2
  3059. IBM   BL486DX/DX2
  3060. configuration Registers
  3061.  
  3062. Register    Full Register Name        Index    size(bits)
  3063. CCR1    Configuration Control Register #1    C1H    8
  3064. CCR2    Configuration Control Register #2    C2H    8
  3065. CCR3    Configuration Control Register #3    C3H    8
  3066. SMAR    SMM Address Region            CDH-CFH 24
  3067. DIR0    Device Identification register #0    FEH    8
  3068. DIR1    Device Identification register #1    FFH    8
  3069.  
  3070.  
  3071. For access to this register You need to do:
  3072.  
  3073. A) write INDEX_OF_REGISTER to I/O port #22H
  3074. B) wait 5-6 clocks
  3075. D) read/write DATA from/to register via I/O port #23
  3076.  
  3077. Note: If Index of register not in range C0H..CFH,FEH,FFH then Cyrix
  3078.       CPU generated external bus cycle. If You try to read I/O port
  3079.       #22H CPU will generated external bus cycle too. Then index
  3080.       is out of range all operations with port #23H will generate
  3081.       external bus cycle.
  3082.  
  3083. State After Reset:
  3084.     CCR1    00H
  3085.     CCR2    00H
  3086.     CCR3    00H
  3087.     SMAR    0
  3088.     DIR0    see DIR0 description
  3089.     DIR1    see DIR1 description
  3090.  
  3091.  
  3092. format of registers:
  3093.  
  3094. CCR1:
  3095. Bit    Name    Description
  3096. 7..5        Reserved
  3097.  
  3098. 4    NO_LOCK    (Negate LOCK#)
  3099. 3    MMAC    (Main Memory Access)
  3100.         If =1 then all data access which occur within SMI
  3101.         routine (when SMAC=1) accessing main memory instead
  3102.         SMM space
  3103.         =0 No affects on access
  3104. 2    SMAC    (System Managment Memory Access)
  3105.         If =1 Any access within SMM memory space issued with SMAADS#
  3106.         output active, SMI# ignored
  3107.         =0 No affects on access
  3108. 1    SMI    (Enable SMM pins)
  3109.         If =1 then enable SMI# i/o pin and SMADS# output pin
  3110.         =0 Float it
  3111. 0    RPL    (Enable RPL pins)
  3112.         If=1 then enable output pins RPLSET(1-0) and RPLVAL#
  3113.         =0 Float it
  3114.  
  3115.  
  3116.  
  3117. CCR2:
  3118. Bit    Name    Description
  3119. 7    SUSP    (Enable Suspend pins)
  3120.         If =1 SUSP# input and SUSPA# output pins enabled
  3121.         =0 Float
  3122. 6    BWRT    (Enable Burst Write Cycle)
  3123.         If =1 enable use of 16byte burst WB cycle
  3124.         =0 disable
  3125. 5    BARB    (Enable cache coherency on Bus Arbitration)
  3126.         If =1 enable write back of all dirty cache data when
  3127.         HOLD is requered and prior to asserting HLDA.
  3128.         =0 isable
  3129. 4    WT1    (Write-Through Region 1)
  3130.         If =1 Forces all writes to the 640KB-1MB region that
  3131.         hit in cache issued on the external bus
  3132. 3    HALT    (Suspend on HALT)
  3133.         If =1 CPU enters suspend mode following execution
  3134.         HLT instruction.
  3135. 2    LOCK_NW (Lock NW bit)
  3136.         If =1 Prohibits changing the state of NW bit in CR0
  3137. 1    WBAK    (Enable WB Cache Interface pins)
  3138.         If =1 then enable INVAL,WM_RST and HITM# pins
  3139.         =0 float it
  3140. 0        Reserved
  3141.  
  3142.  
  3143. CCR3:
  3144. Note: Cyrix Cx486S/D never have CCR3 register.
  3145. Bit    Name    Description
  3146. 7..2        Reserved
  3147. 1    NMIEN    (NMI Enable)
  3148.         If =1 then NMI enable during SMM
  3149.         If =0 NMI don't recognizing during SMM
  3150. 0      SMI_LOCK (SMM Register Lock)
  3151.         If =1 the following SMM control bits can not
  3152.         be modified:
  3153.              CCR1: bits 1,2,3
  3154.              CCR3: bit 1
  3155.         But this bit may be changed in SMM.
  3156.         This bit (SMI_LOCK) clearing RESET only.
  3157.  
  3158.  
  3159. SMAR:
  3160. (Index CDh)
  3161. Bit    Description
  3162. 7..0    A31..A24 bits of starting adress of SMM region
  3163. (Index CEh)
  3164. Bit    Description
  3165. 7..0    A23..A16 bits of starting adress of SMM region
  3166. (Index CFh)
  3167. Bit    Description
  3168. 7..4    A15..A12 bits of starting adress of SMM region
  3169. 3..0    Size of SMM region:
  3170.     0000    SMM region disabled
  3171.     0001    4K
  3172.     0010    8K
  3173.     0011    16K
  3174.     0100    32K
  3175.     0101    64K
  3176.     0110    128K
  3177.     0111    256K
  3178.     1000    512K
  3179.     1001    1M
  3180.     1010    2M
  3181.     1011    4M
  3182.     1100    8M
  3183.     1101    16M
  3184.     1110    32M
  3185.     1111    4K
  3186.  
  3187.  
  3188. DIR0:
  3189. Note: Cyrix Cx486S/D never have DIR0 register.
  3190. Bit    Description
  3191. 7..0    (Device Identification)
  3192.     for Cx486SLC/e          = 00h
  3193.     for Cx486DLC          = 01h
  3194.     for Cx486SLC2          = 02h
  3195.     for Cx486DLC2          = 03h
  3196.     for Cx486SRx          = 04h
  3197.     for Cx486DRx          = 05h
  3198.     for Cx486SRx2          = 06h
  3199.     for Cx486DRx2          = 07h
  3200.     for Cx486SRu          = 08h  ??
  3201.     for Cx486DRu          = 09h  ??
  3202.     for Cx486SRu2          = 0Ah  ??
  3203.     for Cx486DRu2          = 0Bh  ??
  3204.     for Cx486S (B step)   = 10h
  3205.     for Cx486S2          = 11h
  3206.     for Cx486S/e          = 12h
  3207.     for Cx486S2/e          = 13h
  3208.     for Cx486DX/BL486DX   = 1Ah
  3209.     for Cx486DX2/BL486DX2 = 1Bh
  3210.     for ST486DX2          = 1Bh
  3211.     for Cyrix M1          = 30h
  3212.     for TI Potomac's      = FEh
  3213. Important Note: The original Cx486SLC never have DIRi registers.
  3214.  
  3215. DIR1:
  3216. Note: Cyrix Cx486S/D never have DIR1 register.
  3217. Bit    Name    Description
  3218. 7..4    SID    Stepping Identificator
  3219. 3..0    RID    Revision Identification
  3220.     Note: For Cx486DX2-001 DIR1=08h
  3221.  
  3222. CPU        DIR0    DIR1    NOTE
  3223. Cx486DX-40    1Ah    05h
  3224. Cx486DX-50    1Ah    05h
  3225. Cx486DX2-50    1Bh    08h
  3226. Cx486DX2-50    1Bh    08h    Marked 001 on pin side of chip
  3227. ST486DX2-66    1Bh    0Bh
  3228. ST486DX2-66    1Bh    0Bh
  3229.  
  3230. Cx486DX2-v80    1Bh    31h    3 VOLT
  3231.  
  3232.  
  3233. -----------------------------------------------------
  3234. APPENDIX    A2
  3235. TI486SXLC/SXL  configuration Registers
  3236.  
  3237. for TI486SXL
  3238. --------------
  3239. Register    Full Register Name        Index    size(bits)
  3240. CCR0    Configuration Control Register #0    C0H    8
  3241. CCR1    Configuration Control Register #1    C1H    8
  3242. ARR1    Address Region #1            C4H-C6H    24
  3243. ARR2    Address Region #2            C7H-C9H    24
  3244. ARR3    Address Region #3            CAH-CCH 24
  3245. ARR4    Address Region #4            CDH-CFH    24
  3246.  
  3247. for TI486SXLC
  3248. --------------
  3249. Register    Full Register Name        Index    size(bits)
  3250. CCR0    Configuration Control Register #0    C0H    8
  3251. CCR1    Configuration Control Register #1    C1H    8
  3252. ARR1    Address Region #1            C5H-C6H    16
  3253. ARR2    Address Region #2            C8H-C9H    16
  3254. ARR3    Address Region #3            CBH-CCH 16
  3255. ARR4    Address Region #4            CEH-CFH    16
  3256.  
  3257.  
  3258. For access to this register You need to do:
  3259.  
  3260. A) write INDEX_OF_REGISTER to I/O port #22H
  3261. B) wait 5-6 clocks
  3262. D) read/write DATA from/to register via I/O port #23
  3263.  
  3264. Note: If Index of register not in range C0H..CFH then Cyrix CPU
  3265.       generated external bus cycle. If You try to read I/O port
  3266.       #22H CPU will generated external bus cycle too. Then index
  3267.       is out of range all operations with port #23H will generate
  3268.       external bus cycle.
  3269.  
  3270. State After Reset:
  3271.     CCR0    00H
  3272.     CCR1    xxxx xxx0B
  3273.     ARR1    000Fh        ; 4Gbyte Non-Caching Region
  3274.     ARR2    0
  3275.     ARR3    0
  3276.     ARR4    0
  3277.  
  3278. format of registers:
  3279.  
  3280. CCR0:
  3281. Bit    Name    Description
  3282. 7    SUS
  3283.     If =1 then enable SUSP# and SUSPA# pins, which used for
  3284.     put CPU in PowerSave mode.
  3285.     If =0 disable
  3286.  
  3287. 6    CKD (Clock Double)
  3288.     If =0 Disable Clock-double mode
  3289.     If =1 Enable Clock-Double mode
  3290.  
  3291. 5    BARB
  3292.     If =1 then enable flushing internal cache when begining
  3293.     HOLD state.
  3294.     IF =0 disable.
  3295.  
  3296. 4    FLUSH
  3297.     If =1 enable input pin FLUSH#
  3298.     if =0 disable
  3299.  
  3300. 3    KEN
  3301.     If =1 enable input pin KEN#
  3302.     if =0 disable
  3303.  
  3304. 2    A20M
  3305.     If =1 enable input pin A20M#
  3306.     if =0 disable
  3307.  
  3308. 1    NC1
  3309.     If=1 then 640KB-1MB area never caching
  3310.     If=0 caching (but see NCRi)
  3311.  
  3312. 0    NC0
  3313.     If=1 then first 64K of each 1MB bounds not caching,
  3314.     when in Real or Virtual8086 mode
  3315.     If =0 caching
  3316.  
  3317.  
  3318. CCR1:
  3319. Bit    Name    Description
  3320. 7    SM4
  3321.     Access Region 4 Control
  3322.     If=1 then Region 4 is non-cachable SMM Memory Space
  3323.     If=0 Region 4 is non-cachable. SMI# input ignored.
  3324.  
  3325. 6    WP3
  3326.     Access Region 3 Control
  3327.     If=1 then Region 3 is write-protected and cachable
  3328.     If=0 Region 3 is non-cachable.
  3329.  
  3330. 5    WP2
  3331.     Access Region 2 Control
  3332.     If=1 then Region 2 is write-protected and cachable
  3333.     If=0 Region 2 is non-cachable.
  3334.  
  3335. 4    WP1
  3336.     Access Region 1 Control
  3337.     If=1 then Region 1 is write-protected and cachable
  3338.     If=0 Region 1 is non-cachable.
  3339.  
  3340. 3    NMAC
  3341.     Main Memory Access
  3342.     If=1 All data accesses which occur within SMI service routine
  3343.     (or then SMAC=1) will access main memory instead of SMM Memory space
  3344.     If=0 No changes in access
  3345.  
  3346. 2    SMAC
  3347.     System Managment memory access
  3348.     If=1 Any access to addresses within SMM memory space cause external bus
  3349.     cycles to be issued with SMADS# output active. SMI# input is ignored.
  3350.  
  3351. 1    SMI
  3352.     Enable SMM Pins
  3353.     If=1 SMI# input/output pin and SMADS# output pin are enabled
  3354.     If=0 Disabled
  3355.  
  3356. 0    Reserved
  3357.  
  3358.  
  3359.  
  3360.  
  3361. ARRi:
  3362. Byte    Bits    Description
  3363. 0    7-0    Address bits A31-A24 of non-cacheble region  start
  3364.         (Reserved for TI486SXLC)
  3365. 1    7-0    Address bits A23-A16 of non-cachable region start
  3366. 2    7-4    Address bits A15-A12 of non-cacheble region start
  3367. 2    3-0    Size of non-cacheble block:
  3368.         0000  Disable NCRi
  3369.         0001  4K
  3370.         0010  8K
  3371.         0011  16K
  3372.         0100  32K
  3373.         0101  64K
  3374.         0110  128K
  3375.         0111  256K
  3376.         1000  512K
  3377.         1001  1M
  3378.         1010  2M
  3379.         1011  4M
  3380.         1100  8M
  3381.         1101  16M
  3382.         1110  32M
  3383.         1111  4G
  3384.  
  3385. ARRi bytes:
  3386.  
  3387.  
  3388.     Byte
  3389. ARRi    0    1    2
  3390. ARR1    C4H    C5H    C6H
  3391. ARR2    C7H    C8H    C9H
  3392. ARR3    CAH    CBH    CCH
  3393. ARR4    CDH    CDH    CEH
  3394.  
  3395.  
  3396.  
  3397.  
  3398.  
  3399. ----------------------------------------------
  3400. APPENDIX    B
  3401. Codes which returned after Reset in EDX
  3402.  
  3403.                   DH     DL
  3404. Type of CPU   Steppin       Model ID   Revision
  3405.  
  3406. i386DX        A         (00h)    ???
  3407.         B0-B10          03h    03h
  3408.         D0            05h
  3409.         D1-D2            08h
  3410.         Ex,Fx            08h
  3411.  
  3412. Am386DX/DXL    A          03h    05h
  3413.         B            08h
  3414.  
  3415. i386SX        A0          23h    04h
  3416.         B            05h
  3417.         C,D,E            08h
  3418.  
  3419. Am386SX/SXL    A1          23h    05h
  3420.         B            08h
  3421.  
  3422. i386CX        A          23h    09h
  3423.  
  3424. i386EX        A          23h    09h
  3425.  
  3426. i386SX static    ???          23h    09h
  3427.  
  3428. i376        A0          33h    05h
  3429.         B            08h
  3430.  
  3431. i386SL        A0-A3          43h    0xh (05H)
  3432.         B0-B1            1xh
  3433.  
  3434. RapidCAD (tm)    A          03h    40h
  3435.         B            41h
  3436.  
  3437. IBM 386SLC    A          A3h    xxh
  3438.  
  3439. Cx486SLC    A          04h    10h
  3440.  
  3441. TI486SLC/DLC/e    A          04h    10h
  3442.         B            11h
  3443.  
  3444. TI486SXL/SXLC    A          04h    10h
  3445.         B            11h
  3446.  
  3447. i486DX        A0/A1          04h    00h
  3448.         B2-B6            01h
  3449.         C0            02h
  3450.         C1            03h
  3451.         D0            04h
  3452.         cA2,cA3            10h
  3453.         cB0,cB1            11h
  3454.         cC0            13h
  3455.         aA0,aA1            14h    ; SL Enhanced
  3456.         aB0            15h    ; SL Enhanced
  3457.  
  3458. Am486DX        any          04h    12h
  3459.  
  3460. UMC U5SD    any          04h    1xh
  3461.  
  3462. i486SX        A0          04h    20h
  3463.         B0            22h
  3464.         ??            23h    ; SL Enhanced 1994 ???
  3465.         gAx            24h
  3466.         cA0            27h
  3467.         cB0            28h
  3468.         aA0,aA1            2Ah    ; SL Enhanced
  3469.         aB0,aC0            2Bh    ; SL Enhanced
  3470.  
  3471. i487SX        A0          04h    20h
  3472.         B0            21h
  3473.  
  3474. UMC U5S        any          04h    23h
  3475.  
  3476. UMC U5SX 486-A    any          04h    23h
  3477.  
  3478. i486DX2    &    A0-A2          04h    32h
  3479. OverDrive (tm)    B1            33h
  3480.         aA0,aA1            34h    ; SL Enhanced
  3481.         aB0,aC0            35h    ; SL Enhanced
  3482.  
  3483. Am486DX2    any          04h    32h    ; Include 80MHz
  3484.  
  3485. Am486DXL2    any          04h    32h
  3486.  
  3487. Am486DX4    any          04h    32h
  3488.  
  3489.  
  3490. i486SL        A          04h    40h
  3491.  
  3492. IntelSX2 (tm)    any          04h    5xh
  3493.  
  3494. i486SX2        aC0          04h    5Bh    ; SL Enhanced
  3495.  
  3496. IntelSX2 (tm)    A          04h    5xh
  3497. OverDrive (tm)
  3498.  
  3499. WB Enh IntelDX2    A          04h    70h    ; in WB mode
  3500. (P24D)                    36h    ; in WT mode
  3501.  
  3502. IBM BL486DX2    A          04h    80h   ; PRELIMINARY
  3503.  
  3504. IntelDX4 (tm)    A          04h    80h
  3505.  
  3506. IntelDX4 (tm)    A          14h    80h   ; DX4ODPR
  3507. OverDrive (tm)
  3508.  
  3509. IBM  486SLC    A          A4h    0xh
  3510.  
  3511. IBM  486SLC2    Ax          A4h    1xh
  3512.         Bx            2xh
  3513.  
  3514. IBM  486BLX3    A          84h    xxh
  3515.  
  3516. Cyrix M5    all          00h    05h
  3517. (Cx486S/D)
  3518.  
  3519. Cyrix M6    all          00h    06h
  3520. (Cx486DX)
  3521.  
  3522. Cyrix M7    all          00h    07h
  3523. (Cx486DX2)
  3524.  
  3525. Pentium (P5)    Ax          05h    0xh
  3526.         B1          05h    13h    ; Have FPU bug!
  3527.         C1          05h    15h    ; Have FPU bug!
  3528.         D1          05h    17h    ; Never have FPU bug!!
  3529.  
  3530. Pentium (P54LM) Ax          05h    25h    ; 2.9V for Notebooks.
  3531.  
  3532. Pentium (P54C)    any          05h    2xh
  3533.         B1          05h    21h    ; Have FPU bug!
  3534.         B3          05h    22h    ; Have FPU bug!
  3535.         B5          05h    24h    ; Have FPU bug!
  3536.         C1          05h    25h    ; No   FPU bug!!
  3537.         C2            25h    ; 120MHz
  3538.  
  3539. Pentium (P54CQS) any          05h    25h    ; 120MHz
  3540.  
  3541. Pentium Overdrive Bx          15h    31h    ; PODP5V
  3542. (Vcc=5V)(P24T)
  3543.  
  3544. Pentium Overdrive          15h    2xh
  3545. (Vcc=3.3V) (P24CT)
  3546.  
  3547. Intel Pentium OverDrive          25h    2xh
  3548. (P54M)
  3549.  
  3550. P6                  06h    xxh
  3551.  
  3552. P6T                  16h    xxh
  3553.  
  3554. Note: For detection Cyrix's chips refer to APPENDIX A1.
  3555. --------------------------------------------
  3556. APPENDIX C0
  3557. iCOMP index for Intel's Microprocessors
  3558.  
  3559.  
  3560. i386SX-20        32
  3561. i386SX-25        39
  3562. i386SL-25        41
  3563. i386DX-25        49
  3564. i386DX-33        68
  3565. i486SX-20        78
  3566. i486SX-25        100  ; Base model for test iCOMP=100 by define
  3567. i486DX-25        122
  3568. i486SX-33        136
  3569. i486DX-33        166
  3570. IntelSX2-25/50        180
  3571. i486DX2-25/50        231
  3572. i486DX-50        249
  3573. i486DX2-33/66        297
  3574. IntelDX4-25/75        319  ; P24C
  3575. IntelDX4-33/100        435  ; P24C
  3576. Pentium OverDrive-25/63    443  ; P24T
  3577. Pentium-(510\60)    510  ; P5
  3578. Pentium-(567\66)    567  ; P5
  3579. Pentium OverDrive-33/83 581  ; P24T
  3580. Pentium-(610\75)    610  ; P54C
  3581. Pentium-(735\90)    735  ; P54C
  3582. Pentium-(815\100)    815  ; P54C
  3583.  
  3584.  
  3585.  
  3586.  
  3587. ----------------------------------------------
  3588. APPENDIX C1
  3589. Cyrix Microprocessors Relative Perfomance
  3590.  
  3591. Cyrix Inc. Used for declaration of perfomance of
  3592. theys microprocessors tests based on PC Bench 8.0
  3593. and normalization.
  3594.  
  3595. CPU        Perfomance Scores
  3596. Cx486SLC-25    36
  3597. Cx486SLC-33    39
  3598. Cx486SLC2-50    40
  3599. Cx486DLC-33    69
  3600. Cx486DLC-40    83
  3601. Cx486DX-33    100    ; <--- Base Point
  3602. Cx486DX-40    118
  3603. Cx486DX2-50    139
  3604. Cx486DX-50    148
  3605. Cx486DX2-66    179
  3606. Cx486DX2-V80    209
  3607.  
  3608.  
  3609.  
  3610.  
  3611. ------------------------------------------------
  3612. APPENDIX D0
  3613. Pentium P54C+ Build-in APIC
  3614. (Advanced programmable Interrupt Controller)
  3615.  
  3616.  
  3617. Base Address of Build-in APIC in memory location
  3618. is 0FEE00000H.
  3619.  
  3620. Map of APIC REgisters:
  3621.  
  3622. Offset (hex)    Description            Read/Write state
  3623. 0        Reserved
  3624. 10        Reserved
  3625. 20        Local APIC ID            R/W
  3626. 30        Local APIC Version        R
  3627. 40-70        Reserved
  3628. 80        Task Priority Register        R/W
  3629. 90        Arbitration Priority Register    R
  3630. A0        Processor Priority Register    R
  3631. B0        EOI Register            W
  3632. C0        Remote read            R
  3633. D0        Logical Destination        R/W
  3634. E0        Destination Format Register    0..27  R
  3635.                         28..31 R/W
  3636. F0        Spurious Interrupt Vector Reg.    0..3   R
  3637.                         4..9   R/W
  3638. 100-170        ISR  0-255            R
  3639. 180-1F0        TMR  0-255            R
  3640. 200-270        IRR  0-255            R
  3641. 280        Error Status Register        R
  3642. 290-2F0        Reserved
  3643. 300        Interrupt Command Reg. (0-31)    R/W
  3644. 310        Interrupt Command Reg. (32-63)    R/W
  3645. 320        Local Vector Table (Timer)    R/W
  3646. 330-340        Reserved
  3647. 350        Local Vector Table (LINT0)    R/W
  3648. 360        Local Vector Table (LINT1)    R/W
  3649. 370        Local Vector Table (ERROR)    R/W
  3650. 380        Initial Count Reg. for Timer    R/W
  3651. 390        Current Count of Timer        R
  3652. 3A0-3D0        Reserved
  3653. 3E0        Timer Divide Configuration Reg.    R/W
  3654. 3F0        Reserved
  3655.  
  3656.  
  3657. Note: Pentium-120MHz (Step C2)    Never have APIC
  3658.  
  3659. ---------------------------------------------------
  3660. APPENDIX D1   INTEL 386/486SL REGISTERS
  3661.  
  3662. Note: Intel Chipset for SL microprocessors (i386SL,i486SL) contain
  3663.       self CPU and 82360SL chip.
  3664.  
  3665.  
  3666. [i386SL]
  3667. Note: address of register in Normal I/O space
  3668.  
  3669. Name of Register    Address        Default Value    Where placed    Size
  3670. CPUPWRMODE        22h        0        CPU        16
  3671. CFGSTAT            23h        0        82360SL        8
  3672. CFGINDEX        24h        0        82360SL        16
  3673. CFGDATA            25h        xxh        82360SL        16
  3674. EMSCNTLREG        28h        0        CPU        8
  3675. EMSINDEXREG        2Ah        0        CPU        16
  3676. EMSDPREG        2Ch        xxh        CPU        16
  3677. PORT92            92h        0        CPU        8
  3678. PORT102               102h        0        CPU        8
  3679. FAIL SAFE NMI CTRL     461h        0        CPU        8
  3680. The followed ports visible only when they enabled,
  3681. Any writes to this ports caused the action it named.
  3682. FAST CPU RESET           EFh        N/A        82360SL        8
  3683. FAST A20 GATE           EEh        N/A        82360SL        8
  3684. SLOW CPU           F4h        N/A        CPU        8
  3685. FAST CPU           F5h        N/A        CPU        8
  3686. SFS DISABLE           F9h        N/A        CPU        8
  3687. SFS ENABLE           FBh        N/A        CPU        8
  3688.  
  3689.  
  3690. Format of CPUPWRMODE register (i386SL):
  3691. Bits    Name    Description
  3692. 15    DT    If Unlock Status {  // See bit 0 of this register
  3693.             if bit=0 then access to 82360SL
  3694.             if bit=1 then access to CPUPWRMODE register
  3695.                 }
  3696.         If Lock Staus    {   // i.e.SB=1
  3697.             (De-Turbo Select Bit) Selected clock speed
  3698.             If bit=0 then EFI/2
  3699.             If bit=1 then EFI/4
  3700.                 }
  3701. 14    0    Reserved
  3702. 13..11    IMCPC    (Idle MCP Clock)
  3703.         13.12.11    Description
  3704.         000    EFI
  3705.         001    EFI/2
  3706.         010    EFI/4
  3707.         011    EFI/8
  3708.         100    EFI/16
  3709.         101    Reserved
  3710.         110    Reserved
  3711.         111    Stop Clock
  3712. 10,9    SLC    (Slow CPU clock)
  3713.         10.9    Description
  3714.         00    EFI
  3715.         01    EFI/2
  3716.         10    EFI/4
  3717.         11    EFI?8
  3718. 8    CPUCNFG
  3719.         If =1 CPU Lock. (Write Protect to CPUPMODE register)
  3720. 7    FD    (Flash Disk Enable)
  3721.         If bit=1 then phisical addresses D0000H - DFFFFh
  3722.         automatically never caching.
  3723. 6    0    Reserved
  3724. 5,4    FCC    (Fast CPU clock)
  3725.         5.4    Description
  3726.         00    EFI
  3727.         01    EFI/2
  3728.         10    EFI/4
  3729.         11    EFI/8
  3730. 3,2    US    (Unit Select)
  3731.         Select Unit of 82360SL which will be accessable through 23h-25h
  3732.         I/O Ports
  3733.         3.2    Description
  3734.         00    On-Board Memory Controller
  3735.         01    Cache Unit
  3736.         10    Internal Bus Unit
  3737.         11    External Bus Unit
  3738. 1    UE    (Unit Enable)
  3739.         If =1 Enable to Access Units
  3740.         else enable to access System bus.
  3741. 0    SB    (Status Bit)
  3742.         If =0 Enable access to CPUPWRMODE register
  3743.         If =1 Disable
  3744.  
  3745.  
  3746.  
  3747. Format of EMSCNTLREG:
  3748. Bits    Description
  3749. 7    (Global Enable)
  3750.     If =1 EMS enable
  3751. 6    Valid bit
  3752. 5    EMSDP Status Bit (Read Only)
  3753. 4..2    Reserved
  3754. 1..0    Active EMS Set (0-3)
  3755.  
  3756.  
  3757. Format of EMSINDEXREG:
  3758. Bits    Description
  3759. 15..10    Reserved
  3760. 9..8    EMS set (0-3)
  3761. 7..6    Reserved
  3762. 5..0    EMS Page Register Index (0-64)
  3763.  
  3764. Format of EMSDPREG:
  3765. Bits    Description
  3766. 15    This EMS Page Enable (i.e. page indexed by EMSINDEXREG)
  3767. 14    EMS Valid bit
  3768. 13..11    reserved
  3769. 10..0    Address lines A24..A14 for page selected by EMSINDEXREG
  3770.  
  3771. Important Note:
  3772. i386SL have SIGNATURE register have index 30Eh in On-Board Memory Controller
  3773. Configuration Space. This Register contain  Stepping Info of i386SL.
  3774. Stepping    Signature Register    DX register after reset
  3775. A0        4300h            4310h
  3776. A1        4300h            4310h
  3777. A2        4301h            4310h
  3778. A3        4302h            4310h
  3779. B0        4310h            4311h
  3780. B1        4311h            4311h
  3781.  
  3782.  
  3783.  
  3784. [i486SL]
  3785. Note: address of register in Normal I/O space
  3786.  
  3787. Name of Register    Address        Default Value    Where placed    Size
  3788. CPUPWRMODE        22h        100H        CPU        16
  3789. CFGSTAT            23h        0        82360SL        8
  3790. CFGINDEX        24h        0        82360SL        16
  3791. CFGDATA            25h        xxh        82360SL        16
  3792. PORT92            92h        0        CPU        8
  3793. PORT102               102h        0        CPU        8
  3794. FAIL SAFE NMI CTRL     461h        0        CPU        8
  3795. The followed ports visible only when they enabled
  3796. FAST CPU RESET           EFh        N/A        82360SL        8
  3797. FAST A20 GATE           EEh        N/A        82360SL        8
  3798. SLOW CPU           F4h        N/A        CPU        8
  3799. FAST CPU           F5h        N/A        CPU        8
  3800. SFS DISABLE           F9h        N/A        CPU        8
  3801. SFS ENABLE           FBh        N/A        CPU        8
  3802.  
  3803.  
  3804.  
  3805. Format of CPUPWRMODE register (i486SL):
  3806. Bits    Name    Description
  3807. 15    DT    If Unlock Status {  // See bit 0 of this register
  3808.             if bit=0 then access to 82360SL
  3809.             if bit=1 then access to CPUPWRMODE register
  3810.                 }
  3811.         If Lock Staus    {   // i.e.SB=1
  3812.             (De-Turbo Select Bit) Selected clock speed
  3813.             If bit=0 then EFI/2
  3814.             If bit=1 then EFI/4
  3815.                 }
  3816. 14..13    0    Reserved
  3817. 12    FPUERROR
  3818.         This bit controlled access to I/O port 0F0h,
  3819.         if =0 then access to internal F0h port,
  3820.         If =1 then access ISA bus.
  3821. 11..9    0    Reserved
  3822. 8    CPUCNFG
  3823.         If =1 CPU Lock. (Write Protect to CPUPMODE register)
  3824. 7    0    RESERVED
  3825. 6,5    FCC    (Fast CPU clock)
  3826.         5.4    Description
  3827.         00    CPUCLK=definition=EFI/2
  3828.         01    CPUCLK/2
  3829.         10    CPUCLK/4
  3830.         11    CPUCLK/8
  3831. 4    0    Reserved
  3832. 3,2    US    (Unit Select)
  3833.         Select Unit of 82360SL which will be accessable through 23h-25h
  3834.         I/O Ports
  3835.         3.2    Description
  3836.         00    On-Board Memory Controller
  3837.         01    Reserved
  3838.         10    Internal Bus Unit
  3839.         11    External Bus Unit
  3840. 1    UE    (Unit Enable)
  3841.         If =1 Enable to Access Units
  3842.         else enable to access System bus.
  3843. 0    SB    (Status Bit)
  3844.         If =0 Enable access to CPUPWRMODE register
  3845.         If =1 Disable
  3846.  
  3847.  
  3848.  
  3849. Important Note:
  3850. i486SL have SIGNATURE register have index 70Ah in On-Board Memory Controller
  3851. Configuration Space. This Register contain  Stepping Info of i486SL.
  3852. Format Of this register provided below:
  3853. Bits    Description
  3854. 15..12    Member of Family (4h - SL)
  3855. 11..8    Family    (4h - 486 family)
  3856. 7..0    Revision Name (Not Same as in DX after reset)
  3857.  
  3858.  
  3859.  
  3860.  
  3861. ---------------------------------------------
  3862. APPENDIX E
  3863. Pentium (tm) Processor Pairing Instruction
  3864.  
  3865. Pentium (tm) is superscalar microprocessor
  3866. i.e. it may execute >1 instruction per CLK
  3867. cycle. It may execute maximum 2 instruction
  3868. per cycle.It have two integer pipes to execute
  3869. instruction. This pipes not same, and some
  3870. instruction may pairing (i.e. execute together)
  3871. (only if not link with this 2 instruction)
  3872. only in U pipe, some other only in V pipe, other
  3873. in any pipe,other absolutely not pairing and they
  3874. executed on U pipe only.
  3875.  
  3876. ------ Integer Part
  3877.  
  3878. Note:
  3879.     PU - is pairable if issued to U pipe
  3880.     PV - is pairable if issued to V pipe
  3881.     UV - pairable in either pipe
  3882.  
  3883.  
  3884.  
  3885. ADC    Reg,Reg        PU
  3886.     Reg,Mem        PU
  3887.     Reg,Imm        PU
  3888.     Mem,Reg        PU
  3889.     Mem,Imm        PU
  3890. ADD    Reg,Reg        UV
  3891.     Reg,Mem        UV
  3892.     Reg,Imm        UV
  3893.     Mem,Reg        UV
  3894.     Mem,Imm        UV
  3895. AND    Reg,Reg        UV
  3896.     Reg,Mem        UV
  3897.     Reg,Imm        UV
  3898.     Mem,Reg        UV
  3899.     Mem,Imm        UV
  3900. CALL    direct        PV
  3901. CMP    Reg,Reg        UV
  3902.     Reg,Mem        UV
  3903.     Reg,Imm        UV
  3904.     Mem,Reg        UV
  3905.     Mem,Imm        UV
  3906. DEC    Reg        UV
  3907.     Mem        UV
  3908. INC    Reg        UV
  3909.     Mem        UV
  3910. Jcc    any        PV
  3911. JMP    Short        PV
  3912.     Direct        PV
  3913. LEA    Reg,Mem        UV
  3914. MOV    Reg,Reg/Mem/Imm    UV
  3915.     Mem,Reg        UV
  3916. NOP            UV
  3917. OR    Reg,Reg        UV
  3918.     Reg,Mem        UV
  3919.     Reg,Imm        UV
  3920.     Mem,Reg        UV
  3921.     Mem,Imm        UV
  3922. POP    Reg        UV
  3923. PUSH    Reg        UV
  3924.     Imm        UV
  3925. Rotates/Shifts:
  3926.     Reg,1        PU
  3927.     Mem,1        PU
  3928.     Reg,Imm        PU
  3929.     Mem,Imm        PU
  3930. SUB    Reg,Reg        UV
  3931.     Reg,Mem        UV
  3932.     Reg,Imm        UV
  3933.     Mem,Reg        UV
  3934.     Mem,Imm        UV
  3935. TEST    Reg,Reg        UV
  3936.     Mem,Reg        UV
  3937.     Acc,Imm        UV
  3938. XOR    Reg,Reg        UV
  3939.     Reg,Mem        UV
  3940.     Reg,Imm        UV
  3941.     Mem,Reg        UV
  3942.     Mem,Imm        UV
  3943.  
  3944.  
  3945.  _____    Floating Part
  3946.  
  3947. Note:    FX  -  Pairing with FXCH
  3948.     (All other never pairing)
  3949.  
  3950. FABS            FX
  3951. FADD            FX
  3952. FADDP            FX
  3953. FCHS            FX
  3954. FCOM            FX
  3955. FCOMP            FX
  3956. FDIV/R/P/RP        FX
  3957. FLD   m32,m64,ST(i)    FX    Note: FLD m80 not pairing
  3958. FMUL/P            FX
  3959. FSUB/P/R/RP        FX
  3960. FTST            FX
  3961. FUCOM/P/PP        FX
  3962.  
  3963.  
  3964.  
  3965. For more information refer to:
  3966. 1) Optimization for Intel's 32-Bit Processors
  3967.   (Application Note AP-500)
  3968.   Gary CArleton)
  3969.   // Intel Corp. 1993
  3970.   // Order Number 241799
  3971. 2) Supplement to the Pentium (tm) Processor User's
  3972.    Manual
  3973.   // Intel Corp. 1993.
  3974.  
  3975.  
  3976. ------------------------------------------------------------
  3977. APPENDIX  F0    NON FP OPCODES
  3978.  
  3979.  
  3980. Base Format of opcodes:
  3981. <Basecode> <Postbyte> <offset> <immediate_operands>
  3982.  
  3983.  
  3984. Format of Postbyte:
  3985.  
  3986.   MM RRR MMM
  3987.  
  3988. MM  - Memory addresing mode
  3989. RRR - Register operand address
  3990. MMM - Memory operand address
  3991.  
  3992.  
  3993. RRR    Register Names
  3994. Fields    8bit    16bit    32bit
  3995. 000    AL    AX    EAX
  3996. 001    CL    CX    ECX
  3997. 010    DL    DX    EDX
  3998. 011    BL    BX    EBX
  3999. 100    AH    SP    ESP
  4000. 101    CH    BP    EBP
  4001. 110    DH    SI    ESI
  4002. 111    BH    DI    EDI
  4003.  
  4004.  
  4005. 16bit memory (No 32 bit memory address prefix):
  4006. MMM    Default    MM  Field
  4007. Field    Sreg    00        01        10        11=MMM is reg
  4008. 000    DS    [BX+SI]        [BX+SI+O8]    [BX+SI+O16]
  4009. 001    DS    [BX+DI]        [BX+DI+O8]    [BX+SI+O16]
  4010. 010    SS    [BP+SI]        [BP+SI+O8]    [BP+SI+O16]
  4011. 011    SS    [BP+DI]        [BP+DI+O8]    [BP+DI+O16]
  4012. 100    DS    [SI]        [SI+O8]        [SI+O16]
  4013. 101    DS    [DI]        [DI+O8]        [DI+O16]
  4014. 110    SS    [O16]        [BP+O8]        [BP+O16]
  4015. 111    DS    [BX]        [BX+O8]        [BX+O16]
  4016. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  4017.  
  4018. 32bit memory (Has 67h 32 bit memory address prefix):
  4019. MMM    Default    MM  Field
  4020. Field    Sreg    00        01        10        11=MMM is reg
  4021. 000    DS    [EAX]        [EAX+O8]    [EAX+O32]
  4022. 001    DS    [ECX]        [ECX+O8]    [ECX+O32]
  4023. 010    DS    [EDX]        [EDX+O8]    [EDX+O32]
  4024. 011    DS    [EBX]        [EBX+O8]    [EBX+O32]
  4025. 100 see SIB    [SIB]        [SIB+O8]    [SIB+O32]
  4026. 101    SS    [O32]        [EBP+O8]    [EBP+O32]
  4027. 110    DS    [ESI]        [ESI+O8]    [ESI+O32]
  4028. 111    DS    [EDI]        [EDI+O8]    [EDI+O32]
  4029. Note: MMM=110,MM=00 Default Sreg is DS !!!!
  4030.  
  4031.  
  4032. SIB is (Scale/Base/Index):
  4033.   SS  BBB  III
  4034. Note: SIB address calculated as :
  4035.     <SIB address>=<Base>+<Index>*(2^(Scale))
  4036.  
  4037. Field    Default    Base
  4038. BBB    Sreg    Register    Note
  4039. 000    DS    EAX
  4040. 001    DS    ECX
  4041. 010    DS    EDX
  4042. 011    DS    EBX
  4043. 100    SS    ESP
  4044. 101    DS    O32        If MM=00   (Postbyte)
  4045.     SS    EBP        If MM<>00  (Postbyte)
  4046. 110    DS    ESI
  4047. 111    DS    EDI
  4048.  
  4049. Field    Index
  4050. III    register    Note
  4051. 000    EAX
  4052. 001    ECX
  4053. 010    EDX
  4054. 011    EBX
  4055. 100            Never Index SS can be 00
  4056. 101    EBP
  4057. 110    ESI
  4058. 111    EDI
  4059.  
  4060. Field    Scale coefficient
  4061. SS    =2^(SS)
  4062. 00    1
  4063. 01    2
  4064. 10    4
  4065. 11    8
  4066.  
  4067.  
  4068. Note:
  4069.       <No comments> this code are for 8086 and all other processors
  4070.       NECs  : for NEC/Sony V20/V30/V40/V50 and all clones and upgrades
  4071.       186+  : for 186/188 and higher
  4072.       286+  : for 80286 and higher
  4073.       386+  : for 80386 and higher
  4074.       486+  : for i486 and higher
  4075.       Pentium : for Pentiym
  4076.       <specified> : specified
  4077.  
  4078.  
  4079.  
  4080.  
  4081. Main Table [TABLE00]:
  4082.  
  4083. 00    ADD    mem8,reg8
  4084. 01    ADD    mem,reg
  4085. 02    ADD    reg8,mem8
  4086. 03    ADD    reg,mem
  4087. 04    ADD    AL,imm8
  4088. 05    ADD    AX,imm
  4089. 06    PUSH    ES
  4090. 07    POP    ES
  4091. 08    OR    mem8,reg8
  4092. 09    OR    mem,reg
  4093. 0A    OR    reg8,mem8
  4094. 0B    OR    reg,mem
  4095. 0C    OR    AL,imm8
  4096. 0D    OR    AX,imm
  4097. 0E    PUSH    CS
  4098. 0F    POP    CS    ; 8088 non CMOS versions
  4099.     >>>  TABLE 01    ; NECs & 286+
  4100.     Invalid Opcode    ; 186/188
  4101.  
  4102. 10    ADC    mem8,reg8
  4103. 11    ADC    mem,reg
  4104. 12    ADC    reg8,mem8
  4105. 13    ADC    reg,mem
  4106. 14    ADC    AL,imm8
  4107. 15    ADC    AX,imm
  4108. 16    PUSH    SS
  4109. 17    POP    SS
  4110. 18    SBB    mem8,reg8
  4111. 19    SBB    mem,reg
  4112. 1A    SBB    reg8,mem8
  4113. 1B    SBB    reg,mem
  4114. 1C    SBB    AL,imm8
  4115. 1D    SBB    AX,imm
  4116. 1E    PUSH    DS
  4117. 1F    POP    DS
  4118.  
  4119.  
  4120. 20    AND    mem8,reg8
  4121. 21    AND    mem,reg
  4122. 22    AND    reg8,mem8
  4123. 23    AND    reg,mem
  4124. 24    AND    AL,imm8
  4125. 25    AND    AX,imm
  4126. 26    ES:    segment prefix
  4127. 27    DAA
  4128. 28    SUB    mem8,reg8
  4129. 29    SUB    mem,reg
  4130. 2A    SUB    reg8,mem8
  4131. 2B    SUB    reg,mem
  4132. 2C    SUB    AL,imm8
  4133. 2D    SUB    AX,imm
  4134. 2E    CS:    segment prefix
  4135. 2F    DAS
  4136.  
  4137. 30    XOR    mem8,reg8
  4138. 31    XOR    mem,reg
  4139. 32    XOR    reg8,mem8
  4140. 33    XOR    reg,mem
  4141. 34    XOR    AL,imm8
  4142. 35    XOR    AX,imm
  4143. 36    SS:    segment prefix
  4144. 37    AAA
  4145. 38    CMP    mem8,reg8
  4146. 39    CMP    mem,reg
  4147. 3A    CMP    reg8,mem8
  4148. 3B    CMP    reg,mem
  4149. 3C    CMP    AL,imm8
  4150. 3D    CMP    AX,imm
  4151. 3E    DS:    segment prefix
  4152. 3F    AAS
  4153.  
  4154. 40    INC    AX
  4155. 41    INC    CX
  4156. 42    INC    DX
  4157. 43    INC    BX
  4158. 44    INC    SP
  4159. 45    INC    BP
  4160. 46    INC    SI
  4161. 47    INC    DI
  4162. 48    DEC    AX
  4163. 49    DEC    CX
  4164. 4A    DEC    DX
  4165. 4B    DEC    BX
  4166. 4C    DEC    SP
  4167. 4D    DEC    BP
  4168. 4E    DEC    SI
  4169. 4F    DEC    DI
  4170.  
  4171.  
  4172. 50    PUSH    AX
  4173. 51    PUSH    CX
  4174. 52    PUSH    DX
  4175. 53    PUSH    BX
  4176. 54    PUSH    SP
  4177. 55    PUSH    BP
  4178. 56    PUSH    SI
  4179. 57    PUSH    DI
  4180. 58    POP    AX
  4181. 59    POP    CX
  4182. 5A    POP    DX
  4183. 5B    POP    BX
  4184. 5C    POP    SP
  4185. 5D    POP    BP
  4186. 5E    POP    SI
  4187. 5F    POP    DI
  4188.  
  4189. 60    PUSHA            ;NECs & 186+
  4190. 61    POPA            ;NECs & 186+
  4191. 62    BOUND    reg,mem        ;NECs & 186+
  4192. 63    ARPL    reg,mem        ;286+ PM
  4193. 64    FS:    segment prefix    ;386+
  4194. 65    GS:    segment prefix    ;386+
  4195. 66    Memory access size prefix    ;386+
  4196. 67    Operands size prefix        ;386+
  4197. 68    PUSH    imm        ;NECs & 186+
  4198. 69    IMUL    reg,imm,mem    ;NECs & 186+
  4199. 6A    PUSH    imm8        ;NECs & 186+
  4200. 6B    IMUL    reg,imm8,mem    ;NECs & 186+
  4201. 6C    INSB            ;186+
  4202. 6D    INS            ;186+
  4203. 6E    OUTSB            ;186+
  4204. 6F    OUTS            ;186+
  4205.  
  4206. 70    JO    rel8
  4207. 71    JNO    rel8
  4208. 72    JC    rel8
  4209. 73    JNC    rel8
  4210. 74    JZ    rel8
  4211. 75    JNZ    rel8
  4212. 76    JNA    rel8
  4213. 77    JA    rel8
  4214. 78    JS    rel8
  4215. 79    JNS    rel8
  4216. 7A    JP    rel8
  4217. 7B    JNP    rel8
  4218. 7C    JL    rel8
  4219. 7D    JNL    rel8
  4220. 7E    JNG    rel8
  4221. 7F    JG    rel8
  4222.  
  4223.  
  4224. 80    code extention [1]
  4225. 81    code extention [2]
  4226. 82    code extention [3]
  4227. 83    code extention [4]
  4228. 84    TEST    mem8,reg8
  4229. 85    TEST    mem,reg
  4230. 86    XCHG    mem8,reg8
  4231. 87    XCHG    mem,reg
  4232. 88    MOV    mem8,reg8
  4233. 89    MOV    mem,reg
  4234. 8A    MOV    reg8,mem8
  4235. 8B    MOV    reg,mem
  4236. 8C    code extention [5]
  4237. 8D    LEA    reg,mem
  4238. 8E    code extention [6]
  4239. 8F    code extention [7]
  4240.  
  4241. 90    NOP
  4242. 91    XCHG    AX,CX
  4243. 92    XCHG    AX,DX
  4244. 93    XCHG    AX,BX
  4245. 94    XCHG    AX,SP
  4246. 95    XCHG    AX,BP
  4247. 96    XCHG    AX,SI
  4248. 97    XCHG    AX,DI
  4249. 98    CBW
  4250. 66 98    CWDE        ;386+
  4251. 99    CWD
  4252. 66 99    CDQ        ;386+
  4253. 9A    CALL    FAR    seg:offs
  4254. 9B    WAIT
  4255. 9C    PUSHF
  4256. 66 9C    PUSHFD        ; 386+
  4257. 9D    POPF
  4258. 66 9D    POPFD        ; 386+
  4259. 9E    SAHF
  4260. 9F    LAHF
  4261.  
  4262. A0    MOV    AL,[imm]
  4263. A1    MOV    AX,[imm]
  4264. A2    MOV    [imm],AL
  4265. A3    MOV    [imm],ax
  4266. A4    MOVSB
  4267. A5    MOVS
  4268. A6    CMPSB
  4269. A7    CMPS
  4270. A8    TEST    AL,imm8
  4271. A9    TEST    AX,imm
  4272. AA    STOSB
  4273. AB    STOS
  4274. AC    LODSB
  4275. AD    LODS
  4276. AE    SCASB
  4277. AF    SCAS
  4278.  
  4279.  
  4280. B0    MOV    AL,imm8
  4281. B1    MOV    CL,imm8
  4282. B2    MOV    DL,imm8
  4283. B3    MOV    BL,imm8
  4284. B4    MOV    AH,imm8
  4285. B5    MOV    CH,imm8
  4286. B6    MOV    DH,imm8
  4287. B7    MOV    BH,imm8
  4288. B8    MOV    AX,imm
  4289. B9    MOV    CX,imm
  4290. BA    MOV    DX,imm
  4291. BB    MOV    BX,imm
  4292. BC    MOV    SP,imm
  4293. BD    MOV    BP,imm
  4294. BE    MOV    SI,imm
  4295. BF    MOV    DI,imm
  4296.  
  4297. C0    code extention [8]
  4298. C1    code extention [9]
  4299. C2    RET    NEAR    imm
  4300. C3    RET    NEAR
  4301. C4    LES    reg,mem
  4302. C5    LDS    reg,mem
  4303. C6    code extention [10]
  4304. C7    code extention [11]
  4305. C8    ENTER    imm,imm8    ;NECs & 186+
  4306. C9    LEAVE            ;NECs & 186+
  4307. CA    RET    FAR    imm
  4308. CB    RET    FAR
  4309. CC    INT    3
  4310. CD    INT    imm8
  4311. CE    INTO
  4312. CF    IRET
  4313.  
  4314. D0    code extention    [12]
  4315. D1    code extention    [13]
  4316. D2    code extention    [14]
  4317. D3    code extention    [15]
  4318. D4    AAM    imm8         ; Note: NECs w/o imm8 but D4 0A only
  4319. D5    AAD    imm8         ; Note: NECs w/o imm8 but D4 0A only
  4320. D6    SETALC             ;286+
  4321. D7    XLAT
  4322. D8-DF    ESC    imm6,mem     ; Note: Refer to future part
  4323.                  ; Cooprocessor commands.
  4324.  
  4325. E0    LOOPNZ    rel8
  4326. E1    LOOPZ    rel8
  4327. E2    LOOP    rel8
  4328. E3    JCXZ    rel8
  4329. 66 E3    JECXZ    rel8         ; 386+
  4330. E4    IN    AL,imm8
  4331. E5    IN    AX,imm8
  4332. E6    OUT    imm8,AL
  4333. E7    OUT    imm8,AX
  4334. E8    CALL    NEAR    rel16
  4335. E9    JMP    NEAR    rel16
  4336. EA    JMP    FAR    seg:offs
  4337. EB    JMP    SHORT    rel8
  4338. EC    IN    AL,DX
  4339. ED    IN    AX,DX
  4340. EE    OUT    DX,AL
  4341. EF    OUT    DX,AX
  4342.  
  4343. F0    LOCK    prefix
  4344. F1    SMI             ; AMD Am386/486DXLV
  4345. F2    REPNZ
  4346. F3    REP/REPZ
  4347. F4    HLT
  4348. F5    CMC
  4349. F6    code extention [16]
  4350. F7    code extention [17]
  4351. F8    CLC
  4352. F9    STC
  4353. FA    CLI
  4354. FB    STI
  4355. FC    CLD
  4356. FD    STD
  4357. FE    code extention [18]
  4358. FF    code extention [19]
  4359.  
  4360.  
  4361.  
  4362.  
  4363.  
  4364.  
  4365.  
  4366. [TABLE 01]:
  4367. Note: First Byte of Operation is 0Fh
  4368.  
  4369. 00    Extended Opcode 20                ; 286+
  4370. 01    Extended Opcode 21                ; 286+
  4371. 02    LAR    reg,mem                    ; 286+
  4372. 03    LSL    reg,mem                    ; 286+
  4373. 04    LOADALL         ; Alternative 286        ; 286 only
  4374. 05    LOADALL         ; 286                ; 286 only
  4375. 06    CLTS                        ; 286+
  4376. 07    LOADALL         ; i386,486            ; 386-486, Never Pentium
  4377.     RES3         ; AMD Am386zXLV
  4378.     RES4         ; AMD Am486DXLV
  4379.     ICERET         ; IBM 386SLC,486SLC,486SLC2
  4380. 08    INVD                        ; 486+
  4381. 09    WBINVD                        ; 486+
  4382. 0A-0F    Reserved, INT 6
  4383. 10    UMOV    mem8,reg8 ; Really different op. space    ; 386-486,Never Pentium
  4384.               ; on AMD Amz86zXLV
  4385.     TEST1    mem8,CL      ; NEC V20+
  4386. 11    UMOV    mem,reg      ; see 0Fh,10h
  4387.     TEST1    mem,CL      ; NEC V20+
  4388. 12    UMOV    reg8,mem8 ; see 0Fh,10h
  4389.     CLEAR1    mem8,CL      ; NEC V20+
  4390. 13    UMOV    reg,mem      ; see 0Fh,10h
  4391.     CLEAR1    mem,CL      ; NEC V20+
  4392. 14    SET1    mem8,CL      ; NEC V20+
  4393. 15    SET1    mem,CL      ; NEC V20+
  4394. 16    NOT1    mem8,CL      ; NEC V20+
  4395. 17    NOT1    mem,CL      ; NEC V20+
  4396. 18    TEST1    mem8,imm8 ; NEC V20+
  4397. 19    TEST1    mem,imm8  ; NEC V20+
  4398. 1A    CLEAR1    mem8,imm8 ; NEC V20+
  4399. 1B    CLEAR1    mem,imm8  ; NEC V20+
  4400. 1C    SET1    mem8,imm8 ; NEC V20+
  4401. 1D    SET1    mem,imm8  ; NEC V20+
  4402. 1E    NOT1    mem8,imm8 ; NEC V20+
  4403. 1F    NOT1    mem,imm8  ; NEC V20+
  4404.  
  4405.  
  4406. 20    MOV    reg32,CRn ; 386+
  4407.     ADD4S          ; NEC V20+
  4408. 21    MOV    reg32,DRn ; 386+
  4409. 22    MOV    CRn,reg32 ; 386+
  4410.     SUB4S          ; NEC V20+
  4411. 23    MOV    DRn,reg32 ; 386+
  4412. 24    MOV    reg32,TRn ; 386-486 only (Pentium never have TRs)
  4413. 25
  4414. 26    MOV    TRn,reg32 ; 386-486 only
  4415.     CMPS4S          ; NEC V20+
  4416. 27    reserved opcode
  4417. 28    ROL4    mem8      ; NEC V20+
  4418. 29    reserved opcode
  4419. 2A    ROL4    mem8      ; NEC V20+
  4420. 2B-2F    reserved opcodes
  4421.  
  4422. 30    WRMSR          ; Pentium, IBM 386SLC,486SLC/SLC2
  4423. 31    RDTSC          ; Pentium
  4424.     INS    reg8,reg8 ; NEC V20+   ; Note: NECINS
  4425. 32    RDMSR          ; Pentium, IBM 386SLC,486SLC/SLC2
  4426. 33    EXT    reg8,reg8 ; NEC V20+
  4427.  
  4428.  
  4429. 78    SVDC    mem,sreg  ; Cyrix M5+
  4430. 79    RSDC    sreg,mem  ; Cyrix M5+
  4431. 7A    SVLDT    mem      ; Cyrix M5+
  4432. 7B    RSLDT    mem      ; Cyrix M5+
  4433. 7C    SVTS    mem      ; Cyrix M5+
  4434. 7D    RSTS    mem      ; Cyrix M5+
  4435. 7E    SMINT          ; Cyrix M6+
  4436.  
  4437.  
  4438. 80    JO    rel16    ; 386+
  4439. 81    JNO    rel16    ; 386+
  4440. 82    JC    rel16    ; 386+
  4441. 83    JNC    rel16    ; 386+
  4442. 84    JZ    rel16    ; 386+
  4443. 85    JNZ    rel16    ; 386+
  4444. 86    JNA    rel16    ; 386+
  4445. 87    JA    rel16    ; 386+
  4446. 88    JS    rel16    ; 386+
  4447. 89    JNS    rel16    ; 386+
  4448. 8A    JP    rel16    ; 386+
  4449. 8B    JNP    rel16    ; 386+
  4450. 8C    JL    rel16    ; 386+
  4451. 8D    JNL    rel16    ; 386+
  4452. 8E    JNG    rel16    ; 386+
  4453. 8F    JG    rel16    ; 386+
  4454.  
  4455. 90    SETO    mem8    ; 386+
  4456. 91    SETNO    mem8    ; 386+
  4457. 92    SETC    mem8    ; 386+
  4458. 93    SETNC    mem8    ; 386+
  4459. 94    SETZ    mem8    ; 386+
  4460. 95    SETNZ    mem8    ; 386+
  4461. 96    SETNA    mem8    ; 386+
  4462. 97    SETA    mem8    ; 386+
  4463. 98    SETS    mem8    ; 386+
  4464. 99    SETNS    mem8    ; 386+
  4465. 9A    SETP    mem8    ; 386+
  4466. 9B    SETNP    mem8    ; 386+
  4467. 9C    SETL    mem8    ; 386+
  4468. 9D    SETNL    mem8    ; 386+
  4469. 9E    SETNG    mem8    ; 386+
  4470. 9F    SETG    mem8    ; 386+
  4471.  
  4472. A0    PUSH    FS    ; 386+
  4473. A1    POP    FS    ; 386+
  4474. A2    CPUID        ; 486 SL enhanced,Pentium,UMC,i386CX
  4475. A3    BT    mem,reg    ; 386+
  4476. A4    SHLD    mem,reg,imm    ;386+
  4477. A5    SHLD    mem,reg,CL    ;386+
  4478. A6    XBTS    reg,mem,AX,CL    ; Intel (!!!) 80386 steps A0-B0
  4479.     CMPXCHG    mem8,reg8    ; Intel (!!!) 80486 steps A0-B0
  4480. A7    IBTS    mem,AX,CL,reg    ; Intel (!!!) 80386 steps A0-B0
  4481.     CMPXCHG mem,reg        ; Intel (!!!) 80486 steps A0-B0
  4482. A8    PUSH    GS    ; 386+
  4483. A9    POP    GS    ; 386+
  4484. AA    RSM        ; i486 SL Enhanced, i386CX, Pentium etc
  4485. AB    BTS    mem,reg ; 386+
  4486. AC    SHRD    mem,reg,imm    ;386+
  4487. AD    SHRD    mem,reg,CL    ;386+
  4488. AE
  4489. AF    IMUL    reg,mem    ; 386+
  4490.  
  4491. B0    CMPXCHG mem8,reg8    ; 486+ (Intel B1+ step only)
  4492. B0    CMPXCHG mem,reg        ; 486+ (Intel B1+ step only)
  4493. B2    LSS    reg,mem        ; 386+
  4494. B3    BTR    mem,reg        ; 386+
  4495. B4    LFS    reg,mem        ; 386+
  4496. B5    LGS    reg,mem        ; 386+
  4497. B6    MOVZX    reg,mem8    ; 386+
  4498. B7    MOVZX    reg32,mem    ; 386+
  4499. B8
  4500. B9
  4501. BA    code extention [22]
  4502. BB    BTC    mem,reg        ; 386+
  4503. BC    BSF    reg,mem        ; 386+
  4504. BD    BSR    reg,mem        ; 386+
  4505. BE    MOVSX    reg,mem8    ; 386+
  4506. BF    MOVSX    reg32,mem    ; 386+
  4507.  
  4508. C0    XADD    mem8,reg8    ; 486+
  4509. C1    XADD    mem,reg        ; 486+
  4510. C2-C6    reserved opcodes
  4511. C7    code extention [23]
  4512. C8    BSWAP    EAX        ; 486+
  4513. C9    BSWAP    ECX        ; 486+
  4514. CA    BSWAP    EDX        ; 486+
  4515. CB    BSWAP    EBX        ; 486+
  4516. CC    BSWAP    ESP        ; 486+
  4517. CD    BSWAP    EBP        ; 486+
  4518. CE    BSWAP    ESI        ; 486+
  4519. CF    BSWAP    EDI        ; 486+
  4520.  
  4521. D0-FF    reserved opcodes
  4522. FF    BRKEM    imm8        ; NEC V20+
  4523.  
  4524.  
  4525. **************************************************
  4526. CODE EXTENTIONS:
  4527.  
  4528. First byte(s) look at TABLES#00,01
  4529. Next byte have format
  4530.      MMOOOMMM  :  MM is memory mode (see postbyte)
  4531.           OOO select operation in this extention code field
  4532.           MMM is memory field (see Postbyte)
  4533.  
  4534.  
  4535.  
  4536. Code Extention # 1
  4537. (First byte(s) = 80h)
  4538. Field
  4539. OOO    Operation
  4540. 000    ADD    mem8,imm8
  4541. 001    OR    mem8,imm8
  4542. 010    ADC    mem8,imm8
  4543. 011    SBB    mem8,imm8
  4544. 100    AND    mem8,imm8
  4545. 101    SUB    mem8,imm8
  4546. 110    XOR    mem8,imm8
  4547. 111    CMP    mem8,imm8
  4548.  
  4549.  
  4550.  
  4551. Code Extention # 2
  4552. (First byte(s) = 81h)
  4553. Field
  4554. OOO    Operation
  4555. 000    ADD    mem,imm
  4556. 001    OR    mem,imm
  4557. 010    ADC    mem,imm
  4558. 011    SBB    mem,imm
  4559. 100    AND    mem,imm
  4560. 101    SUB    mem,imm
  4561. 110    XOR    mem,imm
  4562. 111    CMP    mem,imm
  4563.  
  4564. Code Extention # 3
  4565. (First byte(s) = 82h)
  4566. Note: i486 Reserved opcode, Never INT6 but do nothing
  4567. Field
  4568. OOO    Operation
  4569. 000    ADD    mem8,simm8
  4570. 001
  4571. 010    ADC    mem8,simm8
  4572. 011    SBB    mem8,simm8
  4573. 100
  4574. 101    SUB    mem8,simm8
  4575. 110
  4576. 111    CMP    mem8,simm8
  4577.  
  4578.  
  4579. Code Extention # 4
  4580. (First byte(s) = 83h)
  4581. Field
  4582. OOO    Operation
  4583. 000    ADD    mem,simm8
  4584. 001
  4585. 010    ADC    mem,simm8
  4586. 011    SBB    mem,simm8
  4587. 100
  4588. 101    SUB    mem,simm8
  4589. 110
  4590. 111    CMP    mem,simm8
  4591.  
  4592.  
  4593. Code Extention # 5
  4594. (First byte(s) = 8Ch)
  4595. Field
  4596. OOO    Operation
  4597. 000    MOV    mem,ES
  4598. 001    MOV    mem,CS
  4599. 010    MOV    mem,SS
  4600. 011    MOV    mem,DS
  4601. 100    MOV    mem,FS    ; 386+
  4602. 101    MOV    mem,GS    ; 386+
  4603. 110
  4604. 111
  4605.  
  4606.  
  4607. Code Extention # 6
  4608. (First byte(s) = 8Eh)
  4609. Field
  4610. OOO    Operation
  4611. 000    MOV    ES,mem
  4612. 001    MOV    CS,mem    ; Non CMOS version of 8086/8088 only
  4613. 010    MOV    SS,mem
  4614. 011    MOV    DS,mem
  4615. 100    MOV    FS,mem    ; 386+
  4616. 101    MOV    GS,mem    ; 386+
  4617. 110
  4618. 111
  4619.  
  4620. Code Extention # 7
  4621. (First byte(s) = 8Fh)
  4622. Note: i486 can eat any OOO.
  4623. Field
  4624. OOO    Operation
  4625. 000    POP    mem
  4626. 001
  4627. 010
  4628. 011
  4629. 100
  4630. 101
  4631. 110
  4632. 111
  4633.  
  4634. Code Extention # 8
  4635. (First byte(s) = C0h)
  4636. Field
  4637. OOO    Operation
  4638. 000    ROL    mem8,imm8 ; 186+
  4639. 001    ROR    mem8,imm8 ; 186+
  4640. 010    RCL    mem8,imm8 ; 186+
  4641. 011    RCR    mem8,imm8 ; 186+
  4642. 100    SHL    mem8,imm8 ; 186+
  4643. 101    SHR    mem8,imm8 ; 186+
  4644. 110    SAL    mem8,imm8 ; 186+
  4645. 111    SAR    mem8,imm8 ; 186+
  4646.  
  4647. Code Extention # 9
  4648. (First byte(s) = C1h)
  4649. Field
  4650. OOO    Operation
  4651. 000    ROL    mem,imm8 ; 186+
  4652. 001    ROR    mem,imm8 ; 186+
  4653. 010    RCL    mem,imm8 ; 186+
  4654. 011    RCR    mem,imm8 ; 186+
  4655. 100    SHL    mem,imm8 ; 186+
  4656. 101    SHR    mem,imm8 ; 186+
  4657. 110    SAL    mem,imm8 ; 186+
  4658. 111    SAR    mem,imm8 ; 186+
  4659.  
  4660. Code Extention # 10
  4661. (First byte(s) = C6h)
  4662. Note: i486 can eat any OOO field.
  4663. Field
  4664. OOO    Operation
  4665. 000    MOV    mem8,imm8
  4666. 001
  4667. 010
  4668. 011
  4669. 100
  4670. 101
  4671. 110
  4672. 111
  4673.  
  4674. Code Extention # 11
  4675. (First byte(s) = C7h)
  4676. Note: i486 can eat any OOO field
  4677. Field
  4678. OOO    Operation
  4679. 000    MOV    mem,imm16
  4680. 001
  4681. 010
  4682. 011
  4683. 100
  4684. 101
  4685. 110
  4686. 111
  4687.  
  4688.  
  4689.  
  4690. Code Extention # 12
  4691. (First byte(s) = D0h)
  4692. Field
  4693. OOO    Operation
  4694. 000    ROL    mem8,1
  4695. 001    ROR    mem8,1
  4696. 010    RCL    mem8,1
  4697. 011    RCR    mem8,1
  4698. 100    SHL    mem8,1
  4699. 101    SHR    mem8,1
  4700. 110    SAL    mem8,1
  4701. 111    SAR    mem8,1
  4702.  
  4703.  
  4704. Code Extention # 13
  4705. (First byte(s) = D1h)
  4706. Field
  4707. OOO    Operation
  4708. 000    ROL    mem,1
  4709. 001    ROR    mem,1
  4710. 010    RCL    mem,1
  4711. 011    RCR    mem,1
  4712. 100    SHL    mem,1
  4713. 101    SHR    mem,1
  4714. 110    SAL    mem,1
  4715. 111    SAR    mem,1
  4716.  
  4717.  
  4718. Code Extention # 14
  4719. (First byte(s) = D2h)
  4720. Field
  4721. OOO    Operation
  4722. 000    ROL    mem8,CL
  4723. 001    ROR    mem8,CL
  4724. 010    RCL    mem8,CL
  4725. 011    RCR    mem8,CL
  4726. 100    SHL    mem8,CL
  4727. 101    SHR    mem8,CL
  4728. 110    SAL    mem8,CL
  4729. 111    SAR    mem8,CL
  4730.  
  4731.  
  4732.  
  4733. Code Extention # 15
  4734. (First byte(s) = D3h)
  4735. Field
  4736. OOO    Operation
  4737. 000    ROL    mem,CL
  4738. 001    ROR    mem,CL
  4739. 010    RCL    mem,CL
  4740. 011    RCR    mem,CL
  4741. 100    SHL    mem,CL
  4742. 101    SHR    mem,CL
  4743. 110    SAL    mem,CL
  4744. 111    SAR    mem,CL
  4745.  
  4746. Code Extention # 16
  4747. (First byte(s) = F6h)
  4748. Field
  4749. OOO    Operation
  4750. 000    TEST    mem8,imm8
  4751. 001
  4752. 010    NOT    mem8
  4753. 011    NEG    mem8
  4754. 100    MUL    mem8
  4755. 101    IMUL    mem8
  4756. 110    DIV    mem8
  4757. 111    IDIV    mem8
  4758.  
  4759. Code Extention # 17
  4760. (First byte(s) = F7h)
  4761. Field
  4762. OOO    Operation
  4763. 000    TEST    mem,imm16
  4764. 001
  4765. 010    NOT    mem
  4766. 011    NEG    mem
  4767. 100    MUL    mem
  4768. 101    IMUL    mem
  4769. 110    DIV    mem
  4770. 111    IDIV    mem
  4771.  
  4772.  
  4773. Code Extention # 18
  4774. (First byte(s) = FEh)
  4775. Field
  4776. OOO    Operation
  4777. 000    INC    mem8
  4778. 001    DEC    mem8
  4779. 010
  4780. 011
  4781. 100
  4782. 101
  4783. 110
  4784. 111
  4785.  
  4786. Code Extention # 19
  4787. (First byte(s) = FFh)
  4788. Field
  4789. OOO    Operation
  4790. 000    INC    mem
  4791. 001    DEC    mem
  4792. 010    CALL    NEAR    mem
  4793. 011    CALL    FAR    mem
  4794. 100    JMP    NEAR    mem
  4795. 101    JMP    FAR    mem
  4796. 110    PUSH    mem
  4797. 111
  4798.  
  4799. Code Extention # 20
  4800. (First byte(s) = 0FH,00H)
  4801. Field
  4802. OOO    Operation
  4803. 000    SLDT    mem    ; 286+
  4804. 001    STR    mem    ; 286+
  4805. 010    LLDT    mem    ; 286+
  4806. 011    LTR    mem    ; 286+
  4807. 100    VERR    mem    ; 286+
  4808. 101    VERW    mem    ; 286+
  4809. 110
  4810. 111
  4811.  
  4812. Code Extention # 21
  4813. (First byte(s) = 0Fh,01h)
  4814. Field
  4815. OOO    Operation
  4816. 000    SGDT    mem    ; 286+
  4817. 001    SIDT    mem    ; 286+
  4818. 010    LGDT    mem    ; 286+
  4819. 011    LIDT    mem    ; 286+
  4820. 100    SMSW    mem    ; 286+
  4821. 101
  4822. 110    LMSW    mem    ; 286+
  4823. 111    INVLPG    mem    ; 486+
  4824.  
  4825.  
  4826. Code Extention # 22
  4827. (First byte(s) = 0Fh,BAh)
  4828. Field
  4829. OOO    Operation
  4830. 000
  4831. 001
  4832. 010
  4833. 011
  4834. 100    BT    mem,imm8 ; 386+
  4835. 101    BTS    mem,imm8 ; 386+
  4836. 110    BTR    mem,imm8 ; 386+
  4837. 111    BTC    mem,imm8 ; 386+
  4838.  
  4839. Code Extention # 23
  4840. (First byte(s) = 0Fh,C7h)
  4841. Field
  4842. OOO    Operation
  4843. 000
  4844. 001    CMPXCHG8B  mem    ; Pentium
  4845. 010
  4846. 011
  4847. 100
  4848. 101
  4849. 110
  4850. 111
  4851.  
  4852.  
  4853.  
  4854.  
  4855.  
  4856. ------------------------------------------------
  4857. APPENDIX  F1  FLOATING POINT OPCODES
  4858.  
  4859.  
  4860.  
  4861. ESC 0  (First byte = D8h)
  4862. ==========================
  4863. ESCAPE 000    MMRRRMMM
  4864. ==========================
  4865.         Operation
  4866. RRR    If MM<>11    If MM=11
  4867. 000    FADD  mem32r    FADD    ST,ST(i)
  4868. 001    FMUL  mem32r    FMUL    ST,ST(i)
  4869. 010    FCOM  mem32r    FCOM    ST(i)
  4870. 011    FCOMP mem32r    FCOMP    ST(i)
  4871. 100    FSUB  mem32r    FSUB    ST,ST(i)
  4872. 101    FSUBR mem32r    FSUBR    ST,ST(i)
  4873. 110    FDIV  mem32r    FDIV    ST,ST(i)
  4874. 111    FDIVR mem32r    FDIVR    ST,ST(i)
  4875.  
  4876.  
  4877.  
  4878.  
  4879. ESC 1  (First byte = D9h)
  4880. ==========================
  4881. ESCAPE 001    MMRRRMMM
  4882. ==========================
  4883.         Operation
  4884. RRR    If MM<>11    If MM=11
  4885. 000    FLD    mem32r    FLD    ST(i)
  4886. 001    empty        FXCH    ST(i)
  4887. 010    FST    mem32r    See Table marked ESC1-Extended codes
  4888. 011    FSTP   mem32r    FSTP    ST(i)
  4889. 100    FLDENV mem    See Table marked ESC1-Extended codes
  4890. 101    FLDCW  mem    See Table marked ESC1-Extended codes
  4891. 110    FSTENV mem    See Table marked ESC1-Extended codes
  4892. 111    FSTCW  mem    See Table marked ESC1-Extended codes
  4893.  
  4894.  
  4895. ESC1-Extended codes:
  4896.    \ RRR
  4897. MMM \    010    100    101    110    111
  4898. 000    FNOP    FCHS    FLD1    F2XM1    FPREM
  4899. 001        FABS    FLDL2T    FYL2X    FYL2XP1
  4900. 010            FLDL2E    FPTAN    FSQRT
  4901. 011            FLDPI    FPATAN    FSINCOS
  4902. 100        FTST    FLDLG2    FXTRACT    FRNDINT
  4903. 101        FXAM    FLDLN2    FPREM1    FSCALE
  4904. 110            FLDZ    FDECSTP    FSIN
  4905. 111                FINCSTP    FCOS
  4906.  
  4907.  
  4908.  
  4909.  
  4910. ESC 2  (First byte = DAh)
  4911. ==========================
  4912. ESCAPE 010    MMRRRMMM
  4913. ==========================
  4914.         Operation
  4915. RRR    If MM<>11
  4916. 000    FIADD  mem32i
  4917. 001    FIMUL  mem32i
  4918. 010    FICOM  mem32i
  4919. 011    FICOMP mem32i
  4920. 100    FISUB  mem32i
  4921. 101    FISUBR mem32i
  4922. 110    FIDIV  mem32i
  4923. 111    FIDIVR mem32i
  4924.  
  4925.  
  4926.  
  4927.  
  4928. ESC 3  (First byte = DBh)
  4929. ==========================
  4930. ESCAPE 011    MMRRRMMM
  4931. ==========================
  4932.         Operation
  4933. RRR    If MM<>11
  4934. 000    FILD   mem32i
  4935. 001
  4936. 010    FIST   mem32i
  4937. 011    FISTP  mem32i
  4938. 100
  4939. 101    FLD    mem80r
  4940. 110
  4941. 111    FSTP   mem80r
  4942.  
  4943. So,If MM=11 we have next command (first byte = DBh)
  4944. Mnemonic    Second byte of code
  4945. FNENI        E0H    (8087 only, others do nothing)
  4946. FNDISI        E1H    (8087 only, others do nothing)
  4947. FNCLEX        E2H
  4948. FNINIT        E3H
  4949. FSETPM        E4H    (287s only)
  4950. FRSTPM        E5H    (287XL/XLT only)
  4951. FSTB0        E8H    (IIT)
  4952. FSTB2        EAH    (IIT)
  4953. FSTB1        EBH    (IIT)
  4954. F4X4        F1H    (IIT)
  4955. FRINT2        FCH    (Cyrix)
  4956.  
  4957.  
  4958.  
  4959.  
  4960. ESC 4  (First byte = DCh)
  4961. ==========================
  4962. ESCAPE 100    MMRRRMMM
  4963. ==========================
  4964.         Operation
  4965. RRR    If MM<>11    If MM=11
  4966. 000    FADD  mem64r    FADD    ST,ST(i)
  4967. 001    FMUL  mem64r    FMUL    ST,ST(i)
  4968. 010    FCOM  mem64r    FCOM    ST(i)
  4969. 011    FCOMP mem64r    FCOMP    ST(i)
  4970. 100    FSUB  mem64r    FSUB    ST,ST(i)
  4971. 101    FSUBR mem64r    FSUBR    ST,ST(i)
  4972. 110    FDIV  mem64r    FDIV    ST,ST(i)
  4973. 111    FDIVR mem64r    FDIVR    ST,ST(i)
  4974.  
  4975.  
  4976.  
  4977.  
  4978.  
  4979. ESC 5  (First byte = DDh)
  4980. ==========================
  4981. ESCAPE 101    MMRRRMMM
  4982. ==========================
  4983.         Operation
  4984. RRR    If MM<>11    If MM=11
  4985. 000    FLD    mem64r    FFREE  ST(i)
  4986. 001            FXCH   ST(i)
  4987. 010    FST    mem64r    FST    ST(i)
  4988. 011    FSTP   mem64r    FSTP   ST(i)
  4989. 100    FNRSTOR mem
  4990. 101
  4991. 110    FNSAVE    mem    FUCOM  ST(i)
  4992. 111    FSTSW    mem    FUCOMP ST(i)
  4993.  
  4994.  
  4995. Note: FRICHOP have opcode (DDh FCh) (Cyrix)
  4996.  
  4997.  
  4998.  
  4999.  
  5000.  
  5001. ESC 6  (First byte = DEh)
  5002. ==========================
  5003. ESCAPE 110    MMRRRMMM
  5004. ==========================
  5005.         Operation
  5006. RRR    If MM<>11    If MM=11
  5007. 000    FIADD  mem16i    FADDP    ST(i),ST
  5008. 001    FIMUL  mem16i    FMULP    ST(i),ST
  5009. 010    FICOM  mem16i    FCOMP    ST(i),ST
  5010. 011    FICOMP mem16i
  5011. 100    FISUB  mem16i    FSUBP    ST(i),ST
  5012. 101    FISUBR mem16i    FSUBRP    ST(i),ST
  5013. 110    FIDIV  mem16i    FDIVP    ST(i),ST
  5014. 111    FIDIVR mem16i    FDIVRP    ST(i),ST
  5015.  
  5016.  
  5017. Note: FCOMPP have opcode (DEh D9h) (Intel and all)
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023. ESC 7  (First byte = DFh)
  5024. ==========================
  5025. ESCAPE 111    MMRRRMMM
  5026. ==========================
  5027.         Operation
  5028. RRR    If MM<>11    If MM=11
  5029. 000    FILD   mem16i    FFREE  ST(i)
  5030. 001            FXCH   ST(i)
  5031. 010    FIST   mem16i    FST    ST(i)
  5032. 011    FISTP  mem16i    FSTP   ST(i)
  5033. 100    FBLD   mem80b
  5034. 101    FILD   mem64i
  5035. 110    FBSTP  mem80b
  5036. 111    FISTP  mem64i
  5037.  
  5038. Note: Next Instruction have opcodes:
  5039. Mnemonic    Opcode
  5040. FNSTSW    AX    DFh E0h
  5041. FNSTDW    AX    DFh E1h
  5042. FSTSG    AX    DFh E2h
  5043. FRINEAR        DFh FCh    (Cyrix)
  5044.  
  5045.  
  5046.  
  5047.  
  5048.  
  5049.  
  5050. ------------------------------------------
  5051. APPENDIX G
  5052.  
  5053. BUGS & CPU IDENTIFICATION INFO
  5054.  
  5055. 1) How to separate i386SX and i386DX
  5056.    (Cx486SLC and Cx486DLC)
  5057.    Note:  With 386DX type CPU possible to used
  5058.       287 class NPX, and bit 4 in CR0
  5059.       ET - Extention Type on DX we may to
  5060.       clear to 0, but for SX and REAL 486
  5061.       this bit always 1.
  5062.    Routine:
  5063.     mov    eax,cr0
  5064.     push    eax
  5065.     and    al,0efh
  5066.     mov    cr0,eax
  5067.     mov    eax,cr0
  5068.     test    al,10h
  5069.     pop    eax
  5070.     mov    cr0,eax
  5071.     jne    SX/SLC
  5072.     jmp    DX/DLC
  5073.  
  5074.  
  5075.  
  5076. 2) How to separate i486SX and i487SX/i486DX/DX2 etc
  5077.     Routine:
  5078. memory_location    DW    ?
  5079.     mov    memory_location,0
  5080.     fninit
  5081.     fstcw    memory_location
  5082.     cmp    memory_location,037Fh
  5083.     jz    i486SX
  5084.     jmp    i486DX/DX2etc/i487SX
  5085.  
  5086.  
  5087. 3) How to separate Cyrix's CPUs and other
  5088.        Be sure that Your CPU no Pentium before
  5089.        UMOV executed on Intel and other in
  5090.        Non SM modes as MOV.
  5091.        But Cyrix executed this instruction as
  5092.        Double NOP, and never generate INT 6.
  5093.        So.
  5094. Mem_Loc    DW  1
  5095.     xor    ax,ax
  5096.     umov    ax,Mem_Loc
  5097.     or    ax,ax
  5098.     jz    Cyrix
  5099.     jmp    No_Cyrix
  5100.  
  5101.  
  5102. 4) Standart Way: Part 1
  5103.    (Intel recomended this way)
  5104.  
  5105.     pushf
  5106.     pop    ax
  5107.     and    ax,0fffh    ; Clear bits 15..12
  5108.     push    ax
  5109.     popf
  5110.     and    ax,0f000h    ; Is bits 15..12=0 ?
  5111.     jz    286_CPU
  5112.     and    ax,8000h    ; Is bit 15=0
  5113.     jz    386_and_Higher
  5114.     jmp    86_88and186_186etc
  5115.  
  5116.  
  5117. 5) How separate 86/88, 186/188 and NECs
  5118.  
  5119.     mov    ax,1
  5120.     mov    cl,33
  5121.     shl    ax,cl
  5122.     jnz    186_188
  5123.     pusha        ; Executed on 8086/8088 as JMP $+2
  5124.     stc
  5125.     jc    NECs
  5126.     jmp    86_88
  5127.  
  5128.  
  5129. 6) Non CMOS 8086/88 execute command MOV CS,xxxx (Opcode 8Eh ...)
  5130.    CMOS 80C86/88 ignore it.
  5131.  
  5132. 7) Then Invalid Opcode NEC/Sony V40/V50 do INT 6
  5133.                NEC/Sony V20/V30 don't.
  5134.  
  5135. 8) Remember POP CS on 8086/8088.
  5136.  
  5137. 9) PUSH SP
  5138.    286 placed in stack new value of SP
  5139.    86/88 old.
  5140.  
  5141. 10) Best way to Reset 286+ in Real Mode:
  5142.     xor      sp,sp
  5143.     push  smth
  5144.  
  5145. 11) Maximal Length of Instructian
  5146.     86: N/R
  5147.     286:  10 byte
  5148.     386+: 15 byte
  5149.  
  5150. ------------------------------------------------
  5151. APPENDIX H
  5152. Internal Names Of Processors
  5153.  
  5154. (Intel)
  5155. P9    i386SX
  5156. P4    i486DX
  5157. P4S    i486SX
  5158. P23S    i487SX
  5159. P23T    OverDrive for PGA(169)
  5160. P4T    OverDrive for PGA(168)
  5161. P24S    i486DX2
  5162. P24T    Pentium OverDrive for  i486DX2 socket 3 (Vcc=5V,core=3V).
  5163. P24CT    Pentium OverDrive for Socket 3 (Vcc=3V)
  5164. P5    Pentium-60,66
  5165. P54C    Pentium-90,100,75 x1.5 with APIC and Multiprocessing features
  5166. P55C    Bugfix P54C with clock 133,150,2.5V
  5167. P24C    IntelDX4
  5168. P24D    i486DX2 with WB cache (IntelDX2 (tm) WriteBack Enhanced)
  5169. P54M    Overdrive ( include to P54C but P54C work too)
  5170. P6    ??????    (no comments)
  5171. P7    ??????    (no comments)
  5172.  
  5173. (Cyrix)
  5174. M5    Cx486S/S2
  5175. M6    Cx486D/D2
  5176. C6    Cx487D
  5177. M7    Cx486DX/Cx486DX2
  5178. M1    Pentium class CPU: 64bit with 32 Regs,WB 16KB cache
  5179. M1 SC    Hybrid from M1 and M7: new FPU,but only ONE scalar unit,
  5180.     so CPU none superscalar but work faster what M7.
  5181.  
  5182.  
  5183.  
  5184.  
  5185. -----------------------------------------
  5186. VME  -    Virtual Mode Extention
  5187.  
  5188. Support by: Intel SL Enhanced 486 CPUs, Pentium.
  5189. Address Generation: like in VM.
  5190. Differences with VM:
  5191. 1) CLI/STI never interrupt in PM, but change status
  5192. of VIF, if enable.
  5193. 2) INT xxh instruction, which market in interrupt table,
  5194. which contained in TSS as virtual never change CPU to PM,
  5195. but processing in  VME.
  5196.  
  5197. Note: See also EFLAG and CR4 registers format.
  5198. Note: Check CPUID for support VME.
  5199.  
  5200. More Info:
  5201. More Info about it is Intel Confidential.
  5202.  
  5203.  
  5204.  
  5205.  
  5206.  
  5207. ----------------------------------------------------
  5208. More Info? OK
  5209.  
  5210. EFLAGS register format
  5211. (C) (P) Potemkins' Hackers Group
  5212. Revision 1.00  23/09/94
  5213. ==============================================================================
  5214.  
  5215. [Pentium P5] [Pentium P54C] [IntelDX4]
  5216.  
  5217. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  5218. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  5219. -----------------------------------------------------
  5220.        I V V A V R     N IO O D I T S Z   A    P   C
  5221. 0000000000 D I I C M F 0 T PL F F F F F F 0 F 0 F 1 F
  5222.          P F
  5223. -----------------------------------------------------
  5224.  
  5225.  
  5226.  
  5227. =============================================================================
  5228.  
  5229.  
  5230. [i486 SL Enhanced SX,DX,DX2] [IntelSX2]
  5231. [UMC]
  5232.  
  5233. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  5234. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  5235. -----------------------------------------------------
  5236.        I     A V R     N IO O D I T S Z   A    P   C
  5237. 0000000000 D 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  5238. -----------------------------------------------------
  5239.  
  5240.  
  5241. =============================================================================
  5242.  
  5243.  
  5244. [i486 SX,DX,DX2] [OverDrive] [M5,M6,M7] [AMD Am486DX/DXL/DX2/DXL2 ] etc
  5245. [IBM BL486DX/DX2] [Cx486SLC/DLC/SLC2/DLC2]
  5246.  
  5247. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  5248. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  5249. -----------------------------------------------------
  5250.          A V R     N IO O D I T S Z   A    P   C
  5251. 0000000000 0 0 0 C M F 0 T PL F F F F F F 0 F 0 F 1 F
  5252. -----------------------------------------------------
  5253.  
  5254.  
  5255. ==============================================================================
  5256.  
  5257. [i386 SX,DX,CX,EX]  [AMD Am386 ] [C&T 38600 ] etc
  5258. [IBM 486SLC2]
  5259.  
  5260. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  5261. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  5262. -----------------------------------------------------
  5263.            V R     N IO O D I T S Z   A    P   C
  5264. 0000000000 0 0 0 0 M F 0 T PL F F F F F F 0 F 0 F 1 F
  5265. -----------------------------------------------------
  5266.  
  5267.  
  5268. ==============================================================================
  5269.  
  5270. [i376]
  5271.  
  5272. 3322222222 2 2 1 1 1 1 1 1 11 1 1
  5273. 1098765432 1 0 9 8 7 6 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  5274. -----------------------------------------------------
  5275.              R     N IO O D I T S Z   A    P   C
  5276. 0000000000 0 0 0 0 0 F 0 T PL F F F F F F 0 F 0 F 1 F
  5277. -----------------------------------------------------
  5278.  
  5279. ===============================================================================
  5280.  
  5281. [i286 and all clones]
  5282.  
  5283. 1 1 11 1 1
  5284. 5 4 32 1 0 9 8 7 6 5 4 3 2 1 0
  5285. ------------------------------
  5286.   N IO O D I T S Z   A     P   C
  5287. 0 T PL F F F F F F 0 F 0 F 1 F
  5288. ------------------------------
  5289.  
  5290.  
  5291. ================================================================================
  5292.  
  5293. [NEC/Sony V20/V30]
  5294.  
  5295. 1 1 1 1 1 1
  5296. 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  5297. -------------------------------
  5298. M    O D I T S Z   A      P   C
  5299. D 1 1 1 F F F F F F 0 F 0 F 1 F
  5300. -------------------------------
  5301.  
  5302.  
  5303.  
  5304. ================================================================================
  5305.  
  5306. [80x186 ,EA,EB,EC,XL]  [8086/88 and all clones]
  5307.  
  5308. 1 1 1 1 1 1
  5309. 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  5310. -------------------------------
  5311.     O D I T S Z   A      P   C
  5312. 1 1 1 1 F F F F F F 0 F 0 F 1 F
  5313. -------------------------------
  5314.  
  5315.  
  5316. ==============================================================================
  5317.  
  5318. ID   - Identification Flag
  5319. VIP  - Virtual Interrupt Pending
  5320. VIF  - Virtual Interrupt Flag
  5321. AC   - Align Check
  5322. VM   - Virtual 8086 Mode
  5323. RF   - Resume Flag
  5324. MD   - Mode Flag
  5325. NT   - Nested Task flag
  5326. IOPL - Input/Output Privelege Level
  5327. OF   - Overflow Flag
  5328. DF   - Direction Flag
  5329. IF   - Interrupt Flag
  5330. TF   - Trap Flag
  5331. SF   - Sign Flag
  5332. ZF   - Zero Flag
  5333. AF   - Auxiliary Carry Flag
  5334. PF   - Parity Flag
  5335. CF   - Carry Flag
  5336.  
  5337.  
  5338.  
  5339.  
  5340. ==============================================================================
  5341. CR0 register format
  5342. (C) (P) Potemkins' Hackers Group
  5343. Revision 1.00     23/02/95
  5344. ==============================================================================
  5345.  
  5346. [Pentium P5] [Pentium P54C]
  5347.  
  5348. 3 3 2 2222222221 1 1 1 111111
  5349. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  5350. ---------------------------------------------
  5351. P C N         A   W          N   T E M P
  5352. G D W 0000000000 M 0 P 0000000000 E 1 S M P E
  5353.  
  5354. ---------------------------------------------
  5355.  
  5356.  
  5357.  
  5358. =============================================================================
  5359.  
  5360. [IntelDX4] [486DX/DX2, IntelDX4 ]
  5361.  
  5362.  
  5363. 3 3 2 2222222221 1 1 1 111111
  5364. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  5365. ---------------------------------------------
  5366. P C N         A   W              T      M P
  5367. G D W 0000000000 M 0 P 0000000000 * 1 S 1 P E
  5368.  
  5369. ---------------------------------------------
  5370.  
  5371. ==============================================================================
  5372.  
  5373.  
  5374.  
  5375. [Cx486SLC]
  5376.  
  5377.  
  5378. 3 3 2 2222222221 1 1 1 111111
  5379. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  5380. ---------------------------------------------
  5381. P C         A   W              T E M P
  5382. G D 0 0000000000 M 0 P 0000000000 0 1 S M P E
  5383.  
  5384. ---------------------------------------------
  5385.  
  5386. ==============================================================================
  5387.  
  5388. [Cx486DLC]
  5389.  
  5390.  
  5391. 3 3 2 2222222221 1 1 1 111111
  5392. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  5393. ---------------------------------------------
  5394. P C N         A   W            E T E M P
  5395. G D W 0000000000 M 0 P 0000000000 0 T S M P E
  5396.  
  5397. ---------------------------------------------
  5398.  
  5399. ==============================================================================
  5400.  
  5401.  
  5402.  
  5403. [Intel i486SX,SX2]
  5404.  
  5405.  
  5406. 3 3 2 2222222221 1 1 1 111111
  5407. 1 0 9 8765432109 8 7 6 5432109876 5 4 3 2 1 0
  5408. ---------------------------------------------
  5409. P C N         A   W              T E M P
  5410. G D W 0000000000 M 0 P 0000000000 * 1 S M P E
  5411.  
  5412. ---------------------------------------------
  5413.  
  5414. ==============================================================================
  5415.  
  5416. [IBM 486SLC2]
  5417.  
  5418.  
  5419. 3 32222222222111 1 111111
  5420. 1 09876543210987 6 54321098765 4 3 2 1 0
  5421. ---------------------------------------------
  5422. P         W         T E M P
  5423. G 00000000000000 P 0000000000  1 S M P E
  5424.  
  5425. ---------------------------------------------
  5426.  
  5427. ==============================================================================
  5428.  
  5429. [Intel i386SX]
  5430.  
  5431.  
  5432. 3 322222222221111111111
  5433. 1 09876543210987654321098765 4 3 2 1 0
  5434. ---------------------------------------------
  5435. P                   T E M P
  5436. G 0000000000000000000000000  1 S M P E
  5437. ---------------------------------------------
  5438.  
  5439. ==============================================================================
  5440.  
  5441.  
  5442. [Intel i386DX]
  5443.  
  5444.  
  5445. 3 322222222221111111111
  5446. 1 09876543210987654321098765 4 3 2 1 0
  5447. ---------------------------------------------
  5448. P                 E T E M P
  5449. G 0000000000000000000000000  T S M P E
  5450. ---------------------------------------------
  5451.  
  5452. ==============================================================================
  5453.  
  5454. [80286]
  5455.  
  5456. Note: None CR0, but MSW
  5457.  
  5458. 111111
  5459. 543210987654 3 2 1 0
  5460. ---------------------
  5461.          T E M P
  5462. 000000000000 S M P E
  5463. ---------------------
  5464.  
  5465. ==============================================================================
  5466.  
  5467.  
  5468. PE - Protection Enable
  5469. MP - Monitor Processor
  5470. EM - Emulation
  5471. TS - Task Switch
  5472. ET - Extention Type
  5473. NE - Numeric Exception
  5474. WP - Write protect
  5475. AM - Align Mode
  5476. NW - No Write
  5477. CD - Cache Disable
  5478. PG - Paging
  5479.  
  5480.  
  5481.  
  5482.  
  5483.  
  5484.  
  5485.  
  5486.  
  5487. ==============================================================================
  5488. CR4 register format
  5489. (C) (P) Potemkins' Hackers Group
  5490. Revision 1.00     23/09/94
  5491. ==============================================================================
  5492.  
  5493. [Pentium P5] [Pentium P54C]
  5494.  
  5495. 3322222222221111111111
  5496. 1098765432109876543210987 6 5 4 3 2 1 0
  5497. ---------------------------------------
  5498.               M   P D T P V
  5499. 0000000000000000000000000 C 0 S E S V M
  5500.               E   E      D I E
  5501. ----------------------------------------
  5502.  
  5503.  
  5504.  
  5505. =============================================================================
  5506.  
  5507. [IntelDX4] [486s SL Enhanced]
  5508.  
  5509. 3322222222221111111111
  5510. 109876543210987654321098765432 1 0
  5511. ----------------------------------
  5512.                    P V
  5513. 000000000000000000000000000000 V M
  5514.                    I E
  5515. ----------------------------------
  5516.  
  5517.  
  5518. ==============================================================================
  5519.  
  5520.  
  5521. MCE - Machine Check Enable
  5522. PSE - Page Size Extention
  5523. DE  - Debbuging Expection
  5524. TSD - Time Stamp Disable
  5525. PVI - Protected mode Virtual Interrupt
  5526. VME - Virtual Mode Exception
  5527.  
  5528.  
  5529. ---------------------------------------------
  5530. APPENDIX LAST
  5531. List of the Literature
  5532.  
  5533.  
  5534. 1) "Pentium (tm) Famaly User's Manual
  5535.     Volume 3: Architecture and Programming Manual"
  5536.    // Intel Corp. 1994
  5537.    ;; Order number: 241430
  5538.  
  5539. 2) "Blue Lightning 486DX2 3 and 5 Volt Microprocessors
  5540.     Databook"
  5541.    // IBM Corp./Cyrix Corp. 1994
  5542.    ;; Order Number: MPIDX2DSU-01
  5543.  
  5544. 3) "486SLC2 (tm) Microprocessor"
  5545.    Data Sheet.
  5546.    // IBM Corp. 1993
  5547.    ;; Order number VT05452
  5548.  
  5549. 4) "Cyrix Cx486SLC (tm) Microprocessor"
  5550.    // Cyrix Corp. 1991
  5551.    ;; Order Number 94073
  5552.  
  5553. 5)  "3-Volt System Logic for Personal Computers"
  5554.     // Advanced Micro Devices Inc. 1993
  5555.     ;; Order number: 17028B
  5556.  
  5557. 6)  "IntelDX4 (tm) Processor Data Book"
  5558.     // Intel Corp. 1994
  5559.     ;; Order number: 241944
  5560.  
  5561. 7)  "Intel Processor Identification with the
  5562.      CPUID instruction"
  5563.     // Intel Corp. 1993,1994
  5564.     ;; Order number: 241618
  5565.  
  5566. 8)  "82489DX Advanced Programmable Interrupt
  5567.      Controller"
  5568.     Application Note: AP-485
  5569.     // Intel Corp. 1993
  5570.     ;; Order number: 290446
  5571.  
  5572. 9)  "Optimization for Intel's 32-bit Processors"
  5573.     Application Note: AP-500
  5574.     // Intel Corp. 1993
  5575.     ;; Order number 241799
  5576.  
  5577. A)  "MultiProcessor Specification Version 1.1"
  5578.     // Intel Corp. 1993
  5579.     ;; Order Number: 242016
  5580.  
  5581. etc.....
  5582. ---------------------------------------------------------
  5583. [Credits]:
  5584. THANX for Martin Malik and RealSoft.
  5585. (malik@elf.stuba.sk)
  5586. Cyrix's CPUs type data.
  5587. Some Vendors strings for CPUID.
  5588. P54M ID code
  5589. Part of Tis Kind of Info (C) RealSoft.
  5590. ----------------------------------------------------------
  5591. If Your (Reader) interested for some info about 80x86 CPUs
  5592. lets send request to
  5593.               avp@iron.misa.ac.ru
  5594. and we place some information in next versions of our doc,
  5595. or answer directly if we can.
  5596. -----------------------------------------------------------
  5597. If Your found some errors or incorrections in this text
  5598. please    send info 'bout it.
  5599. -----------------------------------------------------------
  5600. Thanx for  Alex A.Afonasov,Yury V.Temkin,
  5601.        and all other numbers of
  5602.        Potemkin's Hackers Group.
  5603.        - - - - - - - - - - - - - -
  5604. Special Thanks for  Alex (DVM).
  5605. ------------------------------------------------------------
  5606. Sorry, But EOF
  5607.