108 |
|
|
109 |
/* Add the region with the name NAME from START to END to the table of |
/* Add the region with the name NAME from START to END to the table of |
110 |
regions to check against. Before doing that, check for overlaps |
regions to check against. Before doing that, check for overlaps |
111 |
with existing regions, unless FORCE is true. */ |
with existing regions. */ |
112 |
void |
void |
113 |
loader_add_region (char *name, l4_word_t start, l4_word_t end, int force) |
loader_add_region (char *name, l4_word_t start, l4_word_t end) |
114 |
{ |
{ |
115 |
|
debug ("Protected Region: %s (0x%x - 0x%x)\n", name, start, end); |
116 |
|
|
117 |
if (nr_regions == MAX_REGIONS) |
if (nr_regions == MAX_REGIONS) |
118 |
panic ("Too many memory regions, region %s doesn't fit", name); |
panic ("Too many memory regions, region %s doesn't fit", name); |
119 |
|
|
120 |
if (!force) |
check_region (name, start, end); |
|
check_region (name, start, end); |
|
121 |
|
|
122 |
used_regions[nr_regions].name = name; |
used_regions[nr_regions].name = name; |
123 |
used_regions[nr_regions].start = start; |
used_regions[nr_regions].start = start; |
207 |
|
|
208 |
/* FIXME: Add this as a bootloader specific memory type to L4's |
/* FIXME: Add this as a bootloader specific memory type to L4's |
209 |
memdesc list instead. */ |
memdesc list instead. */ |
210 |
loader_add_region (name, new_start, new_end, 0); |
loader_add_region (name, new_start, new_end); |
211 |
|
|
212 |
if (new_start_p) |
if (new_start_p) |
213 |
*new_start_p = new_start; |
*new_start_p = new_start; |
227 |
{ |
{ |
228 |
if (!kernel.low) |
if (!kernel.low) |
229 |
panic ("No L4 kernel found"); |
panic ("No L4 kernel found"); |
230 |
loader_add_region ("kernel-mod", kernel.low, kernel.high, 0); |
loader_add_region ("kernel-mod", kernel.low, kernel.high); |
231 |
|
|
232 |
if (!sigma0.low) |
if (!sigma0.low) |
233 |
panic ("No sigma0 server found"); |
panic ("No sigma0 server found"); |
234 |
loader_add_region ("sigma0-mod", sigma0.low, sigma0.high, 0); |
loader_add_region ("sigma0-mod", sigma0.low, sigma0.high); |
235 |
|
|
236 |
if (sigma1.low) |
if (sigma1.low) |
237 |
loader_add_region ("sigma1-mod", sigma1.low, sigma1.high, 0); |
loader_add_region ("sigma1-mod", sigma1.low, sigma1.high); |
238 |
|
|
239 |
if (!rootserver.low) |
if (!rootserver.low) |
240 |
panic ("No rootserver server found"); |
panic ("No rootserver server found"); |
241 |
loader_add_region ("rootserver-mod", rootserver.low, rootserver.high, 0); |
loader_add_region ("rootserver-mod", rootserver.low, rootserver.high); |
242 |
|
|
243 |
elf_load ("kernel", kernel.low, kernel.high, |
elf_load ("kernel", kernel.low, kernel.high, |
244 |
&kernel.low, &kernel.high, &kernel.ip); |
&kernel.low, &kernel.high, &kernel.ip); |