34 |
kip = (l4_kip_t) (((l4_word_t) kip) + 0x1000); |
kip = (l4_kip_t) (((l4_word_t) kip) + 0x1000); |
35 |
|
|
36 |
if ((l4_word_t) kip >= kernel.high) |
if ((l4_word_t) kip >= kernel.high) |
37 |
panic ("Error: No KIP found in the kernel.\n"); |
panic ("No KIP found in the kernel.\n"); |
38 |
debug ("KIP found at address 0x%x.\n", kip); |
debug ("KIP found at address 0x%x.\n", kip); |
39 |
|
|
40 |
kip2 = kip + 0x1000; |
kip2 = kip + 0x1000; |
44 |
kip2 = (l4_kip_t) (((l4_word_t) kip2) + 0x1000); |
kip2 = (l4_kip_t) (((l4_word_t) kip2) + 0x1000); |
45 |
|
|
46 |
if ((l4_word_t) kip2 < kernel.high) |
if ((l4_word_t) kip2 < kernel.high) |
47 |
panic ("Error: More than one KIP found in kernel.\n"); |
panic ("More than one KIP found in kernel.\n"); |
48 |
|
|
49 |
/* Load the rootservers into the KIP. */ |
/* Load the rootservers into the KIP. */ |
50 |
kip->sigma0 = sigma0; |
kip->sigma0 = sigma0; |
51 |
kip->sigma1 = sigma1; |
kip->sigma1 = sigma1; |
52 |
kip->rootserver = rootserver; |
kip->rootserver = rootserver; |
53 |
|
/* FIXME: We should be able to specify the UTCB area for the |
54 |
|
rootserver here, but L4 lacks this feature. */ |
55 |
|
|
56 |
debug ("Sigma0: Low 0x%x, High 0x%x, IP 0x%x, SP 0x%x\n", |
debug ("Sigma0: Low 0x%x, High 0x%x, IP 0x%x, SP 0x%x\n", |
57 |
sigma0.low, sigma0.high, sigma0.ip, sigma0.sp); |
sigma0.low, sigma0.high, sigma0.ip, sigma0.sp); |
63 |
|
|
64 |
/* Load the memory map into the KIP. */ |
/* Load the memory map into the KIP. */ |
65 |
if (memory_map_size > kip->memory_info.nr) |
if (memory_map_size > kip->memory_info.nr) |
66 |
panic ("Error: Memory map table in KIP is too small."); |
panic ("Memory map table in KIP is too small."); |
67 |
|
|
68 |
memcpy ((char *) (((l4_word_t) kip) + kip->memory_info.mem_desc_ptr), |
memcpy ((char *) (((l4_word_t) kip) + kip->memory_info.mem_desc_ptr), |
69 |
(char *) memory_map, |
(char *) memory_map, |