mirror of
https://github.com/reactos/reactos.git
synced 2024-05-17 02:42:06 +00:00
112 lines
1.6 KiB
ArmAsm
112 lines
1.6 KiB
ArmAsm
.section ".text"
|
|
.extern PpcInit
|
|
.globl _start
|
|
.globl call_ofw
|
|
_start:
|
|
sync
|
|
isync
|
|
|
|
lis %r1,stackend@ha
|
|
addi %r1,%r1,stackend@l
|
|
|
|
/* Store ofw call addr */
|
|
mr %r21,%r5
|
|
lis %r10,ofw_call_addr@ha
|
|
stw %r5,ofw_call_addr@l(%r10)
|
|
|
|
bl zero_registers
|
|
|
|
/* Zero CTR */
|
|
mtcr %r31
|
|
|
|
lis %r3,PpcInit@ha
|
|
addi %r3,%r3,PpcInit@l
|
|
mtlr %r3
|
|
|
|
/* Check for ofw */
|
|
lis %r3,ofw_call_addr@ha
|
|
lwz %r3,ofw_call_addr@l(%r3)
|
|
cmpw %r3,%r31 /* Zero? */
|
|
mr %r3,%r31
|
|
beq initfp
|
|
|
|
lis %r3,call_ofw@ha
|
|
addi %r3,%r3,call_ofw@l
|
|
b bootme
|
|
|
|
initfp:
|
|
/* Enabling FP at this point won't hurt, and the varargs scheme we're
|
|
* using now requires it. */
|
|
mfmsr %r0
|
|
ori %r0,%r0,8192
|
|
mtmsr %r0
|
|
|
|
bootme:
|
|
blr
|
|
|
|
zero_registers:
|
|
xor %r2,%r2,%r2
|
|
mr %r0,%r2
|
|
mr %r3,%r2
|
|
|
|
mr %r4,%r2
|
|
mr %r5,%r2
|
|
mr %r6,%r2
|
|
mr %r7,%r2
|
|
|
|
mr %r8,%r2
|
|
mr %r9,%r2
|
|
mr %r10,%r2
|
|
mr %r11,%r2
|
|
|
|
mr %r12,%r2
|
|
mr %r13,%r2
|
|
mr %r14,%r2
|
|
mr %r15,%r2
|
|
|
|
mr %r12,%r2
|
|
mr %r13,%r2
|
|
mr %r14,%r2
|
|
mr %r15,%r2
|
|
|
|
mr %r16,%r2
|
|
mr %r17,%r2
|
|
mr %r18,%r2
|
|
mr %r19,%r2
|
|
|
|
mr %r20,%r2
|
|
mr %r21,%r2
|
|
mr %r22,%r2
|
|
mr %r23,%r2
|
|
|
|
mr %r24,%r2
|
|
mr %r25,%r2
|
|
mr %r26,%r2
|
|
mr %r27,%r2
|
|
|
|
mr %r28,%r2
|
|
mr %r29,%r2
|
|
mr %r30,%r2
|
|
mr %r31,%r2
|
|
|
|
blr
|
|
|
|
ofw_memory_size:
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
.long 0
|
|
|
|
.align 4
|
|
stack:
|
|
.space 0x4000
|
|
stackend:
|
|
.long 0,0,0,0
|
|
|
|
.globl _bss
|
|
.section ".bss2"
|
|
_bss:
|
|
.long 0
|
|
|
|
.align 4
|