mirror of
https://github.com/Atmosphere-NX/Atmosphere
synced 2024-12-23 04:41:12 +00:00
thermosphere: I wish ld wasn't dumb (also, bugfix). This saves 4K
This commit is contained in:
parent
20737569ce
commit
57f2aca2fd
2 changed files with 4 additions and 5 deletions
|
@ -28,7 +28,6 @@
|
||||||
static TEMPORARY ALIGN(0x1000) u64 g_vttbl[BIT(ADDRSPACESZ2 - 30)] = {0};
|
static TEMPORARY ALIGN(0x1000) u64 g_vttbl[BIT(ADDRSPACESZ2 - 30)] = {0};
|
||||||
static TEMPORARY ALIGN(0x1000) u64 g_vttbl_l2_mmio_0_0[512] = {0};
|
static TEMPORARY ALIGN(0x1000) u64 g_vttbl_l2_mmio_0_0[512] = {0};
|
||||||
static TEMPORARY ALIGN(0x1000) u64 g_vttbl_l3_0[512] = {0};
|
static TEMPORARY ALIGN(0x1000) u64 g_vttbl_l3_0[512] = {0};
|
||||||
static TEMPORARY uintptr_t g_vttblPaddr;
|
|
||||||
|
|
||||||
static inline void identityMapL1(u64 *tbl, uintptr_t addr, size_t size, u64 attribs)
|
static inline void identityMapL1(u64 *tbl, uintptr_t addr, size_t size, u64 attribs)
|
||||||
{
|
{
|
||||||
|
@ -51,8 +50,9 @@ uintptr_t stage2Configure(u32 *addrSpaceSize)
|
||||||
static const u64 devattrs = 0 | MMU_S2AP_RW | MMU_MEMATTR_DEVICE_NGNRE;
|
static const u64 devattrs = 0 | MMU_S2AP_RW | MMU_MEMATTR_DEVICE_NGNRE;
|
||||||
static const u64 unchanged = MMU_S2AP_RW | MMU_MEMATTR_NORMAL_CACHEABLE_OR_UNCHANGED;
|
static const u64 unchanged = MMU_S2AP_RW | MMU_MEMATTR_NORMAL_CACHEABLE_OR_UNCHANGED;
|
||||||
|
|
||||||
|
uintptr_t g_vttblPaddr = va2pa(g_vttbl);
|
||||||
|
|
||||||
if (currentCoreCtx->isBootCore) {
|
if (currentCoreCtx->isBootCore) {
|
||||||
g_vttblPaddr = va2pa(g_vttbl);
|
|
||||||
uintptr_t *l2pa = (uintptr_t *)va2pa(g_vttbl_l2_mmio_0_0);
|
uintptr_t *l2pa = (uintptr_t *)va2pa(g_vttbl_l2_mmio_0_0);
|
||||||
uintptr_t *l3pa = (uintptr_t *)va2pa(g_vttbl_l3_0);
|
uintptr_t *l3pa = (uintptr_t *)va2pa(g_vttbl_l3_0);
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,6 @@
|
||||||
static TEMPORARY ALIGN(0x1000) u64 g_vttbl[BIT(ADDRSPACESZ2 - 30)] = {0};
|
static TEMPORARY ALIGN(0x1000) u64 g_vttbl[BIT(ADDRSPACESZ2 - 30)] = {0};
|
||||||
static TEMPORARY ALIGN(0x1000) u64 g_vttbl_l2_mmio_0[512] = {0};
|
static TEMPORARY ALIGN(0x1000) u64 g_vttbl_l2_mmio_0[512] = {0};
|
||||||
static TEMPORARY ALIGN(0x1000) u64 g_vttbl_l3_0[512] = {0};
|
static TEMPORARY ALIGN(0x1000) u64 g_vttbl_l3_0[512] = {0};
|
||||||
static TEMPORARY uintptr_t g_vttblPaddr;
|
|
||||||
|
|
||||||
static inline void identityMapL1(u64 *tbl, uintptr_t addr, size_t size, u64 attribs)
|
static inline void identityMapL1(u64 *tbl, uintptr_t addr, size_t size, u64 attribs)
|
||||||
{
|
{
|
||||||
|
@ -48,8 +47,8 @@ uintptr_t stage2Configure(u32 *addrSpaceSize)
|
||||||
*addrSpaceSize = ADDRSPACESZ2;
|
*addrSpaceSize = ADDRSPACESZ2;
|
||||||
static const u64 devattrs = MMU_PTE_BLOCK_XN | MMU_S2AP_RW | MMU_MEMATTR_DEVICE_NGNRE;
|
static const u64 devattrs = MMU_PTE_BLOCK_XN | MMU_S2AP_RW | MMU_MEMATTR_DEVICE_NGNRE;
|
||||||
static const u64 unchanged = MMU_S2AP_RW | MMU_MEMATTR_NORMAL_CACHEABLE_OR_UNCHANGED;
|
static const u64 unchanged = MMU_S2AP_RW | MMU_MEMATTR_NORMAL_CACHEABLE_OR_UNCHANGED;
|
||||||
|
uintptr_t g_vttblPaddr = va2pa(g_vttbl);
|
||||||
if (currentCoreCtx->isBootCore) {
|
if (currentCoreCtx->isBootCore) {
|
||||||
g_vttblPaddr = va2pa(g_vttbl);
|
|
||||||
uintptr_t *l2pa = (uintptr_t *)va2pa(g_vttbl_l2_mmio_0);
|
uintptr_t *l2pa = (uintptr_t *)va2pa(g_vttbl_l2_mmio_0);
|
||||||
uintptr_t *l3pa = (uintptr_t *)va2pa(g_vttbl_l3_0);
|
uintptr_t *l3pa = (uintptr_t *)va2pa(g_vttbl_l3_0);
|
||||||
|
|
||||||
|
@ -69,5 +68,5 @@ uintptr_t stage2Configure(u32 *addrSpaceSize)
|
||||||
mmu_map_page_range(g_vttbl_l3_0, MEMORY_MAP_PA_GICC, MEMORY_MAP_PA_GICD, 0x2000ull, devattrs);
|
mmu_map_page_range(g_vttbl_l3_0, MEMORY_MAP_PA_GICC, MEMORY_MAP_PA_GICD, 0x2000ull, devattrs);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (uintptr_t)g_vttbl;
|
return g_vttblPaddr;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue