Rev 1057 | Rev 1222 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1057 | Rev 1132 | ||
|---|---|---|---|
| Line 26... | Line 26... | ||
| 26 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | # |
27 | # |
| 28 | 28 | ||
| 29 | #include <arch/asm/regname.h> |
29 | #include <arch/asm/regname.h> |
| 30 | #include <arch/boot/boot.h> |
30 | #include <arch/boot/boot.h> |
| 31 | #include <arch/boot/memmap.h> |
- | |
| 32 | 31 | ||
| 33 | .section K_TEXT_START, "ax" |
32 | .section K_TEXT_START, "ax" |
| 34 | 33 | ||
| 35 | .global kernel_image_start |
34 | .global kernel_image_start |
| 36 | kernel_image_start: |
35 | kernel_image_start: |
| Line 38... | Line 37... | ||
| 38 | # load temporary stack |
37 | # load temporary stack |
| 39 | 38 | ||
| 40 | lis sp, end_stack@ha |
39 | lis sp, end_stack@ha |
| 41 | addi sp, sp, end_stack@l |
40 | addi sp, sp, end_stack@l |
| 42 | 41 | ||
| 43 | # r10 contains physical address to memmap_t |
42 | # r3 contains physical address of bootinfo_t |
| 44 | # from boot loader |
43 | # r4 contains size of bootinfo_t |
| 45 | 44 | ||
| 46 | lis r31, 0x80000000@ha |
45 | lis r31, 0x80000000@ha |
| 47 | addi r31, r31, 0x80000000@l |
46 | addi r31, r31, 0x80000000@l |
| 48 | 47 | ||
| 49 | add r3, r3, r31 |
48 | add r3, r3, r31 |
| 50 | 49 | ||
| 51 | lis r31, memmap@ha |
50 | lis r31, bootinfo@ha |
| 52 | addi r31, r31, memmap@l # r31 = memmap |
51 | addi r31, r31, bootinfo@l # r31 = bootinfo |
| 53 | 52 | ||
| 54 | lwz r30, 0(r3) # memmap->total |
53 | cmpwi r4, 0 |
| 55 | stw r30, 0(r31) |
54 | beq bootinfo_end |
| 56 | 55 | ||
| 57 | lwzu r30, 4(r3) # memmap->count |
- | |
| 58 | stwu r30, 4(r31) |
- | |
| 59 | - | ||
| 60 | cmpwi r30, 0 |
- | |
| 61 | beq memmap_end |
- | |
| 62 | - | ||
| 63 | mtctr r30 |
- | |
| 64 | memmap_loop: |
56 | bootinfo_loop: |
| 65 | - | ||
| 66 | lwzu r30, 4(r3) # memmap->zones[i].start |
- | |
| 67 | stwu r30, 4(r31) |
- | |
| 68 | 57 | ||
| 69 | lwzu r30, 4(r3) # memmap->zones[i].size |
58 | lwz r30, 0(r3) |
| 70 | stwu r30, 4(r31) |
59 | stw r30, 0(r31) |
| - | 60 | ||
| - | 61 | addi r3, r3, 4 |
|
| - | 62 | addi r31, r31, 4 |
|
| - | 63 | subi r4, r4, 4 |
|
| 71 | 64 | ||
| - | 65 | cmpwi r4, 0 |
|
| 72 | bdnz memmap_loop |
66 | bgt bootinfo_loop |
| - | 67 | ||
| 73 | memmap_end: |
68 | bootinfo_end: |
| 74 | 69 | ||
| 75 | b main_bsp |
70 | b main_bsp |
| 76 | 71 | ||
| 77 | .section K_DATA_START, "aw", @progbits |
72 | .section K_DATA_START, "aw", @progbits |
| 78 | 73 | ||