Rev 1101 | Rev 1138 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1101 | Rev 1109 | ||
|---|---|---|---|
| Line 48... | Line 48... | ||
| 48 | #include <genarch/mm/page_pt.h> |
48 | #include <genarch/mm/page_pt.h> |
| 49 | #include <mm/tlb.h> |
49 | #include <mm/tlb.h> |
| 50 | #include <mm/as.h> |
50 | #include <mm/as.h> |
| 51 | #include <mm/slab.h> |
51 | #include <mm/slab.h> |
| 52 | #include <synch/waitq.h> |
52 | #include <synch/waitq.h> |
| - | 53 | #include <synch/futex.h> |
|
| 53 | #include <arch/arch.h> |
54 | #include <arch/arch.h> |
| 54 | #include <arch.h> |
55 | #include <arch.h> |
| 55 | #include <arch/faddr.h> |
56 | #include <arch/faddr.h> |
| 56 | #include <typedefs.h> |
57 | #include <typedefs.h> |
| 57 | #include <ipc/ipc.h> |
58 | #include <ipc/ipc.h> |
| Line 62... | Line 63... | ||
| 62 | #include <arch/smp/mps.h> |
63 | #include <arch/smp/mps.h> |
| 63 | #endif /* CONFIG_SMP */ |
64 | #endif /* CONFIG_SMP */ |
| 64 | #include <smp/smp.h> |
65 | #include <smp/smp.h> |
| 65 | 66 | ||
| 66 | config_t config; /**< Global configuration structure. */ |
67 | config_t config; /**< Global configuration structure. */ |
| 67 | init_t init = {0}; /**< Initial user-space tasks */ |
68 | init_t init = {0}; /**< Initial user-space tasks */ |
| 68 | 69 | ||
| 69 | context_t ctx; |
70 | context_t ctx; |
| 70 | 71 | ||
| 71 | /** |
72 | /** |
| 72 | * These 'hardcoded' variables will be intialized by |
73 | * These 'hardcoded' variables will be intialized by |
| Line 141... | Line 142... | ||
| 141 | */ |
142 | */ |
| 142 | void main_bsp_separated_stack(void) |
143 | void main_bsp_separated_stack(void) |
| 143 | { |
144 | { |
| 144 | task_t *k; |
145 | task_t *k; |
| 145 | thread_t *t; |
146 | thread_t *t; |
| - | 147 | count_t i; |
|
| 146 | 148 | ||
| 147 | the_initialize(THE); |
149 | the_initialize(THE); |
| - | 150 | ||
| 148 | /* |
151 | /* |
| 149 | * kconsole data structures must be initialized very early |
152 | * kconsole data structures must be initialized very early |
| 150 | * because other subsystems will register their respective |
153 | * because other subsystems will register their respective |
| 151 | * commands. |
154 | * commands. |
| 152 | */ |
155 | */ |
| Line 185... | Line 188... | ||
| 185 | calibrate_delay_loop(); |
188 | calibrate_delay_loop(); |
| 186 | timeout_init(); |
189 | timeout_init(); |
| 187 | scheduler_init(); |
190 | scheduler_init(); |
| 188 | task_init(); |
191 | task_init(); |
| 189 | thread_init(); |
192 | thread_init(); |
| - | 193 | futex_init(); |
|
| 190 | 194 | ||
| 191 | count_t i; |
- | |
| 192 | for (i = 0; i < init.cnt; i++) |
195 | for (i = 0; i < init.cnt; i++) |
| 193 | printf("init[%d].addr=%P, init[%d].size=%d\n", i, init.tasks[i].addr, i, init.tasks[i].size); |
196 | printf("init[%d].addr=%P, init[%d].size=%d\n", i, init.tasks[i].addr, i, init.tasks[i].size); |
| 194 | 197 | ||
| 195 | ipc_init(); |
198 | ipc_init(); |
| - | 199 | ||
| 196 | /* |
200 | /* |
| 197 | * Create kernel task. |
201 | * Create kernel task. |
| 198 | */ |
202 | */ |
| 199 | k = task_create(AS_KERNEL, "KERNEL"); |
203 | k = task_create(AS_KERNEL, "KERNEL"); |
| 200 | if (!k) |
204 | if (!k) |