Rev 3607 | Rev 3770 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3607 | Rev 3742 | ||
|---|---|---|---|
| Line 189... | Line 189... | ||
| 189 | */ |
189 | */ |
| 190 | void main_bsp_separated_stack(void) |
190 | void main_bsp_separated_stack(void) |
| 191 | { |
191 | { |
| 192 | /* Keep this the first thing. */ |
192 | /* Keep this the first thing. */ |
| 193 | the_initialize(THE); |
193 | the_initialize(THE); |
| 194 | - | ||
| 195 | LOG(); |
- | |
| 196 | 194 | ||
| 197 | version_print(); |
195 | version_print(); |
| 198 | 196 | ||
| 199 | LOG("\nconfig.base=%#" PRIp " config.kernel_size=%" PRIs |
197 | LOG("\nconfig.base=%#" PRIp " config.kernel_size=%" PRIs |
| 200 | "\nconfig.stack_base=%#" PRIp " config.stack_size=%" PRIs, |
198 | "\nconfig.stack_base=%#" PRIp " config.stack_size=%" PRIs, |
| 201 | config.base, config.kernel_size, config.stack_base, |
199 | config.base, config.kernel_size, config.stack_base, |
| 202 | config.stack_size); |
200 | config.stack_size); |
| 203 | - | ||
| 204 | 201 | ||
| - | 202 | #ifdef CONFIG_KCONSOLE |
|
| 205 | /* |
203 | /* |
| 206 | * kconsole data structures must be initialized very early |
204 | * kconsole data structures must be initialized very early |
| 207 | * because other subsystems will register their respective |
205 | * because other subsystems will register their respective |
| 208 | * commands. |
206 | * commands. |
| 209 | */ |
207 | */ |
| 210 | LOG_EXEC(kconsole_init()); |
208 | LOG_EXEC(kconsole_init()); |
| - | 209 | #endif |
|
| 211 | 210 | ||
| 212 | /* |
211 | /* |
| 213 | * Exception handler initialization, before architecture |
212 | * Exception handler initialization, before architecture |
| 214 | * starts adding its own handlers |
213 | * starts adding its own handlers |
| 215 | */ |
214 | */ |
| Line 250... | Line 249... | ||
| 250 | LOG_EXEC(futex_init()); |
249 | LOG_EXEC(futex_init()); |
| 251 | 250 | ||
| 252 | if (init.cnt > 0) { |
251 | if (init.cnt > 0) { |
| 253 | count_t i; |
252 | count_t i; |
| 254 | for (i = 0; i < init.cnt; i++) |
253 | for (i = 0; i < init.cnt; i++) |
| 255 | printf("init[%" PRIc "].addr=%#" PRIp ", init[%" PRIc |
254 | LOG("init[%" PRIc "].addr=%#" PRIp ", init[%" PRIc |
| 256 | "].size=%#" PRIs "\n", i, init.tasks[i].addr, i, |
255 | "].size=%#" PRIs "\n", i, init.tasks[i].addr, i, |
| 257 | init.tasks[i].size); |
256 | init.tasks[i].size); |
| 258 | } else |
257 | } else |
| 259 | printf("No init binaries found\n"); |
258 | printf("No init binaries found\n"); |
| 260 | 259 | ||
| Line 269... | Line 268... | ||
| 269 | panic("Can't create kernel task\n"); |
268 | panic("Can't create kernel task\n"); |
| 270 | 269 | ||
| 271 | /* |
270 | /* |
| 272 | * Create the first thread. |
271 | * Create the first thread. |
| 273 | */ |
272 | */ |
| - | 273 | thread_t *kinit_thread |
|
| 274 | thread_t *kinit_thread = thread_create(kinit, NULL, kernel, 0, "kinit", |
274 | = thread_create(kinit, NULL, kernel, 0, "kinit", true); |
| 275 | true); |
- | |
| 276 | if (!kinit_thread) |
275 | if (!kinit_thread) |
| 277 | panic("Can't create kinit thread\n"); |
276 | panic("Can't create kinit thread\n"); |
| 278 | LOG_EXEC(thread_ready(kinit_thread)); |
277 | LOG_EXEC(thread_ready(kinit_thread)); |
| 279 | 278 | ||
| 280 | /* |
279 | /* |