Rev 3808 | Rev 3861 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3808 | Rev 3823 | ||
---|---|---|---|
Line 140... | Line 140... | ||
140 | */ |
140 | */ |
141 | if (silo_ramdisk_image) { |
141 | if (silo_ramdisk_image) { |
142 | silo_ramdisk_image += bootinfo.physmem_start; |
142 | silo_ramdisk_image += bootinfo.physmem_start; |
143 | silo_ramdisk_image -= 0x400000; |
143 | silo_ramdisk_image -= 0x400000; |
144 | /* Install 1:1 mapping for the ramdisk. */ |
144 | /* Install 1:1 mapping for the ramdisk. */ |
145 | if (ofw_map((void *)((uintptr_t)silo_ramdisk_image), |
145 | if (ofw_map((void *)((uintptr_t) silo_ramdisk_image), |
146 | (void *)((uintptr_t)silo_ramdisk_image), |
146 | (void *)((uintptr_t) silo_ramdisk_image), |
147 | silo_ramdisk_size, -1) != 0) { |
147 | silo_ramdisk_size, -1) != 0) { |
148 | printf("Failed to map ramdisk.\n"); |
148 | printf("Failed to map ramdisk.\n"); |
149 | halt(); |
149 | halt(); |
150 | } |
150 | } |
151 | } |
151 | } |
Line 201... | Line 201... | ||
201 | /* |
201 | /* |
202 | * Claim and map the whole ramdisk as it may exceed the area |
202 | * Claim and map the whole ramdisk as it may exceed the area |
203 | * given to us by SILO. |
203 | * given to us by SILO. |
204 | */ |
204 | */ |
205 | (void) ofw_claim_phys(base + top, silo_ramdisk_size); |
205 | (void) ofw_claim_phys(base + top, silo_ramdisk_size); |
206 | (void) ofw_map(base + top, base + top, silo_ramdisk_size, -1); |
206 | (void) ofw_map(bootinfo.physmem_start + base + top, base + top, |
- | 207 | silo_ramdisk_size, -1); |
|
207 | memmove(base + top, (void *)((uintptr_t)silo_ramdisk_image), |
208 | memmove(base + top, (void *)((uintptr_t)silo_ramdisk_image), |
208 | silo_ramdisk_size); |
209 | silo_ramdisk_size); |
209 | printf("done.\n"); |
210 | printf("done.\n"); |
210 | top += silo_ramdisk_size; |
211 | top += silo_ramdisk_size; |
211 | } |
212 | } |
Line 251... | Line 252... | ||
251 | * Initialize the boot allocator. |
252 | * Initialize the boot allocator. |
252 | */ |
253 | */ |
253 | balloc_base = base + ALIGN_UP(top, PAGE_SIZE); |
254 | balloc_base = base + ALIGN_UP(top, PAGE_SIZE); |
254 | (void) ofw_claim_phys(bootinfo.physmem_start + balloc_base, |
255 | (void) ofw_claim_phys(bootinfo.physmem_start + balloc_base, |
255 | BALLOC_MAX_SIZE); |
256 | BALLOC_MAX_SIZE); |
256 | (void) ofw_map(balloc_base, balloc_base, BALLOC_MAX_SIZE, -1); |
257 | (void) ofw_map(bootinfo.physmem_start + balloc_base, balloc_base, |
- | 258 | BALLOC_MAX_SIZE, -1); |
|
257 | balloc_init(&bootinfo.ballocs, (uintptr_t)balloc_base); |
259 | balloc_init(&bootinfo.ballocs, (uintptr_t)balloc_base); |
258 | 260 | ||
259 | printf("\nCanonizing OpenFirmware device tree..."); |
261 | printf("\nCanonizing OpenFirmware device tree..."); |
260 | bootinfo.ofw_root = ofw_tree_build(); |
262 | bootinfo.ofw_root = ofw_tree_build(); |
261 | printf("done.\n"); |
263 | printf("done.\n"); |
Line 272... | Line 274... | ||
272 | printf("\nBooting the kernel...\n"); |
274 | printf("\nBooting the kernel...\n"); |
273 | jump_to_kernel((void *) KERNEL_VIRTUAL_ADDRESS, |
275 | jump_to_kernel((void *) KERNEL_VIRTUAL_ADDRESS, |
274 | bootinfo.physmem_start | BSP_PROCESSOR, &bootinfo, |
276 | bootinfo.physmem_start | BSP_PROCESSOR, &bootinfo, |
275 | sizeof(bootinfo)); |
277 | sizeof(bootinfo)); |
276 | } |
278 | } |
277 | - |