mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
42 lines
786 B
ArmAsm
42 lines
786 B
ArmAsm
.section ".crt0","ax"
|
|
.global _start
|
|
|
|
_start:
|
|
bl startup
|
|
.ascii "HOMEBREW"
|
|
|
|
startup:
|
|
// get aslr base
|
|
sub x28, x30, #4
|
|
|
|
// clear .bss
|
|
adrp x0, __bss_start__
|
|
adrp x1, __bss_end__
|
|
add x0, x0, #:lo12:__bss_start__
|
|
add x1, x1, #:lo12:__bss_end__
|
|
sub x1, x1, x0 // calculate size
|
|
add x1, x1, #7 // round up to 8
|
|
bic x1, x1, #7
|
|
|
|
bss_loop:
|
|
str xzr, [x0], #8
|
|
subs x1, x1, #8
|
|
bne bss_loop
|
|
|
|
// process .dynamic section
|
|
mov x0, x28
|
|
adrp x1, _DYNAMIC
|
|
add x1, x1, #:lo12:_DYNAMIC
|
|
bl __nx_dynamic
|
|
|
|
// initialize system
|
|
mov x0, x28
|
|
bl __nx_init
|
|
|
|
// call entrypoint
|
|
mov x0, #0 // argc
|
|
mov x1, #0 // argv
|
|
adrp x30, __nx_exit
|
|
add x30, x30, #:lo12:__nx_exit
|
|
b main
|