mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-05-31 14:58:22 -04:00
ams: fix boot sysmodule/kernel for 10.0.0
This commit is contained in:
parent
9b677c81a5
commit
94b10b5779
9 changed files with 153 additions and 23 deletions
|
@ -87,7 +87,7 @@ namespace ams::kern::init {
|
|||
cpu::ThreadIdRegisterAccessor(0).Store();
|
||||
|
||||
/* Restore the page allocator state setup by kernel loader. */
|
||||
g_initial_page_allocator.Initialize(initial_page_allocator_state);
|
||||
g_initial_page_allocator.InitializeFromState(initial_page_allocator_state);
|
||||
|
||||
/* Ensure that the T1SZ is correct (and what we expect). */
|
||||
MESOSPHERE_INIT_ABORT_UNLESS((cpu::TranslationControlRegisterAccessor().GetT1Size() / arch::arm64::L1BlockSize) == arch::arm64::MaxPageTableEntries);
|
||||
|
@ -266,7 +266,9 @@ namespace ams::kern::init {
|
|||
SetupCoreLocalRegionMemoryRegions(ttbr1_table, g_initial_page_allocator);
|
||||
|
||||
/* Finalize the page allocator, we're done allocating at this point. */
|
||||
const KPhysicalAddress final_init_page_table_end_address = g_initial_page_allocator.GetFinalNextAddress();
|
||||
KInitialPageAllocator::State final_init_page_table_state;
|
||||
g_initial_page_allocator.GetFinalState(std::addressof(final_init_page_table_state));
|
||||
const KPhysicalAddress final_init_page_table_end_address = final_init_page_table_state.next_address;
|
||||
const size_t init_page_table_region_size = GetInteger(final_init_page_table_end_address) - GetInteger(resource_end_phys_addr);
|
||||
|
||||
/* Insert regions for the initial page table region. */
|
||||
|
|
|
@ -42,6 +42,8 @@ __metadata_ini_offset:
|
|||
.quad 0 /* INI1 base address. */
|
||||
__metadata_kernelldr_offset:
|
||||
.quad 0 /* Kernel Loader base address. */
|
||||
__metadata_target_firmware:
|
||||
.word 0xCCCCCCCC /* Target firmware. */
|
||||
__metadata_kernel_layout:
|
||||
.word _start - _start /* rx_offset */
|
||||
.word __rodata_start - _start /* rx_end_offset */
|
||||
|
@ -55,10 +57,17 @@ __metadata_kernel_layout:
|
|||
.word _DYNAMIC - _start /* dynamic_offset */
|
||||
.word __init_array_start - _start /* init_array_offset */
|
||||
.word __init_array_end - _start /* init_array_end_offset */
|
||||
.if (. - __metadata_begin) != 0x44
|
||||
.if (. - __metadata_begin) != 0x48
|
||||
.error "Incorrect Mesosphere Metadata"
|
||||
.endif
|
||||
|
||||
.global _ZN3ams4kern17GetTargetFirmwareEv
|
||||
.type _ZN3ams4kern17GetTargetFirmwareEv, %function
|
||||
_ZN3ams4kern17GetTargetFirmwareEv:
|
||||
adr x0, __metadata_target_firmware
|
||||
ldr x0, [x0]
|
||||
ret
|
||||
|
||||
/* ams::kern::init::StartCore0(uintptr_t, uintptr_t) */
|
||||
.section .crt0.text._ZN3ams4kern4init10StartCore0Emm, "ax", %progbits
|
||||
.global _ZN3ams4kern4init10StartCore0Emm
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue