summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/apollolake/Kconfig6
-rw-r--r--src/soc/intel/apollolake/Makefile.inc10
-rw-r--r--src/soc/intel/apollolake/bootblock/bootblock.c10
-rw-r--r--src/soc/intel/apollolake/glk_page_map.txt13
-rw-r--r--src/soc/intel/apollolake/pdpt.c37
-rw-r--r--src/soc/intel/apollolake/pt.c937
-rw-r--r--src/soc/intel/apollolake/romstage.c46
7 files changed, 1059 insertions, 0 deletions
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 <arch/cpu.h>
#include <bootblock_common.h>
+#include <cpu/x86/pae.h>
#include <device/pci.h>
#include <intelblocks/cpulib.h>
#include <intelblocks/fast_spi.h>
@@ -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 <stdint.h>
+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 <stdint.h>
+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 <compiler.h>
#include <console/console.h>
#include <cpu/x86/mtrr.h>
+#include <cpu/x86/pae.h>
#include <device/pci_def.h>
#include <device/resource.h>
#include <intelblocks/lpc_lib.h>
@@ -41,6 +42,7 @@
#include <reset.h>
#include <soc/cpu.h>
#include <soc/iomap.h>
+#include <soc/meminit.h>
#include <soc/systemagent.h>
#include <soc/pci_devs.h>
#include <soc/pm.h>
@@ -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