Rev 1833 | Rev 1901 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1833 | Rev 1894 | ||
---|---|---|---|
Line 92... | Line 92... | ||
92 | /** Initial user-space tasks */ |
92 | /** Initial user-space tasks */ |
93 | init_t init = { |
93 | init_t init = { |
94 | 0 |
94 | 0 |
95 | }; |
95 | }; |
96 | 96 | ||
- | 97 | /** Boot allocations. */ |
|
- | 98 | ballocs_t ballocs = { |
|
- | 99 | .base = NULL, |
|
- | 100 | .size = 0 |
|
- | 101 | }; |
|
- | 102 | ||
97 | context_t ctx; |
103 | context_t ctx; |
98 | 104 | ||
99 | /* |
105 | /* |
100 | * These 'hardcoded' variables will be intialized by |
106 | * These 'hardcoded' variables will be intialized by |
101 | * the linker or the low level assembler code with |
107 | * the linker or the low level assembler code with |
Line 151... | Line 157... | ||
151 | for (i = 0; i < init.cnt; i++) { |
157 | for (i = 0; i < init.cnt; i++) { |
152 | if (PA_overlaps(config.stack_base, config.stack_size, init.tasks[i].addr, init.tasks[i].size)) |
158 | if (PA_overlaps(config.stack_base, config.stack_size, init.tasks[i].addr, init.tasks[i].size)) |
153 | config.stack_base = ALIGN_UP(init.tasks[i].addr + init.tasks[i].size, config.stack_size); |
159 | config.stack_base = ALIGN_UP(init.tasks[i].addr + init.tasks[i].size, config.stack_size); |
154 | } |
160 | } |
155 | 161 | ||
- | 162 | /* Avoid placing stack on top of boot allocations. */ |
|
- | 163 | if (ballocs.size) { |
|
- | 164 | if (PA_overlaps(config.stack_base, config.stack_size, ballocs.base, ballocs.size)) |
|
- | 165 | config.stack_base = ALIGN_UP(ballocs.base + ballocs.size, PAGE_SIZE); |
|
- | 166 | } |
|
- | 167 | ||
156 | if (config.stack_base < stack_safe) |
168 | if (config.stack_base < stack_safe) |
157 | config.stack_base = ALIGN_UP(stack_safe, PAGE_SIZE); |
169 | config.stack_base = ALIGN_UP(stack_safe, PAGE_SIZE); |
158 | 170 | ||
159 | context_save(&ctx); |
171 | context_save(&ctx); |
160 | context_set(&ctx, FADDR(main_bsp_separated_stack), config.stack_base, THREAD_STACK_SIZE); |
172 | context_set(&ctx, FADDR(main_bsp_separated_stack), config.stack_base, THREAD_STACK_SIZE); |