mirror of
https://github.com/limine-bootloader/limine
synced 2024-12-05 06:31:55 +03:00
e1f6ac8860
* Initial aarch64 port * Enable chainload on aarch64 No changes necessary since it's all UEFI anyway. * Add specification for Limine protocol for aarch64 * PROTOCOL: Specify state of information in DT /chosen node * common: Add spinup code for aarch64 * common: Port elf and term to aarch64 * common: Port vmm to aarch64 Also prepare to drop VMM_FLAG_PRESENT on x86. * protos: Port limine boot protocol to aarch64 Also drop VMM_FLAG_PRESENT since we never unmap pages anyway. * test: Add DTB request * PROTOCOL: Port SMP request to aarch64 * cpu: Add cache maintenance functions for aarch64 * protos/limine, sys: Port SMP to aarch64 Also move common asm macros into a header file. * test: Start up APs * vmm: Unify get_next_level and implement large page splitting * protos/limine: Map framebuffer using correct caching mode on AArch64 * CI: Fix GCC build for aarch64 * entry, menu: Replace uses of naked attribute with separate asm file GCC does not understand the naked attribute on aarch64, and didn't understand it for x86 in older versions.
25 lines
332 B
Plaintext
25 lines
332 B
Plaintext
.section .data
|
|
|
|
stack_at_first_entry:
|
|
.quad 0
|
|
|
|
.section .text
|
|
|
|
.global menu
|
|
.extern _menu
|
|
|
|
menu:
|
|
adrp x8, stack_at_first_entry
|
|
ldr x9, [x8, :lo12:stack_at_first_entry]
|
|
cbz x9, 1f
|
|
mov sp, x9
|
|
b 2f
|
|
1:
|
|
mov x9, sp
|
|
str x9, [x8, :lo12:stack_at_first_entry]
|
|
2:
|
|
mov x30, xzr
|
|
mov x29, xzr
|
|
|
|
b _menu
|