62ced40d7de6dce982919de7516cb580a97e702e
[reactos.git] / reactos / boot / freeldr / bootsect / ofwboot.s
1 .section .text
2
3 _start:
4 .long 0xe00000 + 12
5 .long 0
6 .long 0
7
8 .globl _begin
9 _begin:
10 sync
11 isync
12
13 lis %r1,stack@ha
14 addi %r1,%r1,stack@l
15 addi %r1,%r1,16384 - 0x10
16
17 /* Store ofw call addr */
18 mr %r21,%r5
19 lis %r10,0xe00000@ha
20 stw %r5,ofw_call_addr - _start@l(%r10)
21
22 lis %r3,0xe00000@ha
23 addi %r3,%r3,freeldr_banner - _start
24
25 bl ofw_print_string
26
27 bl ofw_print_eol
28
29 /* Claim enough bytes to place freeldr at 0x8000 */
30 lis %r3,0x8000@ha
31 addi %r3,%r3,0x8000@l
32
33 lis %r4,_binary_freeldr_tmp_end@ha
34 addi %r4,%r4,_binary_freeldr_tmp_end@l
35 lis %r5,_binary_freeldr_tmp_start@ha
36 addi %r5,%r5,_binary_freeldr_tmp_start@l
37 /* Make sufficient room for .bss */
38 sub %r4,%r4,%r5
39 addi %r4,%r4,0x6000
40
41 xor %r5,%r5,%r5
42 li %r5,0x1000
43
44 bl ofw_claim
45
46 lis %r4,_binary_freeldr_tmp_end@ha
47 addi %r4,%r4,_binary_freeldr_tmp_end@l
48 lis %r3,_binary_freeldr_tmp_start@ha
49 addi %r3,%r3,_binary_freeldr_tmp_start@l
50
51 lis %r5,0x8000@ha
52 addi %r5,%r5,0x8000@l
53
54 bl ofw_dumpregs
55 bl copy_bits
56 bl zero_registers
57
58 /* Zero CTR */
59 mtcr %r31
60
61 lis %r3,0x8000@ha
62 addi %r3,%r3,0x8000@l
63
64 mtlr %r3
65
66 lis %r3,call_ofw@ha
67 addi %r3,%r3,call_ofw - _start
68
69 b call_freeldr
70
71 zero_registers:
72 xor %r2,%r2,%r2
73 mr %r0,%r2
74 mr %r3,%r2
75
76 mr %r4,%r2
77 mr %r5,%r2
78 mr %r6,%r2
79 mr %r7,%r2
80
81 mr %r8,%r2
82 mr %r9,%r2
83 mr %r10,%r2
84 mr %r11,%r2
85
86 mr %r12,%r2
87 mr %r13,%r2
88 mr %r14,%r2
89 mr %r15,%r2
90
91 mr %r12,%r2
92 mr %r13,%r2
93 mr %r14,%r2
94 mr %r15,%r2
95
96 mr %r16,%r2
97 mr %r17,%r2
98 mr %r18,%r2
99 mr %r19,%r2
100
101 mr %r20,%r2
102 mr %r21,%r2
103 mr %r22,%r2
104 mr %r23,%r2
105
106 mr %r24,%r2
107 mr %r25,%r2
108 mr %r26,%r2
109 mr %r27,%r2
110
111 mr %r28,%r2
112 mr %r29,%r2
113 mr %r30,%r2
114 mr %r31,%r2
115
116 blr
117
118 .org 0x1000
119 freeldr_banner:
120 .ascii "ReactOS OpenFirmware Boot Program\r\n\0"
121
122 freeldr_halt:
123 .ascii "ReactOS OpenFirmware Boot Program Halting\r\n\0"
124
125 ofw_memory_size:
126 .long 0
127 .long 0
128 .long 0
129 .long 0
130
131 .org 0x2000
132 stack:
133 .space 0x4000
134