mirror of https://github.com/PCSX2/pcsx2.git
111 lines
1.5 KiB
ArmAsm
111 lines
1.5 KiB
ArmAsm
.set noat
|
|
.set noreorder
|
|
.global _start
|
|
|
|
.global FlushCache
|
|
.global Exit
|
|
.global SignalSema
|
|
.global _start
|
|
.global _exit
|
|
|
|
.text
|
|
nop
|
|
nop
|
|
FlushCache:
|
|
li $3,100
|
|
syscall
|
|
jr $31
|
|
nop
|
|
Exit:
|
|
li $3,4
|
|
syscall
|
|
jr $31
|
|
nop
|
|
SignalSema:
|
|
li $3,66
|
|
syscall
|
|
jr $31
|
|
nop
|
|
|
|
nop
|
|
nop
|
|
_start:
|
|
lui $2,%hi(_args_ptr)
|
|
addiu $2,$2, %lo(_args_ptr)
|
|
sw $4,($2)
|
|
# Clear bss
|
|
zerobss:
|
|
lui $2,%hi(_fbss)
|
|
lui $3,%hi(_end)
|
|
addiu $2,$2,%lo(_fbss)
|
|
addiu $3,$3,%lo(_end)
|
|
loop:
|
|
nop
|
|
nop
|
|
sq $0,($2)
|
|
sltu $1,$2,$3
|
|
bne $1,$0,loop
|
|
addiu $2,$2,16
|
|
|
|
# Thread
|
|
lui $4,%hi(_gp)
|
|
addiu $4,$4,%lo(_gp)
|
|
lui $5,%hi(_stack)
|
|
addiu $5,$5,%lo(_stack)
|
|
lui $6,%hi(_stack_size)
|
|
addiu $6,$6,%lo(_stack_size)
|
|
lui $7,%hi(_args)
|
|
addiu $7,$7,%lo(_args)
|
|
lui $8,%hi(_root)
|
|
addiu $8,$8,%lo(_root)
|
|
move $28,$4
|
|
addiu $3,$0,60
|
|
syscall
|
|
move $29, $2
|
|
|
|
# Heap
|
|
addiu $3,$0,61
|
|
lui $4,%hi(_end)
|
|
addiu $4,$4,%lo(_end)
|
|
lui $5,%hi(_heap_size)
|
|
addiu $5,$5,%lo(_heap_size)
|
|
syscall
|
|
nop
|
|
|
|
# Cache
|
|
jal FlushCache
|
|
move $4,$0
|
|
|
|
# Jump main
|
|
ei
|
|
|
|
lui $2,%hi(_args_ptr)
|
|
addiu $2,$2,%lo(_args_ptr)
|
|
lw $3,($2)
|
|
lui $2,%hi(_args)
|
|
addiu $2,$2,%lo(_args)
|
|
|
|
lw $4, ($2)
|
|
jal main
|
|
addiu $5, $2, 4
|
|
_root:
|
|
_exit:
|
|
# ???
|
|
lui $2,%hi(_args_ptr)
|
|
addiu $2,$2,%lo(_args_ptr)
|
|
lw $3,($2)
|
|
jal SignalSema
|
|
lw $4,($3)
|
|
# Exit
|
|
addiu $3,$0,35
|
|
syscall
|
|
nop
|
|
|
|
.bss
|
|
.align 6
|
|
_args: .space 256+16*4+4
|
|
|
|
.data
|
|
_args_ptr:
|
|
.space 4
|