Add libdragon ipl3 as makefile option

This commit is contained in:
a
2025-06-22 22:01:46 -04:00
parent b8ca566e42
commit 8d971cd81d
6 changed files with 28 additions and 35 deletions

View File

@@ -7,28 +7,7 @@
.section .text, "ax"
glabel entry_point
#ifdef VERSION_CN
// Get main segment bss address and size
lui $t0, %lo(_mainSegmentNoloadStartHi)
ori $t0, %lo(_mainSegmentNoloadStartLo)
lui $t1, %lo(_mainSegmentNoloadSizeHi)
ori $t1, %lo(_mainSegmentNoloadSizeLo)
.clear_bytes:
// Clear bss section until they are zeroed out
sw $zero, ($t0) // Clear 4 bytes
sw $zero, 4($t0) // Clear the next 4 bytes
addi $t0, $t0, 8 // Increment the address of bytes to clear
addi $t1, $t1, -8 // Subtract 8 bytes from the amount remaining
bnez $t1, .clear_bytes // Continue clearing until clear_bytes is 0
nop
// Get init function and idle thread stack
lui $sp, %lo(gIdleThreadStackHi)
ori $sp, %lo(gIdleThreadStackLo)
lui $t2, %lo(main_funcHi)
ori $t2, %lo(main_funcLo)
jr $t2 // Jump to the init function
nop
#else
#ifndef LIBDRAGON_IPL3
// Get main segment bss address and size
lui $t0, %hi(_mainSegmentNoloadStart)
lui $t1, %lo(_mainSegmentNoloadSizeHi)
@@ -41,13 +20,13 @@ glabel entry_point
sw $zero, 4($t0) // Clear the next 4 bytes
bnez $t1, .clear_bytes // Continue clearing until clear_bytes is 0
addi $t0, $t0, 8 // Increment the address of bytes to clear
#endif
// Get init function and idle thread stack
lui $t2, %hi(main_func)
lui $sp, %hi(gIdleThreadStack)
addiu $t2, %lo(main_func)
jr $t2 // Jump to the init function
addiu $sp, %lo(gIdleThreadStack)
#endif
nop
nop
nop