Rev 3588 | Rev 4338 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3588 | Rev 4337 | ||
---|---|---|---|
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 | /* |