Rev 3399 | Rev 3672 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3399 | Rev 3408 | ||
|---|---|---|---|
| Line 34... | Line 34... | ||
| 34 | #include <balloc.h> |
34 | #include <balloc.h> |
| 35 | #include <ofw.h> |
35 | #include <ofw.h> |
| 36 | #include <ofw_tree.h> |
36 | #include <ofw_tree.h> |
| 37 | #include "ofwarch.h" |
37 | #include "ofwarch.h" |
| 38 | #include <align.h> |
38 | #include <align.h> |
| - | 39 | #include <string.h> |
|
| 39 | 40 | ||
| 40 | bootinfo_t bootinfo; |
41 | bootinfo_t bootinfo; |
| 41 | component_t components[COMPONENTS]; |
42 | component_t components[COMPONENTS]; |
| 42 | 43 | ||
| 43 | char *release = RELEASE; |
44 | char *release = RELEASE; |
| Line 157... | Line 158... | ||
| 157 | * Claim and map the whole ramdisk as it may exceed the area |
158 | * Claim and map the whole ramdisk as it may exceed the area |
| 158 | * given to us by SILO. |
159 | * given to us by SILO. |
| 159 | */ |
160 | */ |
| 160 | (void) ofw_claim_phys(base + top, silo_ramdisk_size); |
161 | (void) ofw_claim_phys(base + top, silo_ramdisk_size); |
| 161 | (void) ofw_map(base + top, base + top, silo_ramdisk_size, -1); |
162 | (void) ofw_map(base + top, base + top, silo_ramdisk_size, -1); |
| 162 | /* |
- | |
| 163 | * FIXME If the source and destination overlap, it may be |
- | |
| 164 | * desirable to copy in reverse order, depending on how the two |
- | |
| 165 | * regions overlap. |
- | |
| 166 | */ |
- | |
| 167 | memcpy(base + top, (void *)((uintptr_t)silo_ramdisk_image), |
163 | memmove(base + top, (void *)((uintptr_t)silo_ramdisk_image), |
| 168 | silo_ramdisk_size); |
164 | silo_ramdisk_size); |
| 169 | printf("done.\n"); |
165 | printf("done.\n"); |
| 170 | top += silo_ramdisk_size; |
166 | top += silo_ramdisk_size; |
| 171 | } |
167 | } |
| 172 | skip_ramdisk: |
168 | skip_ramdisk: |