32 |
.long 0xffffffff /* virt-base */ |
.long 0xffffffff /* virt-base */ |
33 |
.long 0xffffffff /* virt-size */ |
.long 0xffffffff /* virt-size */ |
34 |
.long 0x00030000 /* load-base */ |
.long 0x00030000 /* load-base */ |
35 |
|
|
36 |
|
.extern __bss_start |
37 |
|
.extern _end |
38 |
|
|
39 |
.text |
.text |
40 |
.align 2 |
.align 2 |
41 |
.globl _start |
.globl _start |
46 |
|
|
47 |
li 2, 0 |
li 2, 0 |
48 |
li 13, 0 |
li 13, 0 |
|
|
|
49 |
|
|
50 |
mr 3, 5 |
/* Stage1 won't zero BSS for us. In other cases, why not do it again? */ |
51 |
|
lis 6, (__bss_start - 4)@h |
52 |
|
ori 6, 6, (__bss_start - 4)@l |
53 |
|
lis 7, (_end - 4)@h |
54 |
|
ori 7, 7, (_end - 4)@l |
55 |
|
subf 7, 6, 7 |
56 |
|
srwi 7, 7, 2 /* We store 4 bytes at a time. */ |
57 |
|
mtctr 7 |
58 |
|
2: stwu 2, 4(6) /* We know r2 is already 0 from above. */ |
59 |
|
bdnz 2b |
60 |
|
|
61 |
bl cmain |
bl cmain |
62 |
1: b 1b |
1: b 1b |
63 |
|
|