Changeset 102438 in vbox
- Timestamp:
- Dec 3, 2023 11:37:09 AM (12 months ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAllInstPython.py
r102436 r102438 3024 3024 'IEM_MC_MEM_COMMIT_AND_UNMAP_WO': (McBlock.parseMcGeneric, True, True, ), 3025 3025 'IEM_MC_MEM_COMMIT_AND_UNMAP_FOR_FPU_STORE_WO': (McBlock.parseMcGeneric, True, False, ), 3026 'IEM_MC_MEM_MAP_D80_WO': (McBlock.parseMcGeneric, True, False,),3027 'IEM_MC_MEM_MAP_I16_WO': (McBlock.parseMcGeneric, True, False,),3028 'IEM_MC_MEM_MAP_I32_WO': (McBlock.parseMcGeneric, True, False,),3029 'IEM_MC_MEM_MAP_I64_WO': (McBlock.parseMcGeneric, True, False,),3030 'IEM_MC_MEM_MAP_R32_WO': (McBlock.parseMcGeneric, True, False,),3031 'IEM_MC_MEM_MAP_R64_WO': (McBlock.parseMcGeneric, True, False,),3032 'IEM_MC_MEM_MAP_R80_WO': (McBlock.parseMcGeneric, True, False,),3026 'IEM_MC_MEM_MAP_D80_WO': (McBlock.parseMcGeneric, True, True, ), 3027 'IEM_MC_MEM_MAP_I16_WO': (McBlock.parseMcGeneric, True, True, ), 3028 'IEM_MC_MEM_MAP_I32_WO': (McBlock.parseMcGeneric, True, True, ), 3029 'IEM_MC_MEM_MAP_I64_WO': (McBlock.parseMcGeneric, True, True, ), 3030 'IEM_MC_MEM_MAP_R32_WO': (McBlock.parseMcGeneric, True, True, ), 3031 'IEM_MC_MEM_MAP_R64_WO': (McBlock.parseMcGeneric, True, True, ), 3032 'IEM_MC_MEM_MAP_R80_WO': (McBlock.parseMcGeneric, True, True, ), 3033 3033 'IEM_MC_MEM_MAP_U8_RW': (McBlock.parseMcGeneric, True, True, ), 3034 3034 'IEM_MC_MEM_MAP_U8_RO': (McBlock.parseMcGeneric, True, True, ), 3035 3035 'IEM_MC_MEM_MAP_U8_WO': (McBlock.parseMcGeneric, True, True, ), 3036 'IEM_MC_MEM_MAP_U16_RW': (McBlock.parseMcGeneric, True, False,),3037 'IEM_MC_MEM_MAP_U16_RO': (McBlock.parseMcGeneric, True, False,),3038 'IEM_MC_MEM_MAP_U16_WO': (McBlock.parseMcGeneric, True, False,),3039 'IEM_MC_MEM_MAP_U32_RW': (McBlock.parseMcGeneric, True, False,),3040 'IEM_MC_MEM_MAP_U32_RO': (McBlock.parseMcGeneric, True, False,),3041 'IEM_MC_MEM_MAP_U32_WO': (McBlock.parseMcGeneric, True, False,),3042 'IEM_MC_MEM_MAP_U64_RW': (McBlock.parseMcGeneric, True, False,),3043 'IEM_MC_MEM_MAP_U64_RO': (McBlock.parseMcGeneric, True, False,),3044 'IEM_MC_MEM_MAP_U64_WO': (McBlock.parseMcGeneric, True, False,),3045 'IEM_MC_MEM_MAP_U128_RW': (McBlock.parseMcGeneric, True, False,),3046 'IEM_MC_MEM_MAP_U128_RO': (McBlock.parseMcGeneric, True, False,),3047 'IEM_MC_MEM_MAP_U128_WO': (McBlock.parseMcGeneric, True, False,),3036 'IEM_MC_MEM_MAP_U16_RW': (McBlock.parseMcGeneric, True, True, ), 3037 'IEM_MC_MEM_MAP_U16_RO': (McBlock.parseMcGeneric, True, True, ), 3038 'IEM_MC_MEM_MAP_U16_WO': (McBlock.parseMcGeneric, True, True, ), 3039 'IEM_MC_MEM_MAP_U32_RW': (McBlock.parseMcGeneric, True, True, ), 3040 'IEM_MC_MEM_MAP_U32_RO': (McBlock.parseMcGeneric, True, True, ), 3041 'IEM_MC_MEM_MAP_U32_WO': (McBlock.parseMcGeneric, True, True, ), 3042 'IEM_MC_MEM_MAP_U64_RW': (McBlock.parseMcGeneric, True, True, ), 3043 'IEM_MC_MEM_MAP_U64_RO': (McBlock.parseMcGeneric, True, True, ), 3044 'IEM_MC_MEM_MAP_U64_WO': (McBlock.parseMcGeneric, True, True, ), 3045 'IEM_MC_MEM_MAP_U128_RW': (McBlock.parseMcGeneric, True, True, ), 3046 'IEM_MC_MEM_MAP_U128_RO': (McBlock.parseMcGeneric, True, True, ), 3047 'IEM_MC_MEM_MAP_U128_WO': (McBlock.parseMcGeneric, True, True, ), 3048 3048 'IEM_MC_MEM_ROLLBACK_AND_UNMAP_WO': (McBlock.parseMcGeneric, True, True, ), 3049 3049 'IEM_MC_MERGE_YREG_U32_U96_ZX_VLMAX': (McBlock.parseMcGeneric, True, False, ), -
trunk/src/VBox/VMM/VMMAll/IEMAllN8vePython.py
r102429 r102438 144 144 'IEM_MC_FETCH_MEM_FLAT_U128_AND_XREG_U128_AND_RAX_RDX_U64': (None, True, False, ), 145 145 'IEM_MC_FETCH_MEM_FLAT_U128_AND_XREG_U128_AND_EAX_EDX_U32_SX_U64': (None, True, False, ), 146 'IEM_MC_MEM_FLAT_MAP_D80_WO': (None, True, False,),147 'IEM_MC_MEM_FLAT_MAP_I16_WO': (None, True, False,),148 'IEM_MC_MEM_FLAT_MAP_I32_WO': (None, True, False,),149 'IEM_MC_MEM_FLAT_MAP_I64_WO': (None, True, False,),150 'IEM_MC_MEM_FLAT_MAP_R32_WO': (None, True, False,),151 'IEM_MC_MEM_FLAT_MAP_R64_WO': (None, True, False,),152 'IEM_MC_MEM_FLAT_MAP_R80_WO': (None, True, False,),153 'IEM_MC_MEM_FLAT_MAP_U8_RO': (None, True, False,),154 'IEM_MC_MEM_FLAT_MAP_U8_RW': (None, True, False,),155 'IEM_MC_MEM_FLAT_MAP_U16_RO': (None, True, False,),156 'IEM_MC_MEM_FLAT_MAP_U16_RW': (None, True, False,),157 'IEM_MC_MEM_FLAT_MAP_U32_RO': (None, True, False,),158 'IEM_MC_MEM_FLAT_MAP_U32_RW': (None, True, False,),159 'IEM_MC_MEM_FLAT_MAP_U64_RO': (None, True, False,),160 'IEM_MC_MEM_FLAT_MAP_U64_RW': (None, True, False,),161 'IEM_MC_MEM_FLAT_MAP_U128_RW': (None, True, False,),146 'IEM_MC_MEM_FLAT_MAP_D80_WO': (None, True, True, ), 147 'IEM_MC_MEM_FLAT_MAP_I16_WO': (None, True, True, ), 148 'IEM_MC_MEM_FLAT_MAP_I32_WO': (None, True, True, ), 149 'IEM_MC_MEM_FLAT_MAP_I64_WO': (None, True, True, ), 150 'IEM_MC_MEM_FLAT_MAP_R32_WO': (None, True, True, ), 151 'IEM_MC_MEM_FLAT_MAP_R64_WO': (None, True, True, ), 152 'IEM_MC_MEM_FLAT_MAP_R80_WO': (None, True, True, ), 153 'IEM_MC_MEM_FLAT_MAP_U8_RO': (None, True, True, ), 154 'IEM_MC_MEM_FLAT_MAP_U8_RW': (None, True, True, ), 155 'IEM_MC_MEM_FLAT_MAP_U16_RO': (None, True, True, ), 156 'IEM_MC_MEM_FLAT_MAP_U16_RW': (None, True, True, ), 157 'IEM_MC_MEM_FLAT_MAP_U32_RO': (None, True, True, ), 158 'IEM_MC_MEM_FLAT_MAP_U32_RW': (None, True, True, ), 159 'IEM_MC_MEM_FLAT_MAP_U64_RO': (None, True, True, ), 160 'IEM_MC_MEM_FLAT_MAP_U64_RW': (None, True, True, ), 161 'IEM_MC_MEM_FLAT_MAP_U128_RW': (None, True, True, ), 162 162 'IEM_MC_STORE_MEM_FLAT_U128_ALIGN_SSE': (None, True, False, ), 163 163 'IEM_MC_STORE_MEM_FLAT_U128': (None, True, False, ), -
trunk/src/VBox/VMM/VMMAll/IEMAllN8veRecompiler.cpp
r102436 r102438 1693 1693 1694 1694 /** 1695 * Used by TB code to map unsigned 16-bit data read-write w/ segmentation. 1696 */ 1697 IEM_DECL_NATIVE_HLP_DEF(uint16_t *, iemNativeHlpMemMapDataU16Rw,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1698 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1699 { 1700 return iemMemMapDataU16RwJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU16RwSafeJmp */ 1701 } 1702 1703 1704 /** 1705 * Used by TB code to map unsigned 16-bit data writeonly w/ segmentation. 1706 */ 1707 IEM_DECL_NATIVE_HLP_DEF(uint16_t *, iemNativeHlpMemMapDataU16Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1708 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1709 { 1710 return iemMemMapDataU16WoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU16WoSafeJmp */ 1711 } 1712 1713 1714 /** 1715 * Used by TB code to map unsigned 16-bit data readonly w/ segmentation. 1716 */ 1717 IEM_DECL_NATIVE_HLP_DEF(uint16_t const *, iemNativeHlpMemMapDataU16Ro,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1718 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1719 { 1720 return iemMemMapDataU16RoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU16RoSafeJmp */ 1721 } 1722 1723 1724 /** 1725 * Used by TB code to map unsigned 32-bit data read-write w/ segmentation. 1726 */ 1727 IEM_DECL_NATIVE_HLP_DEF(uint32_t *, iemNativeHlpMemMapDataU32Rw,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1728 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1729 { 1730 return iemMemMapDataU32RwJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU32RwSafeJmp */ 1731 } 1732 1733 1734 /** 1735 * Used by TB code to map unsigned 32-bit data writeonly w/ segmentation. 1736 */ 1737 IEM_DECL_NATIVE_HLP_DEF(uint32_t *, iemNativeHlpMemMapDataU32Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1738 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1739 { 1740 return iemMemMapDataU32WoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU32WoSafeJmp */ 1741 } 1742 1743 1744 /** 1745 * Used by TB code to map unsigned 32-bit data readonly w/ segmentation. 1746 */ 1747 IEM_DECL_NATIVE_HLP_DEF(uint32_t const *, iemNativeHlpMemMapDataU32Ro,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1748 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1749 { 1750 return iemMemMapDataU32RoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU32RoSafeJmp */ 1751 } 1752 1753 1754 /** 1755 * Used by TB code to map unsigned 64-bit data read-write w/ segmentation. 1756 */ 1757 IEM_DECL_NATIVE_HLP_DEF(uint64_t *, iemNativeHlpMemMapDataU64Rw,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1758 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1759 { 1760 return iemMemMapDataU64RwJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU64RwSafeJmp */ 1761 } 1762 1763 1764 /** 1765 * Used by TB code to map unsigned 64-bit data writeonly w/ segmentation. 1766 */ 1767 IEM_DECL_NATIVE_HLP_DEF(uint64_t *, iemNativeHlpMemMapDataU64Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1768 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1769 { 1770 return iemMemMapDataU64WoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU64WoSafeJmp */ 1771 } 1772 1773 1774 /** 1775 * Used by TB code to map unsigned 64-bit data readonly w/ segmentation. 1776 */ 1777 IEM_DECL_NATIVE_HLP_DEF(uint64_t const *, iemNativeHlpMemMapDataU64Ro,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1778 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1779 { 1780 return iemMemMapDataU64RoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU64RoSafeJmp */ 1781 } 1782 1783 1784 /** 1785 * Used by TB code to map 80-bit float data writeonly w/ segmentation. 1786 */ 1787 IEM_DECL_NATIVE_HLP_DEF(RTFLOAT80U *, iemNativeHlpMemMapDataR80Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1788 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1789 { 1790 return iemMemMapDataR80WoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataR80WoSafeJmp */ 1791 } 1792 1793 1794 /** 1795 * Used by TB code to map 80-bit BCD data writeonly w/ segmentation. 1796 */ 1797 IEM_DECL_NATIVE_HLP_DEF(RTPBCD80U *, iemNativeHlpMemMapDataD80Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1798 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1799 { 1800 return iemMemMapDataD80WoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataD80WoSafeJmp */ 1801 } 1802 1803 1804 /** 1805 * Used by TB code to map unsigned 128-bit data read-write w/ segmentation. 1806 */ 1807 IEM_DECL_NATIVE_HLP_DEF(RTUINT128U *, iemNativeHlpMemMapDataU128Rw,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1808 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1809 { 1810 return iemMemMapDataU128RwJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU128RwSafeJmp */ 1811 } 1812 1813 1814 /** 1815 * Used by TB code to map unsigned 128-bit data writeonly w/ segmentation. 1816 */ 1817 IEM_DECL_NATIVE_HLP_DEF(RTUINT128U *, iemNativeHlpMemMapDataU128Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1818 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1819 { 1820 return iemMemMapDataU128WoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU128WoSafeJmp */ 1821 } 1822 1823 1824 /** 1825 * Used by TB code to map unsigned 128-bit data readonly w/ segmentation. 1826 */ 1827 IEM_DECL_NATIVE_HLP_DEF(RTUINT128U const *, iemNativeHlpMemMapDataU128Ro,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, 1828 RTGCPTR GCPtrMem, uint8_t iSegReg)) 1829 { 1830 return iemMemMapDataU128RoJmp(pVCpu, pbUnmapInfo, iSegReg, GCPtrMem); /** @todo use iemMemMapDataU128RoSafeJmp */ 1831 } 1832 1833 1834 1835 /** 1695 1836 * Used by TB code to commit and unmap a read-write memory mapping. 1696 1837 */ … … 1722 1863 1723 1864 /** 1724 * Used by TB code to load unsigned 8-bit data w/ segmentation.1865 * Used by TB code to load unsigned 8-bit data w/ flat address. 1725 1866 */ 1726 1867 IEM_DECL_NATIVE_HLP_DEF(uint8_t, iemNativeHlpMemFlatFetchDataU8,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem)) … … 1731 1872 1732 1873 /** 1733 * Used by TB code to load unsigned 16-bit data w/ segmentation.1874 * Used by TB code to load unsigned 16-bit data w/ flat address. 1734 1875 */ 1735 1876 IEM_DECL_NATIVE_HLP_DEF(uint16_t, iemNativeHlpMemFlatFetchDataU16,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem)) … … 1740 1881 1741 1882 /** 1742 * Used by TB code to load unsigned 32-bit data w/ segmentation.1883 * Used by TB code to load unsigned 32-bit data w/ flat address. 1743 1884 */ 1744 1885 IEM_DECL_NATIVE_HLP_DEF(uint32_t, iemNativeHlpMemFlatFetchDataU32,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem)) … … 1749 1890 1750 1891 /** 1751 * Used by TB code to load unsigned 64-bit data w/ segmentation.1892 * Used by TB code to load unsigned 64-bit data w/ flat address. 1752 1893 */ 1753 1894 IEM_DECL_NATIVE_HLP_DEF(uint64_t, iemNativeHlpMemFlatFetchDataU64,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem)) … … 1758 1899 1759 1900 /** 1760 * Used by TB code to store unsigned 8-bit data w/ segmentation.1901 * Used by TB code to store unsigned 8-bit data w/ flat address. 1761 1902 */ 1762 1903 IEM_DECL_NATIVE_HLP_DEF(void, iemNativeHlpMemFlatStoreDataU8,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint8_t u8Value)) … … 1767 1908 1768 1909 /** 1769 * Used by TB code to store unsigned 16-bit data w/ segmentation.1910 * Used by TB code to store unsigned 16-bit data w/ flat address. 1770 1911 */ 1771 1912 IEM_DECL_NATIVE_HLP_DEF(void, iemNativeHlpMemFlatStoreDataU16,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint16_t u16Value)) … … 1776 1917 1777 1918 /** 1778 * Used by TB code to store unsigned 32-bit data w/ segmentation.1919 * Used by TB code to store unsigned 32-bit data w/ flat address. 1779 1920 */ 1780 1921 IEM_DECL_NATIVE_HLP_DEF(void, iemNativeHlpMemFlatStoreDataU32,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint32_t u32Value)) … … 1785 1926 1786 1927 /** 1787 * Used by TB code to store unsigned 64-bit data w/ segmentation.1928 * Used by TB code to store unsigned 64-bit data w/ flat address. 1788 1929 */ 1789 1930 IEM_DECL_NATIVE_HLP_DEF(void, iemNativeHlpMemFlatStoreDataU64,(PVMCPUCC pVCpu, RTGCPTR GCPtrMem, uint64_t u64Value)) … … 1793 1934 1794 1935 1936 /** 1937 * Used by TB code to map unsigned 8-bit data read-write w/ flat address. 1938 */ 1939 IEM_DECL_NATIVE_HLP_DEF(uint8_t *, iemNativeHlpMemFlatMapDataU8Rw,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 1940 { 1941 return iemMemFlatMapDataU8RwJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU8RwSafeJmp */ 1942 } 1943 1944 1945 /** 1946 * Used by TB code to map unsigned 8-bit data writeonly w/ flat address. 1947 */ 1948 IEM_DECL_NATIVE_HLP_DEF(uint8_t *, iemNativeHlpMemFlatMapDataU8Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 1949 { 1950 return iemMemFlatMapDataU8WoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU8WoSafeJmp */ 1951 } 1952 1953 1954 /** 1955 * Used by TB code to map unsigned 8-bit data readonly w/ flat address. 1956 */ 1957 IEM_DECL_NATIVE_HLP_DEF(uint8_t const *, iemNativeHlpMemFlatMapDataU8Ro,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 1958 { 1959 return iemMemFlatMapDataU8RoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU8RoSafeJmp */ 1960 } 1961 1962 1963 /** 1964 * Used by TB code to map unsigned 16-bit data read-write w/ flat address. 1965 */ 1966 IEM_DECL_NATIVE_HLP_DEF(uint16_t *, iemNativeHlpMemFlatMapDataU16Rw,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 1967 { 1968 return iemMemFlatMapDataU16RwJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU16RwSafeJmp */ 1969 } 1970 1971 1972 /** 1973 * Used by TB code to map unsigned 16-bit data writeonly w/ flat address. 1974 */ 1975 IEM_DECL_NATIVE_HLP_DEF(uint16_t *, iemNativeHlpMemFlatMapDataU16Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 1976 { 1977 return iemMemFlatMapDataU16WoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU16WoSafeJmp */ 1978 } 1979 1980 1981 /** 1982 * Used by TB code to map unsigned 16-bit data readonly w/ flat address. 1983 */ 1984 IEM_DECL_NATIVE_HLP_DEF(uint16_t const *, iemNativeHlpMemFlatMapDataU16Ro,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 1985 { 1986 return iemMemFlatMapDataU16RoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU16RoSafeJmp */ 1987 } 1988 1989 1990 /** 1991 * Used by TB code to map unsigned 32-bit data read-write w/ flat address. 1992 */ 1993 IEM_DECL_NATIVE_HLP_DEF(uint32_t *, iemNativeHlpMemFlatMapDataU32Rw,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 1994 { 1995 return iemMemFlatMapDataU32RwJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU32RwSafeJmp */ 1996 } 1997 1998 1999 /** 2000 * Used by TB code to map unsigned 32-bit data writeonly w/ flat address. 2001 */ 2002 IEM_DECL_NATIVE_HLP_DEF(uint32_t *, iemNativeHlpMemFlatMapDataU32Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2003 { 2004 return iemMemFlatMapDataU32WoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU32WoSafeJmp */ 2005 } 2006 2007 2008 /** 2009 * Used by TB code to map unsigned 32-bit data readonly w/ flat address. 2010 */ 2011 IEM_DECL_NATIVE_HLP_DEF(uint32_t const *, iemNativeHlpMemFlatMapDataU32Ro,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2012 { 2013 return iemMemFlatMapDataU32RoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU32RoSafeJmp */ 2014 } 2015 2016 2017 /** 2018 * Used by TB code to map unsigned 64-bit data read-write w/ flat address. 2019 */ 2020 IEM_DECL_NATIVE_HLP_DEF(uint64_t *, iemNativeHlpMemFlatMapDataU64Rw,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2021 { 2022 return iemMemFlatMapDataU64RwJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU64RwSafeJmp */ 2023 } 2024 2025 2026 /** 2027 * Used by TB code to map unsigned 64-bit data writeonly w/ flat address. 2028 */ 2029 IEM_DECL_NATIVE_HLP_DEF(uint64_t *, iemNativeHlpMemFlatMapDataU64Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2030 { 2031 return iemMemFlatMapDataU64WoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU64WoSafeJmp */ 2032 } 2033 2034 2035 /** 2036 * Used by TB code to map unsigned 64-bit data readonly w/ flat address. 2037 */ 2038 IEM_DECL_NATIVE_HLP_DEF(uint64_t const *, iemNativeHlpMemFlatMapDataU64Ro,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2039 { 2040 return iemMemFlatMapDataU64RoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU64RoSafeJmp */ 2041 } 2042 2043 2044 /** 2045 * Used by TB code to map 80-bit float data writeonly w/ flat address. 2046 */ 2047 IEM_DECL_NATIVE_HLP_DEF(RTFLOAT80U *, iemNativeHlpMemFlatMapDataR80Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2048 { 2049 return iemMemFlatMapDataR80WoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataR80WoSafeJmp */ 2050 } 2051 2052 2053 /** 2054 * Used by TB code to map 80-bit BCD data writeonly w/ flat address. 2055 */ 2056 IEM_DECL_NATIVE_HLP_DEF(RTPBCD80U *, iemNativeHlpMemFlatMapDataD80Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2057 { 2058 return iemMemFlatMapDataD80WoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataD80WoSafeJmp */ 2059 } 2060 2061 2062 /** 2063 * Used by TB code to map unsigned 128-bit data read-write w/ flat address. 2064 */ 2065 IEM_DECL_NATIVE_HLP_DEF(RTUINT128U *, iemNativeHlpMemFlatMapDataU128Rw,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2066 { 2067 return iemMemFlatMapDataU128RwJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU128RwSafeJmp */ 2068 } 2069 2070 2071 /** 2072 * Used by TB code to map unsigned 128-bit data writeonly w/ flat address. 2073 */ 2074 IEM_DECL_NATIVE_HLP_DEF(RTUINT128U *, iemNativeHlpMemFlatMapDataU128Wo,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2075 { 2076 return iemMemFlatMapDataU128WoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU128WoSafeJmp */ 2077 } 2078 2079 2080 /** 2081 * Used by TB code to map unsigned 128-bit data readonly w/ flat address. 2082 */ 2083 IEM_DECL_NATIVE_HLP_DEF(RTUINT128U const *, iemNativeHlpMemFlatMapDataU128Ro,(PVMCPUCC pVCpu, uint8_t *pbUnmapInfo, RTGCPTR GCPtrMem)) 2084 { 2085 return iemMemFlatMapDataU128RoJmp(pVCpu, pbUnmapInfo, GCPtrMem); /** @todo use iemMemFlatMapDataU128RoSafeJmp */ 2086 } 1795 2087 1796 2088 … … 8239 8531 8240 8532 8533 #define IEM_MC_MEM_MAP_U16_RW(a_pu16Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8534 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu16Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(uint16_t), \ 8535 IEM_ACCESS_TYPE_READ | IEM_ACCESS_TYPE_WRITE, sizeof(uint16_t) - 1 /*fAlignMask*/, \ 8536 (uintptr_t)iemNativeHlpMemMapDataU16Rw, pCallEntry->idxInstr) 8537 8538 #define IEM_MC_MEM_MAP_U16_WO(a_pu16Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8539 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu16Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(uint16_t), \ 8540 IEM_ACCESS_TYPE_WRITE, sizeof(uint16_t) - 1 /*fAlignMask*/, \ 8541 (uintptr_t)iemNativeHlpMemMapDataU16Wo, pCallEntry->idxInstr) \ 8542 8543 #define IEM_MC_MEM_MAP_U16_RO(a_pu16Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8544 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu16Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(uint16_t), \ 8545 IEM_ACCESS_TYPE_READ, sizeof(uint16_t) - 1 /*fAlignMask*/, \ 8546 (uintptr_t)iemNativeHlpMemMapDataU16Ro, pCallEntry->idxInstr) 8547 8548 #define IEM_MC_MEM_MAP_I16_WO(a_pi16Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8549 off = iemNativeEmitMemMapCommon(pReNative, off, a_pi16Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(int16_t), \ 8550 IEM_ACCESS_TYPE_WRITE, sizeof(uint16_t) - 1 /*fAlignMask*/, \ 8551 (uintptr_t)iemNativeHlpMemMapDataU16Wo, pCallEntry->idxInstr) \ 8552 8553 8554 #define IEM_MC_MEM_MAP_U32_RW(a_pu32Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8555 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu32Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(uint32_t), \ 8556 IEM_ACCESS_TYPE_READ | IEM_ACCESS_TYPE_WRITE, sizeof(uint32_t) - 1 /*fAlignMask*/, \ 8557 (uintptr_t)iemNativeHlpMemMapDataU32Rw, pCallEntry->idxInstr) 8558 8559 #define IEM_MC_MEM_MAP_U32_WO(a_pu32Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8560 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu32Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(uint32_t), \ 8561 IEM_ACCESS_TYPE_WRITE, sizeof(uint32_t) - 1 /*fAlignMask*/, \ 8562 (uintptr_t)iemNativeHlpMemMapDataU32Wo, pCallEntry->idxInstr) \ 8563 8564 #define IEM_MC_MEM_MAP_U32_RO(a_pu32Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8565 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu32Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(uint32_t), \ 8566 IEM_ACCESS_TYPE_READ, sizeof(uint32_t) - 1 /*fAlignMask*/, \ 8567 (uintptr_t)iemNativeHlpMemMapDataU32Ro, pCallEntry->idxInstr) 8568 8569 #define IEM_MC_MEM_MAP_I32_WO(a_pi32Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8570 off = iemNativeEmitMemMapCommon(pReNative, off, a_pi32Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(int32_t), \ 8571 IEM_ACCESS_TYPE_WRITE, sizeof(uint32_t) - 1 /*fAlignMask*/, \ 8572 (uintptr_t)iemNativeHlpMemMapDataU32Wo, pCallEntry->idxInstr) \ 8573 8574 8575 #define IEM_MC_MEM_MAP_U64_RW(a_pu64Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8576 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu64Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(uint64_t), \ 8577 IEM_ACCESS_TYPE_READ | IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8578 (uintptr_t)iemNativeHlpMemMapDataU64Rw, pCallEntry->idxInstr) 8579 8580 #define IEM_MC_MEM_MAP_U64_WO(a_pu64Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8581 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu64Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(uint64_t), \ 8582 IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8583 (uintptr_t)iemNativeHlpMemMapDataU64Wo, pCallEntry->idxInstr) \ 8584 8585 #define IEM_MC_MEM_MAP_U64_RO(a_pu64Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8586 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu64Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(uint64_t), \ 8587 IEM_ACCESS_TYPE_READ, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8588 (uintptr_t)iemNativeHlpMemMapDataU64Ro, pCallEntry->idxInstr) 8589 8590 #define IEM_MC_MEM_MAP_I64_WO(a_pi64Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8591 off = iemNativeEmitMemMapCommon(pReNative, off, a_pi64Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(int64_t), \ 8592 IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8593 (uintptr_t)iemNativeHlpMemMapDataU64Wo, pCallEntry->idxInstr) \ 8594 8595 8596 #define IEM_MC_MEM_MAP_R80_WO(a_pr80Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8597 off = iemNativeEmitMemMapCommon(pReNative, off, a_pr80Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(RTFLOAT80U), \ 8598 IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8599 (uintptr_t)iemNativeHlpMemMapDataR80Wo, pCallEntry->idxInstr) \ 8600 8601 #define IEM_MC_MEM_MAP_D80_WO(a_pd80Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8602 off = iemNativeEmitMemMapCommon(pReNative, off, a_pd80Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(RTFLOAT80U), \ 8603 IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, /** @todo check BCD align */ \ 8604 (uintptr_t)iemNativeHlpMemMapDataD80Wo, pCallEntry->idxInstr) \ 8605 8606 8607 #define IEM_MC_MEM_MAP_U128_RW(a_pu128Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8608 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu128Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(RTUINT128U), \ 8609 IEM_ACCESS_TYPE_READ | IEM_ACCESS_TYPE_WRITE, sizeof(RTUINT128U) - 1 /*fAlignMask*/, \ 8610 (uintptr_t)iemNativeHlpMemMapDataU128Rw, pCallEntry->idxInstr) 8611 8612 #define IEM_MC_MEM_MAP_U128_WO(a_pu128Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8613 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu128Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(RTUINT128U), \ 8614 IEM_ACCESS_TYPE_WRITE, sizeof(RTUINT128U) - 1 /*fAlignMask*/, \ 8615 (uintptr_t)iemNativeHlpMemMapDataU128Wo, pCallEntry->idxInstr) \ 8616 8617 #define IEM_MC_MEM_MAP_U128_RO(a_pu128Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem) \ 8618 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu128Mem, a_bUnmapInfo, a_iSeg, a_GCPtrMem, sizeof(RTUINT128U), \ 8619 IEM_ACCESS_TYPE_READ, sizeof(RTUINT128U) - 1 /*fAlignMask*/, \ 8620 (uintptr_t)iemNativeHlpMemMapDataU128Ro, pCallEntry->idxInstr) 8621 8622 8623 8624 #define IEM_MC_MEM_FLAT_MAP_U8_RW(a_pu8Mem, a_bUnmapInfo, a_GCPtrMem) \ 8625 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu8Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint8_t), \ 8626 IEM_ACCESS_TYPE_READ | IEM_ACCESS_TYPE_WRITE, 0 /*fAlignMask*/, \ 8627 (uintptr_t)iemNativeHlpMemFlatMapDataU8Rw, pCallEntry->idxInstr) 8628 8629 #define IEM_MC_MEM_FLAT_MAP_U8_WO(a_pu8Mem, a_bUnmapInfo, a_GCPtrMem) \ 8630 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu8Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint8_t), \ 8631 IEM_ACCESS_TYPE_WRITE, 0 /*fAlignMask*/, \ 8632 (uintptr_t)iemNativeHlpMemFlatMapDataU8Wo, pCallEntry->idxInstr) \ 8633 8634 #define IEM_MC_MEM_FLAT_MAP_U8_RO(a_pu8Mem, a_bUnmapInfo, a_GCPtrMem) \ 8635 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu8Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint8_t), \ 8636 IEM_ACCESS_TYPE_READ, 0 /*fAlignMask*/, \ 8637 (uintptr_t)iemNativeHlpMemFlatMapDataU8Ro, pCallEntry->idxInstr) 8638 8639 8640 #define IEM_MC_MEM_FLAT_MAP_U16_RW(a_pu16Mem, a_bUnmapInfo, a_GCPtrMem) \ 8641 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu16Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint16_t), \ 8642 IEM_ACCESS_TYPE_READ | IEM_ACCESS_TYPE_WRITE, sizeof(uint16_t) - 1 /*fAlignMask*/, \ 8643 (uintptr_t)iemNativeHlpMemFlatMapDataU16Rw, pCallEntry->idxInstr) 8644 8645 #define IEM_MC_MEM_FLAT_MAP_U16_WO(a_pu16Mem, a_bUnmapInfo, a_GCPtrMem) \ 8646 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu16Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint16_t), \ 8647 IEM_ACCESS_TYPE_WRITE, sizeof(uint16_t) - 1 /*fAlignMask*/, \ 8648 (uintptr_t)iemNativeHlpMemFlatMapDataU16Wo, pCallEntry->idxInstr) \ 8649 8650 #define IEM_MC_MEM_FLAT_MAP_U16_RO(a_pu16Mem, a_bUnmapInfo, a_GCPtrMem) \ 8651 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu16Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint16_t), \ 8652 IEM_ACCESS_TYPE_READ, sizeof(uint16_t) - 1 /*fAlignMask*/, \ 8653 (uintptr_t)iemNativeHlpMemFlatMapDataU16Ro, pCallEntry->idxInstr) 8654 8655 #define IEM_MC_MEM_FLAT_MAP_I16_WO(a_pi16Mem, a_bUnmapInfo, a_GCPtrMem) \ 8656 off = iemNativeEmitMemMapCommon(pReNative, off, a_pi16Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(int16_t), \ 8657 IEM_ACCESS_TYPE_WRITE, sizeof(uint16_t) - 1 /*fAlignMask*/, \ 8658 (uintptr_t)iemNativeHlpMemFlatMapDataU16Wo, pCallEntry->idxInstr) \ 8659 8660 8661 #define IEM_MC_MEM_FLAT_MAP_U32_RW(a_pu32Mem, a_bUnmapInfo, a_GCPtrMem) \ 8662 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu32Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint32_t), \ 8663 IEM_ACCESS_TYPE_READ | IEM_ACCESS_TYPE_WRITE, sizeof(uint32_t) - 1 /*fAlignMask*/, \ 8664 (uintptr_t)iemNativeHlpMemFlatMapDataU32Rw, pCallEntry->idxInstr) 8665 8666 #define IEM_MC_MEM_FLAT_MAP_U32_WO(a_pu32Mem, a_bUnmapInfo, a_GCPtrMem) \ 8667 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu32Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint32_t), \ 8668 IEM_ACCESS_TYPE_WRITE, sizeof(uint32_t) - 1 /*fAlignMask*/, \ 8669 (uintptr_t)iemNativeHlpMemFlatMapDataU32Wo, pCallEntry->idxInstr) \ 8670 8671 #define IEM_MC_MEM_FLAT_MAP_U32_RO(a_pu32Mem, a_bUnmapInfo, a_GCPtrMem) \ 8672 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu32Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint32_t), \ 8673 IEM_ACCESS_TYPE_READ, sizeof(uint32_t) - 1 /*fAlignMask*/, \ 8674 (uintptr_t)iemNativeHlpMemFlatMapDataU32Ro, pCallEntry->idxInstr) 8675 8676 #define IEM_MC_MEM_FLAT_MAP_I32_WO(a_pi32Mem, a_bUnmapInfo, a_GCPtrMem) \ 8677 off = iemNativeEmitMemMapCommon(pReNative, off, a_pi32Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(int32_t), \ 8678 IEM_ACCESS_TYPE_WRITE, sizeof(uint32_t) - 1 /*fAlignMask*/, \ 8679 (uintptr_t)iemNativeHlpMemFlatMapDataU32Wo, pCallEntry->idxInstr) \ 8680 8681 8682 #define IEM_MC_MEM_FLAT_MAP_U64_RW(a_pu64Mem, a_bUnmapInfo, a_GCPtrMem) \ 8683 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu64Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint64_t), \ 8684 IEM_ACCESS_TYPE_READ | IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8685 (uintptr_t)iemNativeHlpMemFlatMapDataU64Rw, pCallEntry->idxInstr) 8686 8687 #define IEM_MC_MEM_FLAT_MAP_U64_WO(a_pu64Mem, a_bUnmapInfo, a_GCPtrMem) \ 8688 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu64Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint64_t), \ 8689 IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8690 (uintptr_t)iemNativeHlpMemFlatMapDataU64Wo, pCallEntry->idxInstr) \ 8691 8692 #define IEM_MC_MEM_FLAT_MAP_U64_RO(a_pu64Mem, a_bUnmapInfo, a_GCPtrMem) \ 8693 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu64Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(uint64_t), \ 8694 IEM_ACCESS_TYPE_READ, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8695 (uintptr_t)iemNativeHlpMemFlatMapDataU64Ro, pCallEntry->idxInstr) 8696 8697 #define IEM_MC_MEM_FLAT_MAP_I64_WO(a_pi64Mem, a_bUnmapInfo, a_GCPtrMem) \ 8698 off = iemNativeEmitMemMapCommon(pReNative, off, a_pi64Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(int64_t), \ 8699 IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8700 (uintptr_t)iemNativeHlpMemFlatMapDataU64Wo, pCallEntry->idxInstr) \ 8701 8702 8703 #define IEM_MC_MEM_FLAT_MAP_R80_WO(a_pr80Mem, a_bUnmapInfo, a_GCPtrMem) \ 8704 off = iemNativeEmitMemMapCommon(pReNative, off, a_pr80Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(RTFLOAT80U), \ 8705 IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, \ 8706 (uintptr_t)iemNativeHlpMemFlatMapDataR80Wo, pCallEntry->idxInstr) \ 8707 8708 #define IEM_MC_MEM_FLAT_MAP_D80_WO(a_pd80Mem, a_bUnmapInfo, a_GCPtrMem) \ 8709 off = iemNativeEmitMemMapCommon(pReNative, off, a_pd80Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(RTFLOAT80U), \ 8710 IEM_ACCESS_TYPE_WRITE, sizeof(uint64_t) - 1 /*fAlignMask*/, /** @todo check BCD align */ \ 8711 (uintptr_t)iemNativeHlpMemFlatMapDataD80Wo, pCallEntry->idxInstr) \ 8712 8713 8714 #define IEM_MC_MEM_FLAT_MAP_U128_RW(a_pu128Mem, a_bUnmapInfo, a_GCPtrMem) \ 8715 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu128Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(RTUINT128U), \ 8716 IEM_ACCESS_TYPE_READ | IEM_ACCESS_TYPE_WRITE, sizeof(RTUINT128U) - 1 /*fAlignMask*/, \ 8717 (uintptr_t)iemNativeHlpMemFlatMapDataU128Rw, pCallEntry->idxInstr) 8718 8719 #define IEM_MC_MEM_FLAT_MAP_U128_WO(a_pu128Mem, a_bUnmapInfo, a_GCPtrMem) \ 8720 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu128Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(RTUINT128U), \ 8721 IEM_ACCESS_TYPE_WRITE, sizeof(RTUINT128U) - 1 /*fAlignMask*/, \ 8722 (uintptr_t)iemNativeHlpMemFlatMapDataU128Wo, pCallEntry->idxInstr) \ 8723 8724 #define IEM_MC_MEM_FLAT_MAP_U128_RO(a_pu128Mem, a_bUnmapInfo, a_GCPtrMem) \ 8725 off = iemNativeEmitMemMapCommon(pReNative, off, a_pu128Mem, a_bUnmapInfo, UINT8_MAX, a_GCPtrMem, sizeof(RTUINT128U), \ 8726 IEM_ACCESS_TYPE_READ, sizeof(RTUINT128U) - 1 /*fAlignMask*/, \ 8727 (uintptr_t)iemNativeHlpMemFlatMapDataU128Ro, pCallEntry->idxInstr) 8728 8729 8241 8730 DECL_INLINE_THROW(uint32_t) 8242 8731 iemNativeEmitMemMapCommon(PIEMRECOMPILERSTATE pReNative, uint32_t off, uint8_t idxVarMem, uint8_t idxVarUnmapInfo, … … 8264 8753 Assert(iSegReg < 6 || iSegReg == UINT8_MAX); 8265 8754 8266 Assert(cbMem == 1 || cbMem == 2 || cbMem == 4 || cbMem == 8 || cbMem == 10 || cbMem == 16 || cbMem == 32 || cbMem == 64);8267 8755 AssertCompile(IEMNATIVE_CALL_ARG_GREG_COUNT >= 4); 8268 8756 … … 8284 8772 { 8285 8773 Assert(iSegReg == UINT8_MAX); 8286 #if 08287 8774 switch (cbMem) 8288 8775 { 8289 case 1: Assert(pfnFunction == (fFetch ? (uintptr_t)iemNativeHlpMemFlatFetchDataU8 : (uintptr_t)iemNativeHlpMemFlatStoreDataU8 )); break; 8290 case 2: Assert(pfnFunction == (fFetch ? (uintptr_t)iemNativeHlpMemFlatFetchDataU16 : (uintptr_t)iemNativeHlpMemFlatStoreDataU16)); break; 8291 case 4: Assert(pfnFunction == (fFetch ? (uintptr_t)iemNativeHlpMemFlatFetchDataU32 : (uintptr_t)iemNativeHlpMemFlatStoreDataU32)); break; 8292 case 8: Assert(pfnFunction == (fFetch ? (uintptr_t)iemNativeHlpMemFlatFetchDataU64 : (uintptr_t)iemNativeHlpMemFlatStoreDataU64)); break; 8776 case 1: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemFlatMapDataU8)); break; 8777 case 2: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemFlatMapDataU16)); break; 8778 case 4: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemFlatMapDataU32)); break; 8779 case 8: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemFlatMapDataU64)); break; 8780 case 10: 8781 Assert( pfnFunction == (uintptr_t)iemNativeHlpMemFlatMapDataR80Wo 8782 || pfnFunction == (uintptr_t)iemNativeHlpMemFlatMapDataD80Wo); 8783 Assert((fAccess & IEM_ACCESS_TYPE_MASK) == IEM_ACCESS_TYPE_WRITE); 8784 break; 8785 case 16: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemFlatMapDataU128)); break; 8786 # if 0 8787 case 32: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemFlatMapDataU256)); break; 8788 case 64: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemFlatMapDataU512)); break; 8789 # endif 8790 default: AssertFailed(); break; 8293 8791 } 8294 #endif8295 8792 } 8296 8793 else … … 8300 8797 { 8301 8798 case 1: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemMapDataU8)); break; 8302 #if 08303 8799 case 2: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemMapDataU16)); break; 8304 8800 case 4: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemMapDataU32)); break; 8305 8801 case 8: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemMapDataU64)); break; 8306 case 10: Assert( pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemMapDataR80) 8307 || pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemMapDataD80) ); break; 8802 case 10: 8803 Assert( pfnFunction == (uintptr_t)iemNativeHlpMemMapDataR80Wo 8804 || pfnFunction == (uintptr_t)iemNativeHlpMemMapDataD80Wo); 8805 Assert((fAccess & IEM_ACCESS_TYPE_MASK) == IEM_ACCESS_TYPE_WRITE); 8806 break; 8308 8807 case 16: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemMapDataU128)); break; 8808 # if 0 8309 8809 case 32: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemMapDataU256)); break; 8310 8810 case 64: Assert(pfnFunction == IEM_MAP_HLP_FN(fAccess, iemNativeHlpMemMapDataU512)); break; 8311 #endif 8811 # endif 8812 default: AssertFailed(); break; 8312 8813 } 8313 8814 } 8815 # undef IEM_MAP_HLP_FN 8314 8816 #endif 8315 8817
Note:
See TracChangeset
for help on using the changeset viewer.