VirtualBox

Changeset 40090 in vbox for trunk/src


Ignore:
Timestamp:
Feb 13, 2012 2:21:52 AM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
76228
Message:

Test reserved FPU aliases.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/testcase/tstX86-1A.asm

    r40089 r40090  
    13811381; Used for marking encodings which has a meaning other than FNOP and
    13821382; needs investigating.
    1383 %macro FpuUnknownEncoding 1+
     1383%macro FpuReservedEncoding 2
     1384        fnclex
     1385        call    SetFSW_C0_thru_C3
     1386
     1387        push    xBP
     1388        mov     xBP, xSP
     1389        sub     xSP, 2048
     1390        and     xSP, ~0fh
     1391        fxsave  [xSP + 1024]
    13841392        %1
     1393        call    SaveFPUAndGRegsToStack
     1394
     1395        fxrstor [xSP + 1024]
     1396        %2
     1397        call    CompareFPUAndGRegsOnStack
     1398        ;fxrstor [xSP + 1024]
     1399        leave
     1400
     1401        jz      %%ok
     1402        add     eax, __LINE__
     1403        jmp     .return
     1404%%ok:
    13851405%endmacro
    13861406
     
    15021522        je      .ok
    15031523
    1504         ;int3
     1524        int3
    15051525        lea     xAX, [xSP + xS*3]
    15061526        xchg    xAX, xSI
     
    15491569        FpuNopEncoding fnop
    15501570
     1571
    15511572        ; the 0xd9 block
    15521573        ShouldTrap X86_XCPT_UD, db 0d9h, 008h
     
    15661587        ShouldTrap X86_XCPT_UD, db 0d9h, 0d6h
    15671588        ShouldTrap X86_XCPT_UD, db 0d9h, 0d7h
    1568         ;FpuUnknownEncoding db 0d9h, 0d8h ; fstp st(0),st(0)?
    1569         ;FpuUnknownEncoding db 0d9h, 0d9h ; fstp st(1),st(0)?
    1570         ;FpuUnknownEncoding db 0d9h, 0dah ; fstp st(2),st(0)?
    1571         ;FpuUnknownEncoding db 0d9h, 0dbh ; fstp st(3),st(0)?
    1572         ;FpuUnknownEncoding db 0d9h, 0dch ; fstp st(4),st(0)?
    1573         ;FpuUnknownEncoding db 0d9h, 0ddh ; fstp st(5),st(0)?
    1574         ;FpuUnknownEncoding db 0d9h, 0deh ; fstp st(6),st(0)?
    1575         ;FpuUnknownEncoding db 0d9h, 0dfh ; fstp st(7),st(0)?
     1589        FpuReservedEncoding {db 0d9h, 0d8h}, { fstp st0 }
     1590        FpuReservedEncoding {db 0d9h, 0d9h}, { fstp st1 }
     1591        FpuReservedEncoding {db 0d9h, 0dah}, { fstp st2 }
     1592        FpuReservedEncoding {db 0d9h, 0dbh}, { fstp st3 }
     1593        FpuReservedEncoding {db 0d9h, 0dch}, { fstp st4 }
     1594        FpuReservedEncoding {db 0d9h, 0ddh}, { fstp st5 }
     1595        FpuReservedEncoding {db 0d9h, 0deh}, { fstp st6 }
     1596        ;FpuReservedEncoding {db 0d9h, 0dfh}, { fstp st7 } ; This variant seems to ignore empty ST(0) values!
    15761597        ShouldTrap X86_XCPT_UD, db 0d9h, 0e2h
    15771598        ShouldTrap X86_XCPT_UD, db 0d9h, 0e3h
     
    16361657
    16371658        ; the 0xdc block
    1638         ;FpuNopEncoding db 0dch, 0d0h ; fcom?
    1639         ;FpuNopEncoding db 0dch, 0d1h ; fcom?
    1640         ;FpuNopEncoding db 0dch, 0d2h ; fcom?
    1641         ;FpuNopEncoding db 0dch, 0d3h ; fcom?
    1642         ;FpuNopEncoding db 0dch, 0d4h ; fcom?
    1643         ;FpuNopEncoding db 0dch, 0d5h ; fcom?
    1644         ;FpuNopEncoding db 0dch, 0d6h ; fcom?
    1645         ;FpuNopEncoding db 0dch, 0d7h ; fcom?
    1646         ;FpuNopEncoding db 0dch, 0d8h ; fcomp?
    1647         ;FpuNopEncoding db 0dch, 0d9h ; fcomp?
    1648         ;FpuNopEncoding db 0dch, 0dah ; fcomp?
    1649         ;FpuNopEncoding db 0dch, 0dbh ; fcomp?
    1650         ;FpuNopEncoding db 0dch, 0dch ; fcomp?
    1651         ;FpuNopEncoding db 0dch, 0ddh ; fcomp?
    1652         ;FpuNopEncoding db 0dch, 0deh ; fcomp?
    1653         ;FpuNopEncoding db 0dch, 0dfh ; fcomp?
     1659        FpuReservedEncoding {db 0dch, 0d0h}, { fcom st0 }
     1660        FpuReservedEncoding {db 0dch, 0d1h}, { fcom st1 }
     1661        FpuReservedEncoding {db 0dch, 0d2h}, { fcom st2 }
     1662        FpuReservedEncoding {db 0dch, 0d3h}, { fcom st3 }
     1663        FpuReservedEncoding {db 0dch, 0d4h}, { fcom st4 }
     1664        FpuReservedEncoding {db 0dch, 0d5h}, { fcom st5 }
     1665        FpuReservedEncoding {db 0dch, 0d6h}, { fcom st6 }
     1666        FpuReservedEncoding {db 0dch, 0d7h}, { fcom st7 }
     1667        FpuReservedEncoding {db 0dch, 0d8h}, { fcomp st0 }
     1668        FpuReservedEncoding {db 0dch, 0d9h}, { fcomp st1 }
     1669        FpuReservedEncoding {db 0dch, 0dah}, { fcomp st2 }
     1670        FpuReservedEncoding {db 0dch, 0dbh}, { fcomp st3 }
     1671        FpuReservedEncoding {db 0dch, 0dch}, { fcomp st4 }
     1672        FpuReservedEncoding {db 0dch, 0ddh}, { fcomp st5 }
     1673        FpuReservedEncoding {db 0dch, 0deh}, { fcomp st6 }
     1674        FpuReservedEncoding {db 0dch, 0dfh}, { fcomp st7 }
    16541675
    16551676        ; the 0xdd block
    1656         ;FpuUnknownEncoding db 0ddh, 0c8h ; fxch?
    1657         ;FpuUnknownEncoding db 0ddh, 0c9h ; fxch?
    1658         ;FpuUnknownEncoding db 0ddh, 0cah ; fxch?
    1659         ;FpuUnknownEncoding db 0ddh, 0cbh ; fxch?
    1660         ;FpuUnknownEncoding db 0ddh, 0cch ; fxch?
    1661         ;FpuUnknownEncoding db 0ddh, 0cdh ; fxch?
    1662         ;FpuUnknownEncoding db 0ddh, 0ceh ; fxch?
    1663         ;FpuUnknownEncoding db 0ddh, 0cfh ; fxch?
     1677        FpuReservedEncoding {db 0ddh, 0c8h}, { fxch st0 }
     1678        FpuReservedEncoding {db 0ddh, 0c9h}, { fxch st1 }
     1679        FpuReservedEncoding {db 0ddh, 0cah}, { fxch st2 }
     1680        FpuReservedEncoding {db 0ddh, 0cbh}, { fxch st3 }
     1681        FpuReservedEncoding {db 0ddh, 0cch}, { fxch st4 }
     1682        FpuReservedEncoding {db 0ddh, 0cdh}, { fxch st5 }
     1683        FpuReservedEncoding {db 0ddh, 0ceh}, { fxch st6 }
     1684        FpuReservedEncoding {db 0ddh, 0cfh}, { fxch st7 }
    16641685        ShouldTrap X86_XCPT_UD, db 0ddh, 0f0h
    16651686        ShouldTrap X86_XCPT_UD, db 0ddh, 0f1h
     
    16821703
    16831704        ; the 0xde block
    1684         ;FpuUnknownEncoding db 0deh, 0d0h ; fcomp?
    1685         ;FpuUnknownEncoding db 0deh, 0d1h ; fcomp?
    1686         ;FpuUnknownEncoding db 0deh, 0d2h ; fcomp?
    1687         ;FpuUnknownEncoding db 0deh, 0d3h ; fcomp?
    1688         ;FpuUnknownEncoding db 0deh, 0d4h ; fcomp?
    1689         ;FpuUnknownEncoding db 0deh, 0d5h ; fcomp?
    1690         ;FpuUnknownEncoding db 0deh, 0d6h ; fcomp?
    1691         ;FpuUnknownEncoding db 0deh, 0d7h ; fcomp?
     1705        FpuReservedEncoding {db 0deh, 0d0h}, { fcomp st0 }
     1706        FpuReservedEncoding {db 0deh, 0d1h}, { fcomp st1 }
     1707        FpuReservedEncoding {db 0deh, 0d2h}, { fcomp st2 }
     1708        FpuReservedEncoding {db 0deh, 0d3h}, { fcomp st3 }
     1709        FpuReservedEncoding {db 0deh, 0d4h}, { fcomp st4 }
     1710        FpuReservedEncoding {db 0deh, 0d5h}, { fcomp st5 }
     1711        FpuReservedEncoding {db 0deh, 0d6h}, { fcomp st6 }
     1712        FpuReservedEncoding {db 0deh, 0d7h}, { fcomp st7 }
    16921713        ShouldTrap X86_XCPT_UD, db 0deh, 0d8h
    16931714        ShouldTrap X86_XCPT_UD, db 0deh, 0dah
     
    16991720
    17001721        ; the 0xdf block
    1701         ;FpuUnknownEncoding db 0dfh, 0c8h ; fxch?
    1702         ;FpuUnknownEncoding db 0dfh, 0c9h ; fxch?
    1703         ;FpuUnknownEncoding db 0dfh, 0cah ; fxch?
    1704         ;FpuUnknownEncoding db 0dfh, 0cbh ; fxch?
    1705         ;FpuUnknownEncoding db 0dfh, 0cch ; fxch?
    1706         ;FpuUnknownEncoding db 0dfh, 0cdh ; fxch?
    1707         ;FpuUnknownEncoding db 0dfh, 0ceh ; fxch?
    1708         ;FpuUnknownEncoding db 0dfh, 0cfh ; fxch?
    1709         ;FpuUnknownEncoding db 0dfh, 0d0h ; fstp?
    1710         ;FpuUnknownEncoding db 0dfh, 0d1h ; fstp?
    1711         ;FpuUnknownEncoding db 0dfh, 0d2h ; fstp?
    1712         ;FpuUnknownEncoding db 0dfh, 0d3h ; fstp?
    1713         ;FpuUnknownEncoding db 0dfh, 0d4h ; fstp?
    1714         ;FpuUnknownEncoding db 0dfh, 0d5h ; fstp?
    1715         ;FpuUnknownEncoding db 0dfh, 0d6h ; fstp?
    1716         ;FpuUnknownEncoding db 0dfh, 0d7h ; fstp?
    1717         ;FpuUnknownEncoding db 0dfh, 0d8h ; fstp?
    1718         ;FpuUnknownEncoding db 0dfh, 0d9h ; fstp?
    1719         ;FpuUnknownEncoding db 0dfh, 0dah ; fstp?
    1720         ;FpuUnknownEncoding db 0dfh, 0dbh ; fstp?
    1721         ;FpuUnknownEncoding db 0dfh, 0dch ; fstp?
    1722         ;FpuUnknownEncoding db 0dfh, 0ddh ; fstp?
    1723         ;FpuUnknownEncoding db 0dfh, 0deh ; fstp?
    1724         ;FpuUnknownEncoding db 0dfh, 0dfh ; fstp?
     1722        FpuReservedEncoding {db 0dfh, 0c8h}, { fxch st0 }
     1723        FpuReservedEncoding {db 0dfh, 0c9h}, { fxch st1 }
     1724        FpuReservedEncoding {db 0dfh, 0cah}, { fxch st2 }
     1725        FpuReservedEncoding {db 0dfh, 0cbh}, { fxch st3 }
     1726        FpuReservedEncoding {db 0dfh, 0cch}, { fxch st4 }
     1727        FpuReservedEncoding {db 0dfh, 0cdh}, { fxch st5 }
     1728        FpuReservedEncoding {db 0dfh, 0ceh}, { fxch st6 }
     1729        FpuReservedEncoding {db 0dfh, 0cfh}, { fxch st7 }
     1730        FpuReservedEncoding {db 0dfh, 0d0h}, { fstp st0 }
     1731        FpuReservedEncoding {db 0dfh, 0d1h}, { fstp st1 }
     1732        FpuReservedEncoding {db 0dfh, 0d2h}, { fstp st2 }
     1733        FpuReservedEncoding {db 0dfh, 0d3h}, { fstp st3 }
     1734        FpuReservedEncoding {db 0dfh, 0d4h}, { fstp st4 }
     1735        FpuReservedEncoding {db 0dfh, 0d5h}, { fstp st5 }
     1736        FpuReservedEncoding {db 0dfh, 0d6h}, { fstp st6 }
     1737        FpuReservedEncoding {db 0dfh, 0d7h}, { fstp st7 }
     1738        FpuReservedEncoding {db 0dfh, 0d8h}, { fstp st0 }
     1739        FpuReservedEncoding {db 0dfh, 0d9h}, { fstp st1 }
     1740        FpuReservedEncoding {db 0dfh, 0dah}, { fstp st2 }
     1741        FpuReservedEncoding {db 0dfh, 0dbh}, { fstp st3 }
     1742        FpuReservedEncoding {db 0dfh, 0dch}, { fstp st4 }
     1743        FpuReservedEncoding {db 0dfh, 0ddh}, { fstp st5 }
     1744        FpuReservedEncoding {db 0dfh, 0deh}, { fstp st6 }
     1745        FpuReservedEncoding {db 0dfh, 0dfh}, { fstp st7 }
    17251746        ShouldTrap X86_XCPT_UD, db 0dfh, 0e1h
    17261747        ShouldTrap X86_XCPT_UD, db 0dfh, 0e2h
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette