VirtualBox

Ignore:
Timestamp:
Apr 23, 2024 9:28:09 AM (10 months ago)
Author:
vboxsync
Message:

ValidationKit/bs3-cpu-basic-2: Add a test value > 4096 for the retn Iw testcase in order to test the arm64 path in the recompiler properly, bugref:10371

Location:
trunk/src/VBox/ValidationKit/bootsectors
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-template.mac

    r102130 r104401  
    16991699;*  Near RET                                                                                                                     *
    17001700;*********************************************************************************************************************************
     1701
     1702;;
     1703; Macro for emitting various retn Iw variants
     1704;
     1705; @param 1      Number of bytes to pop
     1706;
     1707%ifnmacro retn_iw_macro
     1708%macro retn_iw_macro 1
     1709
     1710BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i %+ %1 %+ __ud2
     1711BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i %+ %1 %+ __ud2, BS3_PBC_NEAR
     1712        ret     %1
     1713.again: ud2
     1714        jmp     .again
     1715AssertCompile(.again - BS3_LAST_LABEL == 3)
     1716BS3_PROC_END_CMN   bs3CpuBasic2_retn_i %+ %1 %+ __ud2
     1717
     1718 %if TMPL_BITS == 64
     1719
     1720BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i %+ %1 %+ _rexw__ud2
     1721BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i %+ %1 %+ _rexw__ud2, BS3_PBC_NEAR
     1722        db      048h                        ; REX.W
     1723        ret     %1
     1724.again: ud2
     1725        jmp     .again
     1726AssertCompile(.again - BS3_LAST_LABEL == 4)
     1727BS3_PROC_END_CMN   bs3CpuBasic2_retn_i %+ %1 %+ _rexw__ud2
     1728
     1729BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i %+ %1 %+ _opsize_rexw__ud2
     1730BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i %+ %1 %+ _opsize_rexw__ud2, BS3_PBC_NEAR
     1731        db      66h, 048h
     1732        ret     %1
     1733.again: ud2
     1734        jmp     .again
     1735AssertCompile(.again - BS3_LAST_LABEL == 5)
     1736BS3_PROC_END_CMN   bs3CpuBasic2_retn_i %+ %1 %+ _opsize_rexw__ud2
     1737
     1738 %endif
     1739
     1740%endmacro ; retn_iw_macro
     1741%endif
     1742
     1743
     1744;;
     1745; Macro for emitting various retn Iw variants with an opsize prefix.
     1746;
     1747; @param 1      Number of bytes to pop
     1748;
     1749%ifnmacro retn_iw_opsize_macro
     1750%macro retn_iw_opsize_macro 1
     1751
     1752BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i %+ %1 %+ _opsize__ud2
     1753BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i %+ %1 %+ _opsize__ud2, BS3_PBC_NEAR
     1754        db      66h
     1755        ret     %1
     1756.again: ud2
     1757        jmp     .again
     1758AssertCompile(.again - BS3_LAST_LABEL == 4)
     1759BS3_PROC_END_CMN   bs3CpuBasic2_retn_i %+ %1 %+ _opsize__ud2
     1760
     1761 %if TMPL_BITS == 64
     1762BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i %+ %1 %+ _rexw_opsize__ud2
     1763BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i %+ %1 %+ _rexw_opsize__ud2, BS3_PBC_NEAR
     1764        db      048h, 66h
     1765        ret     %1
     1766.again: ud2
     1767        jmp     .again
     1768AssertCompile(.again - BS3_LAST_LABEL == 5)
     1769BS3_PROC_END_CMN   bs3CpuBasic2_retn_i %+ %1 %+ _rexw_opsize__ud2
     1770 %endif
     1771
     1772%endmacro ; retn_iw_opsize_macro
     1773%endif
     1774
     1775
     1776; The no pop variant
    17011777BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn__ud2
    17021778BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn__ud2, BS3_PBC_NEAR
     
    17061782BS3_PROC_END_CMN   bs3CpuBasic2_retn__ud2
    17071783
    1708 BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i24__ud2
    1709 BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i24__ud2, BS3_PBC_NEAR
    1710         ret     24
    1711 .again: ud2
    1712         jmp     .again
    1713 AssertCompile(.again - BS3_LAST_LABEL == 3)
    1714 BS3_PROC_END_CMN   bs3CpuBasic2_retn_i24__ud2
    1715 
    1716 BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i0__ud2
    1717 BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i0__ud2, BS3_PBC_NEAR
    1718         ret     0
    1719 .again: ud2
    1720         jmp     .again
    1721 AssertCompile(.again - BS3_LAST_LABEL == 3)
    1722 BS3_PROC_END_CMN   bs3CpuBasic2_retn_i0__ud2
    1723 
    1724 BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i760__ud2
    1725 BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i760__ud2, BS3_PBC_NEAR
    1726         ret     760
    1727 .again: ud2
    1728         jmp     .again
    1729 AssertCompile(.again - BS3_LAST_LABEL == 3)
    1730 BS3_PROC_END_CMN   bs3CpuBasic2_retn_i760__ud2
     1784retn_iw_macro 0
     1785retn_iw_macro 24
     1786retn_iw_macro 760
     1787retn_iw_macro 5193
    17311788
    17321789 %if TMPL_BITS == 64
    17331790
     1791; The no pop variant
    17341792BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_rexw__ud2
    17351793BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_rexw__ud2, BS3_PBC_NEAR
     
    17401798BS3_PROC_END_CMN   bs3CpuBasic2_retn_rexw__ud2
    17411799
    1742 BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i24_rexw__ud2
    1743 BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i24_rexw__ud2, BS3_PBC_NEAR
    1744         db      048h                        ; REX.W
    1745         ret     24
    1746 .again: ud2
    1747         jmp     .again
    1748 AssertCompile(.again - BS3_LAST_LABEL == 4)
    1749 BS3_PROC_END_CMN   bs3CpuBasic2_retn_i24_rexw__ud2
    1750 
    17511800BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_opsize_rexw__ud2
    17521801BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_opsize_rexw__ud2, BS3_PBC_NEAR
     
    17551804.again: ud2
    17561805        jmp     .again
     1806AssertCompile(.again - BS3_LAST_LABEL == 3)
    17571807BS3_PROC_END_CMN   bs3CpuBasic2_retn_opsize_rexw__ud2
    1758 
    1759 BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i24_opsize_rexw__ud2
    1760 BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i24_opsize_rexw__ud2, BS3_PBC_NEAR
    1761         db      66h, 048h
    1762         ret     24
    1763 .again: ud2
    1764         jmp     .again
    1765 AssertCompile(.again - BS3_LAST_LABEL == 5)
    1766 BS3_PROC_END_CMN   bs3CpuBasic2_retn_i24_opsize_rexw__ud2
    17671808
    17681809 %endif
     
    17731814        int3
    17741815
     1816; The no pop variant
    17751817BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_opsize__ud2
    17761818BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_opsize__ud2, BS3_PBC_NEAR
     
    17811823BS3_PROC_END_CMN   bs3CpuBasic2_retn_opsize__ud2
    17821824
    1783 BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i24_opsize__ud2
    1784 BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i24_opsize__ud2, BS3_PBC_NEAR
    1785         db      66h
    1786         ret     24
    1787 .again: ud2
    1788         jmp     .again
    1789 AssertCompile(.again - BS3_LAST_LABEL == 4)
    1790 BS3_PROC_END_CMN   bs3CpuBasic2_retn_i24_opsize__ud2
    1791 
    1792 BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i0_opsize__ud2
    1793 BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i0_opsize__ud2, BS3_PBC_NEAR
    1794         db      66h
    1795         ret     0
    1796 .again: ud2
    1797         jmp     .again
    1798 AssertCompile(.again - BS3_LAST_LABEL == 4)
    1799 BS3_PROC_END_CMN   bs3CpuBasic2_retn_i0_opsize__ud2
    1800 
    18011825 %if TMPL_BITS == 64
     1826
     1827; The no pop variant
    18021828BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_rexw_opsize__ud2
    18031829BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_rexw_opsize__ud2, BS3_PBC_NEAR
     
    18071833        jmp     .again
    18081834BS3_PROC_END_CMN   bs3CpuBasic2_retn_rexw_opsize__ud2
    1809 
    1810 BS3_CPUBAS2_UD_OFF bs3CpuBasic2_retn_i24_rexw_opsize__ud2
    1811 BS3_PROC_BEGIN_CMN bs3CpuBasic2_retn_i24_rexw_opsize__ud2, BS3_PBC_NEAR
    1812         db      048h, 66h
    1813         ret     24
    1814 .again: ud2
    1815         jmp     .again
    1816 AssertCompile(.again - BS3_LAST_LABEL == 5)
    1817 BS3_PROC_END_CMN   bs3CpuBasic2_retn_i24_rexw_opsize__ud2
    1818  %endif
     1835 %endif
     1836
     1837retn_iw_opsize_macro 0
     1838retn_iw_opsize_macro 24
     1839retn_iw_opsize_macro 760
     1840retn_iw_opsize_macro 5193
    18191841
    18201842; End of opsize tests.
  • trunk/src/VBox/ValidationKit/bootsectors/bs3-cpu-basic-2-x0.c

    r104400 r104401  
    46524652PROTO_ALL(bs3CpuBasic2_retn_i24_opsize__ud2);
    46534653PROTO_ALL(bs3CpuBasic2_retn_i760__ud2);
     4654PROTO_ALL(bs3CpuBasic2_retn_i5193__ud2);
     4655PROTO_ALL(bs3CpuBasic2_retn_i5193_opsize__ud2);
    46544656PROTO_ALL(bs3CpuBasic2_retn_i0__ud2);
    46554657PROTO_ALL(bs3CpuBasic2_retn_i0_opsize__ud2);
    46564658FNBS3FAR  bs3CpuBasic2_retn_rexw__ud2_c64;
    46574659FNBS3FAR  bs3CpuBasic2_retn_i24_rexw__ud2_c64;
     4660FNBS3FAR  bs3CpuBasic2_retn_i5193_rexw__ud2_c64;
    46584661FNBS3FAR  bs3CpuBasic2_retn_opsize_rexw__ud2_c64;
    46594662FNBS3FAR  bs3CpuBasic2_retn_rexw_opsize__ud2_c64;
    46604663FNBS3FAR  bs3CpuBasic2_retn_i24_opsize_rexw__ud2_c64;
    46614664FNBS3FAR  bs3CpuBasic2_retn_i24_rexw_opsize__ud2_c64;
     4665FNBS3FAR  bs3CpuBasic2_retn_i5193_opsize_rexw__ud2_c64;
     4666FNBS3FAR  bs3CpuBasic2_retn_i5193_rexw_opsize__ud2_c64;
    46624667PROTO_ALL(bs3CpuBasic2_retn_opsize_end);
    46634668#undef PROTO_ALL
     
    47314736        const s_aTests[] =
    47324737        {
    4733             { false,  0, bs3CpuBasic2_retn__ud2_c16, },
    4734             {  true,  0, bs3CpuBasic2_retn_opsize__ud2_c16, },
    4735             { false, 24, bs3CpuBasic2_retn_i24__ud2_c16, },
    4736             {  true, 24, bs3CpuBasic2_retn_i24_opsize__ud2_c16, },
    4737             { false,  0, bs3CpuBasic2_retn_i0__ud2_c16, },
    4738             {  true,  0, bs3CpuBasic2_retn_i0_opsize__ud2_c16, },
    4739             { false,760, bs3CpuBasic2_retn_i760__ud2_c16, },
     4738            { false,    0, bs3CpuBasic2_retn__ud2_c16, },
     4739            {  true,    0, bs3CpuBasic2_retn_opsize__ud2_c16, },
     4740            { false,   24, bs3CpuBasic2_retn_i24__ud2_c16, },
     4741            {  true,   24, bs3CpuBasic2_retn_i24_opsize__ud2_c16, },
     4742            { false,    0, bs3CpuBasic2_retn_i0__ud2_c16, },
     4743            {  true,    0, bs3CpuBasic2_retn_i0_opsize__ud2_c16, },
     4744            { false,  760, bs3CpuBasic2_retn_i760__ud2_c16, },
     4745            { false, 5193, bs3CpuBasic2_retn_i5193__ud2_c16, },
     4746            { true,  5193, bs3CpuBasic2_retn_i5193_opsize__ud2_c16, },
    47404747        };
    47414748
     
    47934800        const s_aTests[] =
    47944801        {
    4795             { 32, false,  0, bs3CpuBasic2_retn__ud2_c32, },
    4796             { 32,  true,  0, bs3CpuBasic2_retn_opsize__ud2_c32, },
    4797             { 32, false, 24, bs3CpuBasic2_retn_i24__ud2_c32, },
    4798             { 32,  true, 24, bs3CpuBasic2_retn_i24_opsize__ud2_c32, },
    4799             { 32, false,  0, bs3CpuBasic2_retn_i0__ud2_c32, },
    4800             { 32,  true,  0, bs3CpuBasic2_retn_i0_opsize__ud2_c32, },
    4801             { 32, false,760, bs3CpuBasic2_retn_i760__ud2_c32, },
     4802            { 32, false,    0, bs3CpuBasic2_retn__ud2_c32, },
     4803            { 32,  true,    0, bs3CpuBasic2_retn_opsize__ud2_c32, },
     4804            { 32, false,   24, bs3CpuBasic2_retn_i24__ud2_c32, },
     4805            { 32,  true,   24, bs3CpuBasic2_retn_i24_opsize__ud2_c32, },
     4806            { 32, false,    0, bs3CpuBasic2_retn_i0__ud2_c32, },
     4807            { 32,  true,    0, bs3CpuBasic2_retn_i0_opsize__ud2_c32, },
     4808            { 32, false,  760, bs3CpuBasic2_retn_i760__ud2_c32, },
     4809            { 32, false, 5193, bs3CpuBasic2_retn_i5193__ud2_c32, },
     4810            { 32, true,  5193, bs3CpuBasic2_retn_i5193_opsize__ud2_c32, },
    48024811        };
    48034812
     
    48774886        const s_aTests[] =
    48784887        {
    4879             { 32, false,  0, bs3CpuBasic2_retn__ud2_c64, },
    4880             { 32, false,  0, bs3CpuBasic2_retn_rexw__ud2_c64, },
    4881             { 32,  true,  0, bs3CpuBasic2_retn_opsize__ud2_c64, },
    4882             { 32, false,  0, bs3CpuBasic2_retn_opsize_rexw__ud2_c64, },
    4883             { 32,  true,  0, bs3CpuBasic2_retn_rexw_opsize__ud2_c64, },
    4884             { 32, false, 24, bs3CpuBasic2_retn_i24__ud2_c64, },
    4885             { 32, false, 24, bs3CpuBasic2_retn_i24_rexw__ud2_c64, },
    4886             { 32,  true, 24, bs3CpuBasic2_retn_i24_opsize__ud2_c64, },
    4887             { 32, false, 24, bs3CpuBasic2_retn_i24_opsize_rexw__ud2_c64, },
    4888             { 32,  true, 24, bs3CpuBasic2_retn_i24_rexw_opsize__ud2_c64, },
    4889             { 32, false,  0, bs3CpuBasic2_retn_i0__ud2_c64, },
    4890             { 32,  true,  0, bs3CpuBasic2_retn_i0_opsize__ud2_c64, },
    4891             { 32, false,760, bs3CpuBasic2_retn_i760__ud2_c64, },
     4888            { 32, false,    0, bs3CpuBasic2_retn__ud2_c64, },
     4889            { 32, false,    0, bs3CpuBasic2_retn_rexw__ud2_c64, },
     4890            { 32,  true,    0, bs3CpuBasic2_retn_opsize__ud2_c64, },
     4891            { 32, false,    0, bs3CpuBasic2_retn_opsize_rexw__ud2_c64, },
     4892            { 32,  true,    0, bs3CpuBasic2_retn_rexw_opsize__ud2_c64, },
     4893            { 32, false,   24, bs3CpuBasic2_retn_i24__ud2_c64, },
     4894            { 32, false,   24, bs3CpuBasic2_retn_i24_rexw__ud2_c64, },
     4895            { 32,  true,   24, bs3CpuBasic2_retn_i24_opsize__ud2_c64, },
     4896            { 32, false,   24, bs3CpuBasic2_retn_i24_opsize_rexw__ud2_c64, },
     4897            { 32,  true,   24, bs3CpuBasic2_retn_i24_rexw_opsize__ud2_c64, },
     4898            { 32, false,    0, bs3CpuBasic2_retn_i0__ud2_c64, },
     4899            { 32,  true,    0, bs3CpuBasic2_retn_i0_opsize__ud2_c64, },
     4900            { 32, false,  760, bs3CpuBasic2_retn_i760__ud2_c64, },
     4901            { 32, false, 5193, bs3CpuBasic2_retn_i5193__ud2_c64, },
     4902            { 32, false, 5193, bs3CpuBasic2_retn_i5193_rexw__ud2_c64, },
     4903            { 32,  true, 5193, bs3CpuBasic2_retn_i5193_opsize__ud2_c64, },
     4904            { 32, false, 5193, bs3CpuBasic2_retn_i5193_opsize_rexw__ud2_c64, },
     4905            { 32,  true, 5193, bs3CpuBasic2_retn_i5193_rexw_opsize__ud2_c64, },
    48924906        };
    48934907        BS3CPUVENDOR const enmCpuVendor = Bs3GetCpuVendor();
Note: See TracChangeset for help on using the changeset viewer.

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