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) |