diff --git a/src/soc/intel/apollolake/Kconfig b/src/soc/intel/apollolake/Kconfig index 4a03a6c2c5..8cac151640 100644 --- a/src/soc/intel/apollolake/Kconfig +++ b/src/soc/intel/apollolake/Kconfig @@ -11,6 +11,7 @@ config SOC_INTEL_GLK select SOC_INTEL_COMMON_BLOCK_SGX select SOC_INTEL_COMMON_BLOCK_GSPI_VERSION_2 select IDT_IN_EVERY_STAGE + select PAGING_IN_CACHE_AS_RAM help Intel GLK support @@ -383,4 +384,9 @@ config SOC_INTEL_COMMON_BLOCK_GSPI_MAX int default 3 +# Don't include the early page tables in RW_A or RW_B cbfs regions +config RO_REGION_ONLY + string + default "pdpt pt" + endif diff --git a/src/soc/intel/apollolake/Makefile.inc b/src/soc/intel/apollolake/Makefile.inc index 65df55900d..5c060ada7a 100644 --- a/src/soc/intel/apollolake/Makefile.inc +++ b/src/soc/intel/apollolake/Makefile.inc @@ -107,6 +107,16 @@ endif # Since FSP-M runs in CAR we need to relocate it to a specific address $(CONFIG_FSP_M_CBFS)-options := -b $(CONFIG_FSP_M_ADDR) +# Handle GLK paging requirements +ifeq ($(CONFIG_PAGING_IN_CACHE_AS_RAM),y) +cbfs-files-y += pt +pt-file := pt.c:struct +pt-type := raw +cbfs-files-y += pdpt +pdpt-file := pdpt.c:struct +pdpt-type := raw +endif + ifeq ($(CONFIG_NEED_LBP2),y) files_added:: $(CBFSTOOL) $(obj)/coreboot.rom write -r $(CONFIG_LBP2_FMAP_NAME) -f $(CONFIG_LBP2_FILE_NAME) --fill-upward diff --git a/src/soc/intel/apollolake/bootblock/bootblock.c b/src/soc/intel/apollolake/bootblock/bootblock.c index 63b023d26d..2e51d48ebf 100644 --- a/src/soc/intel/apollolake/bootblock/bootblock.c +++ b/src/soc/intel/apollolake/bootblock/bootblock.c @@ -16,6 +16,7 @@ */ #include #include +#include #include #include #include @@ -116,4 +117,13 @@ void bootblock_soc_early_init(void) reg = inl(ACPI_BASE_ADDRESS + TCO1_CNT); reg |= TCO_TMR_HLT; outl(reg, ACPI_BASE_ADDRESS + TCO1_CNT); + + /* Use Nx and paging to prevent the frontend from writing back dirty + * cache-as-ram lines to backing store that doesn't exist when the L1I + * speculatively fetches a line that is sitting in the L1D. */ + if (IS_ENABLED(CONFIG_PAGING_IN_CACHE_AS_RAM)) { + paging_set_nxe(1); + paging_set_default_pat(); + paging_enable_for_car("pdpt", "pt"); + } } diff --git a/src/soc/intel/apollolake/glk_page_map.txt b/src/soc/intel/apollolake/glk_page_map.txt new file mode 100644 index 0000000000..e4c51b0d50 --- /dev/null +++ b/src/soc/intel/apollolake/glk_page_map.txt @@ -0,0 +1,13 @@ +0xd0000000, 0x100000000, UC, NX # All of MMIO +# Maximum 16MiB of mmio SPI flash decode. +0xff000000, 0x100000000, WP, # memory-mapped SPI +# MMIO XIP bootblock C_ENV_BOOTBLOCK_SIZE +0xffff8000, 0x100000000, WP, # XIP bootblock +# DCACHE_RAM_BASE + DCACHE_RAM_SIZE +0xfef00000, 0xff000000, WB, NX # CAR +# VERSTAGE_ADDR ~63KiB +0xfef40000, 0xfefc0000, WB, # verstage +# ROMSTAGE_ADDR ~68KiB +0xfef20000, 0xfefc0000, WB, # romstage +# FSP_M_ADDR ~408 KiB (non-debug) +0xfef40000, 0xfefc0000, WB, # fsp-m diff --git a/src/soc/intel/apollolake/pdpt.c b/src/soc/intel/apollolake/pdpt.c new file mode 100644 index 0000000000..38852f1365 --- /dev/null +++ b/src/soc/intel/apollolake/pdpt.c @@ -0,0 +1,37 @@ +/* + * Copyright 2018 Generated Code + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +/* Generated by: + util/x86/x86_page_tables --iomap_file=src/soc/intel/apollolake/glk_page_map.txt --metadata_base_address=0xfef00000 --pdpt_output_c_file=src/soc/intel/apollolake/pdpt.c --pt_output_c_file=src/soc/intel/apollolake/pt.c + */ +#include +uint64_t pdptes[] = { + /* Page 0 */ + [0] = 0x00000000fef00001ULL, + [1] = 0x00000000fef01001ULL, + [2] = 0x00000000fef02001ULL, + [3] = 0x00000000fef03001ULL, +}; diff --git a/src/soc/intel/apollolake/pt.c b/src/soc/intel/apollolake/pt.c new file mode 100644 index 0000000000..053f0a2008 --- /dev/null +++ b/src/soc/intel/apollolake/pt.c @@ -0,0 +1,937 @@ +/* + * Copyright 2018 Generated Code + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +/* Generated by: + util/x86/x86_page_tables --iomap_file=src/soc/intel/apollolake/glk_page_map.txt --metadata_base_address=0xfef00000 --pdpt_output_c_file=src/soc/intel/apollolake/pdpt.c --pt_output_c_file=src/soc/intel/apollolake/pt.c + */ +#include +uint64_t page_tables[] = { + /* Page 0 */ + [0] = 0x0000000000000000ULL, + /* Page 1 */ + [512] = 0x0000000000000000ULL, + /* Page 2 */ + [1024] = 0x0000000000000000ULL, + /* Page 3 */ + [1536] = 0x0000000000000000ULL, + [1664] = 0x80000000d00000fbULL, + [1665] = 0x80000000d02000fbULL, + [1666] = 0x80000000d04000fbULL, + [1667] = 0x80000000d06000fbULL, + [1668] = 0x80000000d08000fbULL, + [1669] = 0x80000000d0a000fbULL, + [1670] = 0x80000000d0c000fbULL, + [1671] = 0x80000000d0e000fbULL, + [1672] = 0x80000000d10000fbULL, + [1673] = 0x80000000d12000fbULL, + [1674] = 0x80000000d14000fbULL, + [1675] = 0x80000000d16000fbULL, + [1676] = 0x80000000d18000fbULL, + [1677] = 0x80000000d1a000fbULL, + [1678] = 0x80000000d1c000fbULL, + [1679] = 0x80000000d1e000fbULL, + [1680] = 0x80000000d20000fbULL, + [1681] = 0x80000000d22000fbULL, + [1682] = 0x80000000d24000fbULL, + [1683] = 0x80000000d26000fbULL, + [1684] = 0x80000000d28000fbULL, + [1685] = 0x80000000d2a000fbULL, + [1686] = 0x80000000d2c000fbULL, + [1687] = 0x80000000d2e000fbULL, + [1688] = 0x80000000d30000fbULL, + [1689] = 0x80000000d32000fbULL, + [1690] = 0x80000000d34000fbULL, + [1691] = 0x80000000d36000fbULL, + [1692] = 0x80000000d38000fbULL, + [1693] = 0x80000000d3a000fbULL, + [1694] = 0x80000000d3c000fbULL, + [1695] = 0x80000000d3e000fbULL, + [1696] = 0x80000000d40000fbULL, + [1697] = 0x80000000d42000fbULL, + [1698] = 0x80000000d44000fbULL, + [1699] = 0x80000000d46000fbULL, + [1700] = 0x80000000d48000fbULL, + [1701] = 0x80000000d4a000fbULL, + [1702] = 0x80000000d4c000fbULL, + [1703] = 0x80000000d4e000fbULL, + [1704] = 0x80000000d50000fbULL, + [1705] = 0x80000000d52000fbULL, + [1706] = 0x80000000d54000fbULL, + [1707] = 0x80000000d56000fbULL, + [1708] = 0x80000000d58000fbULL, + [1709] = 0x80000000d5a000fbULL, + [1710] = 0x80000000d5c000fbULL, + [1711] = 0x80000000d5e000fbULL, + [1712] = 0x80000000d60000fbULL, + [1713] = 0x80000000d62000fbULL, + [1714] = 0x80000000d64000fbULL, + [1715] = 0x80000000d66000fbULL, + [1716] = 0x80000000d68000fbULL, + [1717] = 0x80000000d6a000fbULL, + [1718] = 0x80000000d6c000fbULL, + [1719] = 0x80000000d6e000fbULL, + [1720] = 0x80000000d70000fbULL, + [1721] = 0x80000000d72000fbULL, + [1722] = 0x80000000d74000fbULL, + [1723] = 0x80000000d76000fbULL, + [1724] = 0x80000000d78000fbULL, + [1725] = 0x80000000d7a000fbULL, + [1726] = 0x80000000d7c000fbULL, + [1727] = 0x80000000d7e000fbULL, + [1728] = 0x80000000d80000fbULL, + [1729] = 0x80000000d82000fbULL, + [1730] = 0x80000000d84000fbULL, + [1731] = 0x80000000d86000fbULL, + [1732] = 0x80000000d88000fbULL, + [1733] = 0x80000000d8a000fbULL, + [1734] = 0x80000000d8c000fbULL, + [1735] = 0x80000000d8e000fbULL, + [1736] = 0x80000000d90000fbULL, + [1737] = 0x80000000d92000fbULL, + [1738] = 0x80000000d94000fbULL, + [1739] = 0x80000000d96000fbULL, + [1740] = 0x80000000d98000fbULL, + [1741] = 0x80000000d9a000fbULL, + [1742] = 0x80000000d9c000fbULL, + [1743] = 0x80000000d9e000fbULL, + [1744] = 0x80000000da0000fbULL, + [1745] = 0x80000000da2000fbULL, + [1746] = 0x80000000da4000fbULL, + [1747] = 0x80000000da6000fbULL, + [1748] = 0x80000000da8000fbULL, + [1749] = 0x80000000daa000fbULL, + [1750] = 0x80000000dac000fbULL, + [1751] = 0x80000000dae000fbULL, + [1752] = 0x80000000db0000fbULL, + [1753] = 0x80000000db2000fbULL, + [1754] = 0x80000000db4000fbULL, + [1755] = 0x80000000db6000fbULL, + [1756] = 0x80000000db8000fbULL, + [1757] = 0x80000000dba000fbULL, + [1758] = 0x80000000dbc000fbULL, + [1759] = 0x80000000dbe000fbULL, + [1760] = 0x80000000dc0000fbULL, + [1761] = 0x80000000dc2000fbULL, + [1762] = 0x80000000dc4000fbULL, + [1763] = 0x80000000dc6000fbULL, + [1764] = 0x80000000dc8000fbULL, + [1765] = 0x80000000dca000fbULL, + [1766] = 0x80000000dcc000fbULL, + [1767] = 0x80000000dce000fbULL, + [1768] = 0x80000000dd0000fbULL, + [1769] = 0x80000000dd2000fbULL, + [1770] = 0x80000000dd4000fbULL, + [1771] = 0x80000000dd6000fbULL, + [1772] = 0x80000000dd8000fbULL, + [1773] = 0x80000000dda000fbULL, + [1774] = 0x80000000ddc000fbULL, + [1775] = 0x80000000dde000fbULL, + [1776] = 0x80000000de0000fbULL, + [1777] = 0x80000000de2000fbULL, + [1778] = 0x80000000de4000fbULL, + [1779] = 0x80000000de6000fbULL, + [1780] = 0x80000000de8000fbULL, + [1781] = 0x80000000dea000fbULL, + [1782] = 0x80000000dec000fbULL, + [1783] = 0x80000000dee000fbULL, + [1784] = 0x80000000df0000fbULL, + [1785] = 0x80000000df2000fbULL, + [1786] = 0x80000000df4000fbULL, + [1787] = 0x80000000df6000fbULL, + [1788] = 0x80000000df8000fbULL, + [1789] = 0x80000000dfa000fbULL, + [1790] = 0x80000000dfc000fbULL, + [1791] = 0x80000000dfe000fbULL, + [1792] = 0x80000000e00000fbULL, + [1793] = 0x80000000e02000fbULL, + [1794] = 0x80000000e04000fbULL, + [1795] = 0x80000000e06000fbULL, + [1796] = 0x80000000e08000fbULL, + [1797] = 0x80000000e0a000fbULL, + [1798] = 0x80000000e0c000fbULL, + [1799] = 0x80000000e0e000fbULL, + [1800] = 0x80000000e10000fbULL, + [1801] = 0x80000000e12000fbULL, + [1802] = 0x80000000e14000fbULL, + [1803] = 0x80000000e16000fbULL, + [1804] = 0x80000000e18000fbULL, + [1805] = 0x80000000e1a000fbULL, + [1806] = 0x80000000e1c000fbULL, + [1807] = 0x80000000e1e000fbULL, + [1808] = 0x80000000e20000fbULL, + [1809] = 0x80000000e22000fbULL, + [1810] = 0x80000000e24000fbULL, + [1811] = 0x80000000e26000fbULL, + [1812] = 0x80000000e28000fbULL, + [1813] = 0x80000000e2a000fbULL, + [1814] = 0x80000000e2c000fbULL, + [1815] = 0x80000000e2e000fbULL, + [1816] = 0x80000000e30000fbULL, + [1817] = 0x80000000e32000fbULL, + [1818] = 0x80000000e34000fbULL, + [1819] = 0x80000000e36000fbULL, + [1820] = 0x80000000e38000fbULL, + [1821] = 0x80000000e3a000fbULL, + [1822] = 0x80000000e3c000fbULL, + [1823] = 0x80000000e3e000fbULL, + [1824] = 0x80000000e40000fbULL, + [1825] = 0x80000000e42000fbULL, + [1826] = 0x80000000e44000fbULL, + [1827] = 0x80000000e46000fbULL, + [1828] = 0x80000000e48000fbULL, + [1829] = 0x80000000e4a000fbULL, + [1830] = 0x80000000e4c000fbULL, + [1831] = 0x80000000e4e000fbULL, + [1832] = 0x80000000e50000fbULL, + [1833] = 0x80000000e52000fbULL, + [1834] = 0x80000000e54000fbULL, + [1835] = 0x80000000e56000fbULL, + [1836] = 0x80000000e58000fbULL, + [1837] = 0x80000000e5a000fbULL, + [1838] = 0x80000000e5c000fbULL, + [1839] = 0x80000000e5e000fbULL, + [1840] = 0x80000000e60000fbULL, + [1841] = 0x80000000e62000fbULL, + [1842] = 0x80000000e64000fbULL, + [1843] = 0x80000000e66000fbULL, + [1844] = 0x80000000e68000fbULL, + [1845] = 0x80000000e6a000fbULL, + [1846] = 0x80000000e6c000fbULL, + [1847] = 0x80000000e6e000fbULL, + [1848] = 0x80000000e70000fbULL, + [1849] = 0x80000000e72000fbULL, + [1850] = 0x80000000e74000fbULL, + [1851] = 0x80000000e76000fbULL, + [1852] = 0x80000000e78000fbULL, + [1853] = 0x80000000e7a000fbULL, + [1854] = 0x80000000e7c000fbULL, + [1855] = 0x80000000e7e000fbULL, + [1856] = 0x80000000e80000fbULL, + [1857] = 0x80000000e82000fbULL, + [1858] = 0x80000000e84000fbULL, + [1859] = 0x80000000e86000fbULL, + [1860] = 0x80000000e88000fbULL, + [1861] = 0x80000000e8a000fbULL, + [1862] = 0x80000000e8c000fbULL, + [1863] = 0x80000000e8e000fbULL, + [1864] = 0x80000000e90000fbULL, + [1865] = 0x80000000e92000fbULL, + [1866] = 0x80000000e94000fbULL, + [1867] = 0x80000000e96000fbULL, + [1868] = 0x80000000e98000fbULL, + [1869] = 0x80000000e9a000fbULL, + [1870] = 0x80000000e9c000fbULL, + [1871] = 0x80000000e9e000fbULL, + [1872] = 0x80000000ea0000fbULL, + [1873] = 0x80000000ea2000fbULL, + [1874] = 0x80000000ea4000fbULL, + [1875] = 0x80000000ea6000fbULL, + [1876] = 0x80000000ea8000fbULL, + [1877] = 0x80000000eaa000fbULL, + [1878] = 0x80000000eac000fbULL, + [1879] = 0x80000000eae000fbULL, + [1880] = 0x80000000eb0000fbULL, + [1881] = 0x80000000eb2000fbULL, + [1882] = 0x80000000eb4000fbULL, + [1883] = 0x80000000eb6000fbULL, + [1884] = 0x80000000eb8000fbULL, + [1885] = 0x80000000eba000fbULL, + [1886] = 0x80000000ebc000fbULL, + [1887] = 0x80000000ebe000fbULL, + [1888] = 0x80000000ec0000fbULL, + [1889] = 0x80000000ec2000fbULL, + [1890] = 0x80000000ec4000fbULL, + [1891] = 0x80000000ec6000fbULL, + [1892] = 0x80000000ec8000fbULL, + [1893] = 0x80000000eca000fbULL, + [1894] = 0x80000000ecc000fbULL, + [1895] = 0x80000000ece000fbULL, + [1896] = 0x80000000ed0000fbULL, + [1897] = 0x80000000ed2000fbULL, + [1898] = 0x80000000ed4000fbULL, + [1899] = 0x80000000ed6000fbULL, + [1900] = 0x80000000ed8000fbULL, + [1901] = 0x80000000eda000fbULL, + [1902] = 0x80000000edc000fbULL, + [1903] = 0x80000000ede000fbULL, + [1904] = 0x80000000ee0000fbULL, + [1905] = 0x80000000ee2000fbULL, + [1906] = 0x80000000ee4000fbULL, + [1907] = 0x80000000ee6000fbULL, + [1908] = 0x80000000ee8000fbULL, + [1909] = 0x80000000eea000fbULL, + [1910] = 0x80000000eec000fbULL, + [1911] = 0x80000000eee000fbULL, + [1912] = 0x80000000ef0000fbULL, + [1913] = 0x80000000ef2000fbULL, + [1914] = 0x80000000ef4000fbULL, + [1915] = 0x80000000ef6000fbULL, + [1916] = 0x80000000ef8000fbULL, + [1917] = 0x80000000efa000fbULL, + [1918] = 0x80000000efc000fbULL, + [1919] = 0x80000000efe000fbULL, + [1920] = 0x80000000f00000fbULL, + [1921] = 0x80000000f02000fbULL, + [1922] = 0x80000000f04000fbULL, + [1923] = 0x80000000f06000fbULL, + [1924] = 0x80000000f08000fbULL, + [1925] = 0x80000000f0a000fbULL, + [1926] = 0x80000000f0c000fbULL, + [1927] = 0x80000000f0e000fbULL, + [1928] = 0x80000000f10000fbULL, + [1929] = 0x80000000f12000fbULL, + [1930] = 0x80000000f14000fbULL, + [1931] = 0x80000000f16000fbULL, + [1932] = 0x80000000f18000fbULL, + [1933] = 0x80000000f1a000fbULL, + [1934] = 0x80000000f1c000fbULL, + [1935] = 0x80000000f1e000fbULL, + [1936] = 0x80000000f20000fbULL, + [1937] = 0x80000000f22000fbULL, + [1938] = 0x80000000f24000fbULL, + [1939] = 0x80000000f26000fbULL, + [1940] = 0x80000000f28000fbULL, + [1941] = 0x80000000f2a000fbULL, + [1942] = 0x80000000f2c000fbULL, + [1943] = 0x80000000f2e000fbULL, + [1944] = 0x80000000f30000fbULL, + [1945] = 0x80000000f32000fbULL, + [1946] = 0x80000000f34000fbULL, + [1947] = 0x80000000f36000fbULL, + [1948] = 0x80000000f38000fbULL, + [1949] = 0x80000000f3a000fbULL, + [1950] = 0x80000000f3c000fbULL, + [1951] = 0x80000000f3e000fbULL, + [1952] = 0x80000000f40000fbULL, + [1953] = 0x80000000f42000fbULL, + [1954] = 0x80000000f44000fbULL, + [1955] = 0x80000000f46000fbULL, + [1956] = 0x80000000f48000fbULL, + [1957] = 0x80000000f4a000fbULL, + [1958] = 0x80000000f4c000fbULL, + [1959] = 0x80000000f4e000fbULL, + [1960] = 0x80000000f50000fbULL, + [1961] = 0x80000000f52000fbULL, + [1962] = 0x80000000f54000fbULL, + [1963] = 0x80000000f56000fbULL, + [1964] = 0x80000000f58000fbULL, + [1965] = 0x80000000f5a000fbULL, + [1966] = 0x80000000f5c000fbULL, + [1967] = 0x80000000f5e000fbULL, + [1968] = 0x80000000f60000fbULL, + [1969] = 0x80000000f62000fbULL, + [1970] = 0x80000000f64000fbULL, + [1971] = 0x80000000f66000fbULL, + [1972] = 0x80000000f68000fbULL, + [1973] = 0x80000000f6a000fbULL, + [1974] = 0x80000000f6c000fbULL, + [1975] = 0x80000000f6e000fbULL, + [1976] = 0x80000000f70000fbULL, + [1977] = 0x80000000f72000fbULL, + [1978] = 0x80000000f74000fbULL, + [1979] = 0x80000000f76000fbULL, + [1980] = 0x80000000f78000fbULL, + [1981] = 0x80000000f7a000fbULL, + [1982] = 0x80000000f7c000fbULL, + [1983] = 0x80000000f7e000fbULL, + [1984] = 0x80000000f80000fbULL, + [1985] = 0x80000000f82000fbULL, + [1986] = 0x80000000f84000fbULL, + [1987] = 0x80000000f86000fbULL, + [1988] = 0x80000000f88000fbULL, + [1989] = 0x80000000f8a000fbULL, + [1990] = 0x80000000f8c000fbULL, + [1991] = 0x80000000f8e000fbULL, + [1992] = 0x80000000f90000fbULL, + [1993] = 0x80000000f92000fbULL, + [1994] = 0x80000000f94000fbULL, + [1995] = 0x80000000f96000fbULL, + [1996] = 0x80000000f98000fbULL, + [1997] = 0x80000000f9a000fbULL, + [1998] = 0x80000000f9c000fbULL, + [1999] = 0x80000000f9e000fbULL, + [2000] = 0x80000000fa0000fbULL, + [2001] = 0x80000000fa2000fbULL, + [2002] = 0x80000000fa4000fbULL, + [2003] = 0x80000000fa6000fbULL, + [2004] = 0x80000000fa8000fbULL, + [2005] = 0x80000000faa000fbULL, + [2006] = 0x80000000fac000fbULL, + [2007] = 0x80000000fae000fbULL, + [2008] = 0x80000000fb0000fbULL, + [2009] = 0x80000000fb2000fbULL, + [2010] = 0x80000000fb4000fbULL, + [2011] = 0x80000000fb6000fbULL, + [2012] = 0x80000000fb8000fbULL, + [2013] = 0x80000000fba000fbULL, + [2014] = 0x80000000fbc000fbULL, + [2015] = 0x80000000fbe000fbULL, + [2016] = 0x80000000fc0000fbULL, + [2017] = 0x80000000fc2000fbULL, + [2018] = 0x80000000fc4000fbULL, + [2019] = 0x80000000fc6000fbULL, + [2020] = 0x80000000fc8000fbULL, + [2021] = 0x80000000fca000fbULL, + [2022] = 0x80000000fcc000fbULL, + [2023] = 0x80000000fce000fbULL, + [2024] = 0x80000000fd0000fbULL, + [2025] = 0x80000000fd2000fbULL, + [2026] = 0x80000000fd4000fbULL, + [2027] = 0x80000000fd6000fbULL, + [2028] = 0x80000000fd8000fbULL, + [2029] = 0x80000000fda000fbULL, + [2030] = 0x80000000fdc000fbULL, + [2031] = 0x80000000fde000fbULL, + [2032] = 0x80000000fe0000fbULL, + [2033] = 0x80000000fe2000fbULL, + [2034] = 0x80000000fe4000fbULL, + [2035] = 0x80000000fe6000fbULL, + [2036] = 0x80000000fe8000fbULL, + [2037] = 0x80000000fea000fbULL, + [2038] = 0x80000000fec000fbULL, + [2039] = 0x00000000fef04023ULL, + [2040] = 0x00000000ff0010a9ULL, + [2041] = 0x00000000ff2010a9ULL, + [2042] = 0x00000000ff4010a9ULL, + [2043] = 0x00000000ff6010a9ULL, + [2044] = 0x00000000ff8010a9ULL, + [2045] = 0x00000000ffa010a9ULL, + [2046] = 0x00000000ffc010a9ULL, + [2047] = 0x00000000ffe010a9ULL, + /* Page 4 */ + [2048] = 0x80000000fee0007bULL, + [2049] = 0x80000000fee0107bULL, + [2050] = 0x80000000fee0207bULL, + [2051] = 0x80000000fee0307bULL, + [2052] = 0x80000000fee0407bULL, + [2053] = 0x80000000fee0507bULL, + [2054] = 0x80000000fee0607bULL, + [2055] = 0x80000000fee0707bULL, + [2056] = 0x80000000fee0807bULL, + [2057] = 0x80000000fee0907bULL, + [2058] = 0x80000000fee0a07bULL, + [2059] = 0x80000000fee0b07bULL, + [2060] = 0x80000000fee0c07bULL, + [2061] = 0x80000000fee0d07bULL, + [2062] = 0x80000000fee0e07bULL, + [2063] = 0x80000000fee0f07bULL, + [2064] = 0x80000000fee1007bULL, + [2065] = 0x80000000fee1107bULL, + [2066] = 0x80000000fee1207bULL, + [2067] = 0x80000000fee1307bULL, + [2068] = 0x80000000fee1407bULL, + [2069] = 0x80000000fee1507bULL, + [2070] = 0x80000000fee1607bULL, + [2071] = 0x80000000fee1707bULL, + [2072] = 0x80000000fee1807bULL, + [2073] = 0x80000000fee1907bULL, + [2074] = 0x80000000fee1a07bULL, + [2075] = 0x80000000fee1b07bULL, + [2076] = 0x80000000fee1c07bULL, + [2077] = 0x80000000fee1d07bULL, + [2078] = 0x80000000fee1e07bULL, + [2079] = 0x80000000fee1f07bULL, + [2080] = 0x80000000fee2007bULL, + [2081] = 0x80000000fee2107bULL, + [2082] = 0x80000000fee2207bULL, + [2083] = 0x80000000fee2307bULL, + [2084] = 0x80000000fee2407bULL, + [2085] = 0x80000000fee2507bULL, + [2086] = 0x80000000fee2607bULL, + [2087] = 0x80000000fee2707bULL, + [2088] = 0x80000000fee2807bULL, + [2089] = 0x80000000fee2907bULL, + [2090] = 0x80000000fee2a07bULL, + [2091] = 0x80000000fee2b07bULL, + [2092] = 0x80000000fee2c07bULL, + [2093] = 0x80000000fee2d07bULL, + [2094] = 0x80000000fee2e07bULL, + [2095] = 0x80000000fee2f07bULL, + [2096] = 0x80000000fee3007bULL, + [2097] = 0x80000000fee3107bULL, + [2098] = 0x80000000fee3207bULL, + [2099] = 0x80000000fee3307bULL, + [2100] = 0x80000000fee3407bULL, + [2101] = 0x80000000fee3507bULL, + [2102] = 0x80000000fee3607bULL, + [2103] = 0x80000000fee3707bULL, + [2104] = 0x80000000fee3807bULL, + [2105] = 0x80000000fee3907bULL, + [2106] = 0x80000000fee3a07bULL, + [2107] = 0x80000000fee3b07bULL, + [2108] = 0x80000000fee3c07bULL, + [2109] = 0x80000000fee3d07bULL, + [2110] = 0x80000000fee3e07bULL, + [2111] = 0x80000000fee3f07bULL, + [2112] = 0x80000000fee4007bULL, + [2113] = 0x80000000fee4107bULL, + [2114] = 0x80000000fee4207bULL, + [2115] = 0x80000000fee4307bULL, + [2116] = 0x80000000fee4407bULL, + [2117] = 0x80000000fee4507bULL, + [2118] = 0x80000000fee4607bULL, + [2119] = 0x80000000fee4707bULL, + [2120] = 0x80000000fee4807bULL, + [2121] = 0x80000000fee4907bULL, + [2122] = 0x80000000fee4a07bULL, + [2123] = 0x80000000fee4b07bULL, + [2124] = 0x80000000fee4c07bULL, + [2125] = 0x80000000fee4d07bULL, + [2126] = 0x80000000fee4e07bULL, + [2127] = 0x80000000fee4f07bULL, + [2128] = 0x80000000fee5007bULL, + [2129] = 0x80000000fee5107bULL, + [2130] = 0x80000000fee5207bULL, + [2131] = 0x80000000fee5307bULL, + [2132] = 0x80000000fee5407bULL, + [2133] = 0x80000000fee5507bULL, + [2134] = 0x80000000fee5607bULL, + [2135] = 0x80000000fee5707bULL, + [2136] = 0x80000000fee5807bULL, + [2137] = 0x80000000fee5907bULL, + [2138] = 0x80000000fee5a07bULL, + [2139] = 0x80000000fee5b07bULL, + [2140] = 0x80000000fee5c07bULL, + [2141] = 0x80000000fee5d07bULL, + [2142] = 0x80000000fee5e07bULL, + [2143] = 0x80000000fee5f07bULL, + [2144] = 0x80000000fee6007bULL, + [2145] = 0x80000000fee6107bULL, + [2146] = 0x80000000fee6207bULL, + [2147] = 0x80000000fee6307bULL, + [2148] = 0x80000000fee6407bULL, + [2149] = 0x80000000fee6507bULL, + [2150] = 0x80000000fee6607bULL, + [2151] = 0x80000000fee6707bULL, + [2152] = 0x80000000fee6807bULL, + [2153] = 0x80000000fee6907bULL, + [2154] = 0x80000000fee6a07bULL, + [2155] = 0x80000000fee6b07bULL, + [2156] = 0x80000000fee6c07bULL, + [2157] = 0x80000000fee6d07bULL, + [2158] = 0x80000000fee6e07bULL, + [2159] = 0x80000000fee6f07bULL, + [2160] = 0x80000000fee7007bULL, + [2161] = 0x80000000fee7107bULL, + [2162] = 0x80000000fee7207bULL, + [2163] = 0x80000000fee7307bULL, + [2164] = 0x80000000fee7407bULL, + [2165] = 0x80000000fee7507bULL, + [2166] = 0x80000000fee7607bULL, + [2167] = 0x80000000fee7707bULL, + [2168] = 0x80000000fee7807bULL, + [2169] = 0x80000000fee7907bULL, + [2170] = 0x80000000fee7a07bULL, + [2171] = 0x80000000fee7b07bULL, + [2172] = 0x80000000fee7c07bULL, + [2173] = 0x80000000fee7d07bULL, + [2174] = 0x80000000fee7e07bULL, + [2175] = 0x80000000fee7f07bULL, + [2176] = 0x80000000fee8007bULL, + [2177] = 0x80000000fee8107bULL, + [2178] = 0x80000000fee8207bULL, + [2179] = 0x80000000fee8307bULL, + [2180] = 0x80000000fee8407bULL, + [2181] = 0x80000000fee8507bULL, + [2182] = 0x80000000fee8607bULL, + [2183] = 0x80000000fee8707bULL, + [2184] = 0x80000000fee8807bULL, + [2185] = 0x80000000fee8907bULL, + [2186] = 0x80000000fee8a07bULL, + [2187] = 0x80000000fee8b07bULL, + [2188] = 0x80000000fee8c07bULL, + [2189] = 0x80000000fee8d07bULL, + [2190] = 0x80000000fee8e07bULL, + [2191] = 0x80000000fee8f07bULL, + [2192] = 0x80000000fee9007bULL, + [2193] = 0x80000000fee9107bULL, + [2194] = 0x80000000fee9207bULL, + [2195] = 0x80000000fee9307bULL, + [2196] = 0x80000000fee9407bULL, + [2197] = 0x80000000fee9507bULL, + [2198] = 0x80000000fee9607bULL, + [2199] = 0x80000000fee9707bULL, + [2200] = 0x80000000fee9807bULL, + [2201] = 0x80000000fee9907bULL, + [2202] = 0x80000000fee9a07bULL, + [2203] = 0x80000000fee9b07bULL, + [2204] = 0x80000000fee9c07bULL, + [2205] = 0x80000000fee9d07bULL, + [2206] = 0x80000000fee9e07bULL, + [2207] = 0x80000000fee9f07bULL, + [2208] = 0x80000000feea007bULL, + [2209] = 0x80000000feea107bULL, + [2210] = 0x80000000feea207bULL, + [2211] = 0x80000000feea307bULL, + [2212] = 0x80000000feea407bULL, + [2213] = 0x80000000feea507bULL, + [2214] = 0x80000000feea607bULL, + [2215] = 0x80000000feea707bULL, + [2216] = 0x80000000feea807bULL, + [2217] = 0x80000000feea907bULL, + [2218] = 0x80000000feeaa07bULL, + [2219] = 0x80000000feeab07bULL, + [2220] = 0x80000000feeac07bULL, + [2221] = 0x80000000feead07bULL, + [2222] = 0x80000000feeae07bULL, + [2223] = 0x80000000feeaf07bULL, + [2224] = 0x80000000feeb007bULL, + [2225] = 0x80000000feeb107bULL, + [2226] = 0x80000000feeb207bULL, + [2227] = 0x80000000feeb307bULL, + [2228] = 0x80000000feeb407bULL, + [2229] = 0x80000000feeb507bULL, + [2230] = 0x80000000feeb607bULL, + [2231] = 0x80000000feeb707bULL, + [2232] = 0x80000000feeb807bULL, + [2233] = 0x80000000feeb907bULL, + [2234] = 0x80000000feeba07bULL, + [2235] = 0x80000000feebb07bULL, + [2236] = 0x80000000feebc07bULL, + [2237] = 0x80000000feebd07bULL, + [2238] = 0x80000000feebe07bULL, + [2239] = 0x80000000feebf07bULL, + [2240] = 0x80000000feec007bULL, + [2241] = 0x80000000feec107bULL, + [2242] = 0x80000000feec207bULL, + [2243] = 0x80000000feec307bULL, + [2244] = 0x80000000feec407bULL, + [2245] = 0x80000000feec507bULL, + [2246] = 0x80000000feec607bULL, + [2247] = 0x80000000feec707bULL, + [2248] = 0x80000000feec807bULL, + [2249] = 0x80000000feec907bULL, + [2250] = 0x80000000feeca07bULL, + [2251] = 0x80000000feecb07bULL, + [2252] = 0x80000000feecc07bULL, + [2253] = 0x80000000feecd07bULL, + [2254] = 0x80000000feece07bULL, + [2255] = 0x80000000feecf07bULL, + [2256] = 0x80000000feed007bULL, + [2257] = 0x80000000feed107bULL, + [2258] = 0x80000000feed207bULL, + [2259] = 0x80000000feed307bULL, + [2260] = 0x80000000feed407bULL, + [2261] = 0x80000000feed507bULL, + [2262] = 0x80000000feed607bULL, + [2263] = 0x80000000feed707bULL, + [2264] = 0x80000000feed807bULL, + [2265] = 0x80000000feed907bULL, + [2266] = 0x80000000feeda07bULL, + [2267] = 0x80000000feedb07bULL, + [2268] = 0x80000000feedc07bULL, + [2269] = 0x80000000feedd07bULL, + [2270] = 0x80000000feede07bULL, + [2271] = 0x80000000feedf07bULL, + [2272] = 0x80000000feee007bULL, + [2273] = 0x80000000feee107bULL, + [2274] = 0x80000000feee207bULL, + [2275] = 0x80000000feee307bULL, + [2276] = 0x80000000feee407bULL, + [2277] = 0x80000000feee507bULL, + [2278] = 0x80000000feee607bULL, + [2279] = 0x80000000feee707bULL, + [2280] = 0x80000000feee807bULL, + [2281] = 0x80000000feee907bULL, + [2282] = 0x80000000feeea07bULL, + [2283] = 0x80000000feeeb07bULL, + [2284] = 0x80000000feeec07bULL, + [2285] = 0x80000000feeed07bULL, + [2286] = 0x80000000feeee07bULL, + [2287] = 0x80000000feeef07bULL, + [2288] = 0x80000000feef007bULL, + [2289] = 0x80000000feef107bULL, + [2290] = 0x80000000feef207bULL, + [2291] = 0x80000000feef307bULL, + [2292] = 0x80000000feef407bULL, + [2293] = 0x80000000feef507bULL, + [2294] = 0x80000000feef607bULL, + [2295] = 0x80000000feef707bULL, + [2296] = 0x80000000feef807bULL, + [2297] = 0x80000000feef907bULL, + [2298] = 0x80000000feefa07bULL, + [2299] = 0x80000000feefb07bULL, + [2300] = 0x80000000feefc07bULL, + [2301] = 0x80000000feefd07bULL, + [2302] = 0x80000000feefe07bULL, + [2303] = 0x80000000feeff07bULL, + [2304] = 0x80000000fef00063ULL, + [2305] = 0x80000000fef01063ULL, + [2306] = 0x80000000fef02063ULL, + [2307] = 0x80000000fef03063ULL, + [2308] = 0x80000000fef04063ULL, + [2309] = 0x80000000fef05063ULL, + [2310] = 0x80000000fef06063ULL, + [2311] = 0x80000000fef07063ULL, + [2312] = 0x80000000fef08063ULL, + [2313] = 0x80000000fef09063ULL, + [2314] = 0x80000000fef0a063ULL, + [2315] = 0x80000000fef0b063ULL, + [2316] = 0x80000000fef0c063ULL, + [2317] = 0x80000000fef0d063ULL, + [2318] = 0x80000000fef0e063ULL, + [2319] = 0x80000000fef0f063ULL, + [2320] = 0x80000000fef10063ULL, + [2321] = 0x80000000fef11063ULL, + [2322] = 0x80000000fef12063ULL, + [2323] = 0x80000000fef13063ULL, + [2324] = 0x80000000fef14063ULL, + [2325] = 0x80000000fef15063ULL, + [2326] = 0x80000000fef16063ULL, + [2327] = 0x80000000fef17063ULL, + [2328] = 0x80000000fef18063ULL, + [2329] = 0x80000000fef19063ULL, + [2330] = 0x80000000fef1a063ULL, + [2331] = 0x80000000fef1b063ULL, + [2332] = 0x80000000fef1c063ULL, + [2333] = 0x80000000fef1d063ULL, + [2334] = 0x80000000fef1e063ULL, + [2335] = 0x80000000fef1f063ULL, + [2336] = 0x00000000fef20063ULL, + [2337] = 0x00000000fef21063ULL, + [2338] = 0x00000000fef22063ULL, + [2339] = 0x00000000fef23063ULL, + [2340] = 0x00000000fef24063ULL, + [2341] = 0x00000000fef25063ULL, + [2342] = 0x00000000fef26063ULL, + [2343] = 0x00000000fef27063ULL, + [2344] = 0x00000000fef28063ULL, + [2345] = 0x00000000fef29063ULL, + [2346] = 0x00000000fef2a063ULL, + [2347] = 0x00000000fef2b063ULL, + [2348] = 0x00000000fef2c063ULL, + [2349] = 0x00000000fef2d063ULL, + [2350] = 0x00000000fef2e063ULL, + [2351] = 0x00000000fef2f063ULL, + [2352] = 0x00000000fef30063ULL, + [2353] = 0x00000000fef31063ULL, + [2354] = 0x00000000fef32063ULL, + [2355] = 0x00000000fef33063ULL, + [2356] = 0x00000000fef34063ULL, + [2357] = 0x00000000fef35063ULL, + [2358] = 0x00000000fef36063ULL, + [2359] = 0x00000000fef37063ULL, + [2360] = 0x00000000fef38063ULL, + [2361] = 0x00000000fef39063ULL, + [2362] = 0x00000000fef3a063ULL, + [2363] = 0x00000000fef3b063ULL, + [2364] = 0x00000000fef3c063ULL, + [2365] = 0x00000000fef3d063ULL, + [2366] = 0x00000000fef3e063ULL, + [2367] = 0x00000000fef3f063ULL, + [2368] = 0x00000000fef40063ULL, + [2369] = 0x00000000fef41063ULL, + [2370] = 0x00000000fef42063ULL, + [2371] = 0x00000000fef43063ULL, + [2372] = 0x00000000fef44063ULL, + [2373] = 0x00000000fef45063ULL, + [2374] = 0x00000000fef46063ULL, + [2375] = 0x00000000fef47063ULL, + [2376] = 0x00000000fef48063ULL, + [2377] = 0x00000000fef49063ULL, + [2378] = 0x00000000fef4a063ULL, + [2379] = 0x00000000fef4b063ULL, + [2380] = 0x00000000fef4c063ULL, + [2381] = 0x00000000fef4d063ULL, + [2382] = 0x00000000fef4e063ULL, + [2383] = 0x00000000fef4f063ULL, + [2384] = 0x00000000fef50063ULL, + [2385] = 0x00000000fef51063ULL, + [2386] = 0x00000000fef52063ULL, + [2387] = 0x00000000fef53063ULL, + [2388] = 0x00000000fef54063ULL, + [2389] = 0x00000000fef55063ULL, + [2390] = 0x00000000fef56063ULL, + [2391] = 0x00000000fef57063ULL, + [2392] = 0x00000000fef58063ULL, + [2393] = 0x00000000fef59063ULL, + [2394] = 0x00000000fef5a063ULL, + [2395] = 0x00000000fef5b063ULL, + [2396] = 0x00000000fef5c063ULL, + [2397] = 0x00000000fef5d063ULL, + [2398] = 0x00000000fef5e063ULL, + [2399] = 0x00000000fef5f063ULL, + [2400] = 0x00000000fef60063ULL, + [2401] = 0x00000000fef61063ULL, + [2402] = 0x00000000fef62063ULL, + [2403] = 0x00000000fef63063ULL, + [2404] = 0x00000000fef64063ULL, + [2405] = 0x00000000fef65063ULL, + [2406] = 0x00000000fef66063ULL, + [2407] = 0x00000000fef67063ULL, + [2408] = 0x00000000fef68063ULL, + [2409] = 0x00000000fef69063ULL, + [2410] = 0x00000000fef6a063ULL, + [2411] = 0x00000000fef6b063ULL, + [2412] = 0x00000000fef6c063ULL, + [2413] = 0x00000000fef6d063ULL, + [2414] = 0x00000000fef6e063ULL, + [2415] = 0x00000000fef6f063ULL, + [2416] = 0x00000000fef70063ULL, + [2417] = 0x00000000fef71063ULL, + [2418] = 0x00000000fef72063ULL, + [2419] = 0x00000000fef73063ULL, + [2420] = 0x00000000fef74063ULL, + [2421] = 0x00000000fef75063ULL, + [2422] = 0x00000000fef76063ULL, + [2423] = 0x00000000fef77063ULL, + [2424] = 0x00000000fef78063ULL, + [2425] = 0x00000000fef79063ULL, + [2426] = 0x00000000fef7a063ULL, + [2427] = 0x00000000fef7b063ULL, + [2428] = 0x00000000fef7c063ULL, + [2429] = 0x00000000fef7d063ULL, + [2430] = 0x00000000fef7e063ULL, + [2431] = 0x00000000fef7f063ULL, + [2432] = 0x00000000fef80063ULL, + [2433] = 0x00000000fef81063ULL, + [2434] = 0x00000000fef82063ULL, + [2435] = 0x00000000fef83063ULL, + [2436] = 0x00000000fef84063ULL, + [2437] = 0x00000000fef85063ULL, + [2438] = 0x00000000fef86063ULL, + [2439] = 0x00000000fef87063ULL, + [2440] = 0x00000000fef88063ULL, + [2441] = 0x00000000fef89063ULL, + [2442] = 0x00000000fef8a063ULL, + [2443] = 0x00000000fef8b063ULL, + [2444] = 0x00000000fef8c063ULL, + [2445] = 0x00000000fef8d063ULL, + [2446] = 0x00000000fef8e063ULL, + [2447] = 0x00000000fef8f063ULL, + [2448] = 0x00000000fef90063ULL, + [2449] = 0x00000000fef91063ULL, + [2450] = 0x00000000fef92063ULL, + [2451] = 0x00000000fef93063ULL, + [2452] = 0x00000000fef94063ULL, + [2453] = 0x00000000fef95063ULL, + [2454] = 0x00000000fef96063ULL, + [2455] = 0x00000000fef97063ULL, + [2456] = 0x00000000fef98063ULL, + [2457] = 0x00000000fef99063ULL, + [2458] = 0x00000000fef9a063ULL, + [2459] = 0x00000000fef9b063ULL, + [2460] = 0x00000000fef9c063ULL, + [2461] = 0x00000000fef9d063ULL, + [2462] = 0x00000000fef9e063ULL, + [2463] = 0x00000000fef9f063ULL, + [2464] = 0x00000000fefa0063ULL, + [2465] = 0x00000000fefa1063ULL, + [2466] = 0x00000000fefa2063ULL, + [2467] = 0x00000000fefa3063ULL, + [2468] = 0x00000000fefa4063ULL, + [2469] = 0x00000000fefa5063ULL, + [2470] = 0x00000000fefa6063ULL, + [2471] = 0x00000000fefa7063ULL, + [2472] = 0x00000000fefa8063ULL, + [2473] = 0x00000000fefa9063ULL, + [2474] = 0x00000000fefaa063ULL, + [2475] = 0x00000000fefab063ULL, + [2476] = 0x00000000fefac063ULL, + [2477] = 0x00000000fefad063ULL, + [2478] = 0x00000000fefae063ULL, + [2479] = 0x00000000fefaf063ULL, + [2480] = 0x00000000fefb0063ULL, + [2481] = 0x00000000fefb1063ULL, + [2482] = 0x00000000fefb2063ULL, + [2483] = 0x00000000fefb3063ULL, + [2484] = 0x00000000fefb4063ULL, + [2485] = 0x00000000fefb5063ULL, + [2486] = 0x00000000fefb6063ULL, + [2487] = 0x00000000fefb7063ULL, + [2488] = 0x00000000fefb8063ULL, + [2489] = 0x00000000fefb9063ULL, + [2490] = 0x00000000fefba063ULL, + [2491] = 0x00000000fefbb063ULL, + [2492] = 0x00000000fefbc063ULL, + [2493] = 0x00000000fefbd063ULL, + [2494] = 0x00000000fefbe063ULL, + [2495] = 0x00000000fefbf063ULL, + [2496] = 0x80000000fefc0063ULL, + [2497] = 0x80000000fefc1063ULL, + [2498] = 0x80000000fefc2063ULL, + [2499] = 0x80000000fefc3063ULL, + [2500] = 0x80000000fefc4063ULL, + [2501] = 0x80000000fefc5063ULL, + [2502] = 0x80000000fefc6063ULL, + [2503] = 0x80000000fefc7063ULL, + [2504] = 0x80000000fefc8063ULL, + [2505] = 0x80000000fefc9063ULL, + [2506] = 0x80000000fefca063ULL, + [2507] = 0x80000000fefcb063ULL, + [2508] = 0x80000000fefcc063ULL, + [2509] = 0x80000000fefcd063ULL, + [2510] = 0x80000000fefce063ULL, + [2511] = 0x80000000fefcf063ULL, + [2512] = 0x80000000fefd0063ULL, + [2513] = 0x80000000fefd1063ULL, + [2514] = 0x80000000fefd2063ULL, + [2515] = 0x80000000fefd3063ULL, + [2516] = 0x80000000fefd4063ULL, + [2517] = 0x80000000fefd5063ULL, + [2518] = 0x80000000fefd6063ULL, + [2519] = 0x80000000fefd7063ULL, + [2520] = 0x80000000fefd8063ULL, + [2521] = 0x80000000fefd9063ULL, + [2522] = 0x80000000fefda063ULL, + [2523] = 0x80000000fefdb063ULL, + [2524] = 0x80000000fefdc063ULL, + [2525] = 0x80000000fefdd063ULL, + [2526] = 0x80000000fefde063ULL, + [2527] = 0x80000000fefdf063ULL, + [2528] = 0x80000000fefe0063ULL, + [2529] = 0x80000000fefe1063ULL, + [2530] = 0x80000000fefe2063ULL, + [2531] = 0x80000000fefe3063ULL, + [2532] = 0x80000000fefe4063ULL, + [2533] = 0x80000000fefe5063ULL, + [2534] = 0x80000000fefe6063ULL, + [2535] = 0x80000000fefe7063ULL, + [2536] = 0x80000000fefe8063ULL, + [2537] = 0x80000000fefe9063ULL, + [2538] = 0x80000000fefea063ULL, + [2539] = 0x80000000fefeb063ULL, + [2540] = 0x80000000fefec063ULL, + [2541] = 0x80000000fefed063ULL, + [2542] = 0x80000000fefee063ULL, + [2543] = 0x80000000fefef063ULL, + [2544] = 0x80000000feff0063ULL, + [2545] = 0x80000000feff1063ULL, + [2546] = 0x80000000feff2063ULL, + [2547] = 0x80000000feff3063ULL, + [2548] = 0x80000000feff4063ULL, + [2549] = 0x80000000feff5063ULL, + [2550] = 0x80000000feff6063ULL, + [2551] = 0x80000000feff7063ULL, + [2552] = 0x80000000feff8063ULL, + [2553] = 0x80000000feff9063ULL, + [2554] = 0x80000000feffa063ULL, + [2555] = 0x80000000feffb063ULL, + [2556] = 0x80000000feffc063ULL, + [2557] = 0x80000000feffd063ULL, + [2558] = 0x80000000feffe063ULL, + [2559] = 0x80000000fefff063ULL, +}; diff --git a/src/soc/intel/apollolake/romstage.c b/src/soc/intel/apollolake/romstage.c index 6a2007e937..bccfc16ba6 100644 --- a/src/soc/intel/apollolake/romstage.c +++ b/src/soc/intel/apollolake/romstage.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -41,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -246,6 +248,13 @@ asmlinkage void car_stage_entry(void) tseg_base = (uintptr_t)smm_base; postcar_frame_add_mtrr(&pcf, tseg_base, smm_size, MTRR_TYPE_WRBACK); + /* Ensure TSEG has mappings. */ + if (IS_ENABLED(CONFIG_PAGING_IN_CACHE_AS_RAM)) { + if (paging_identity_map_addr(tseg_base, smm_size, PAT_WB)) + printk(BIOS_ERR, "Unable to map TSEG: %lx--%lx\n", + tseg_base, tseg_base + smm_size); + } + run_postcar_phase(&pcf); } @@ -330,6 +339,40 @@ static void parse_devicetree_setting(FSPM_UPD *m_upd) #endif } +static void prepare_fspm_pages(void) +{ + const size_t mib128 = 128 * MiB; + uintptr_t base; + /* All in units of MiB */ + size_t mem_sz; + size_t iohole_sz; + size_t low_mem_sz; + + mem_sz = memory_in_system_in_mib(); + + if (!mem_sz) { + printk(BIOS_ERR, "No memory in system! FSP will hang...\n"); + return; + } + + iohole_sz = iohole_in_mib(); + + /* Mark pages as WB where FSP will write. One region will be in cbmem, + but it's not clear what else FSP is writing to. Try to make the best + calculation. */ + low_mem_sz = 4 * (GiB / MiB) - iohole_sz; + + if (low_mem_sz > mem_sz) + low_mem_sz = mem_sz; + + /* Assume all accesses are within 128MiB of the crude low memory + calculation above. */ + base = low_mem_sz * MiB - mib128; + if (paging_identity_map_addr(base, mib128, PAT_WB)) + printk(BIOS_ERR, "Unable to map %lx--%lx\n", base, + base + mib128); +} + void platform_fsp_memory_init_params_cb(FSPM_UPD *mupd, uint32_t version) { struct region_device rdev; @@ -382,6 +425,9 @@ void platform_fsp_memory_init_params_cb(FSPM_UPD *mupd, uint32_t version) } car_set_var(fsp_version, version); + + if (IS_ENABLED(CONFIG_PAGING_IN_CACHE_AS_RAM)) + prepare_fspm_pages(); } __weak