sm64/asm/entry.s

52 lines
1.3 KiB
ArmAsm
Raw Normal View History

2021-07-12 23:17:54 -04:00
// assembler directives
.set noat // allow manual use of $at
.set noreorder // don't insert nops after branches
2019-08-25 00:46:40 -04:00
2021-07-12 23:17:54 -04:00
#include "macros.inc"
2019-08-25 00:46:40 -04:00
.section .text, "ax"
2020-03-01 22:42:52 -05:00
glabel entry_point
2023-08-17 08:56:02 -04:00
.if VERSION_CN == 1
lui $t0, %lo(_mainSegmentNoloadStartHi)
ori $t0, %lo(_mainSegmentNoloadStartLo)
lui $t1, %lo(_mainSegmentNoloadSizeHi)
ori $t1, %lo(_mainSegmentNoloadSizeLo)
.L80249010:
sw $zero, ($t0)
sw $zero, 4($t0)
addi $t0, $t0, 8
addi $t1, $t1, -8
bnez $t1, .L80249010
nop
lui $sp, %lo(gIdleThreadStackHi)
ori $sp, %lo(gIdleThreadStackLo)
lui $t2, %lo(main_funcHi)
ori $t2, %lo(main_funcLo)
jr $t2
nop
.else
2021-07-12 23:17:54 -04:00
lui $t0, %hi(_mainSegmentNoloadStart) // $t0, 0x8034
lui $t1, %lo(_mainSegmentNoloadSizeHi) // lui $t1, 2
addiu $t0, %lo(_mainSegmentNoloadStart) // addiu $t0, $t0, -0x6df0
ori $t1, %lo(_mainSegmentNoloadSizeLo) // ori $t1, $t1, 0xcee0
2019-08-25 00:46:40 -04:00
.L80246010:
addi $t1, $t1, -8
sw $zero, ($t0)
sw $zero, 4($t0)
bnez $t1, .L80246010
addi $t0, $t0, 8
2021-07-12 23:17:54 -04:00
lui $t2, %hi(main_func) // $t2, 0x8024
lui $sp, %hi(gIdleThreadStack) // $sp, 0x8020
addiu $t2, %lo(main_func) // addiu $t2, $t2, 0x6dc4
2019-08-25 00:46:40 -04:00
jr $t2
2021-07-12 23:17:54 -04:00
addiu $sp, %lo(gIdleThreadStack) // addiu $sp, $sp, 0xa00
2023-08-17 08:56:02 -04:00
.endif
2019-08-25 00:46:40 -04:00
nop
nop
nop
nop
nop
nop