diff options
Diffstat (limited to 'arch/x86_64/kernel/setup64.c')
-rw-r--r-- | arch/x86_64/kernel/setup64.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/arch/x86_64/kernel/setup64.c b/arch/x86_64/kernel/setup64.c index 491361752c70..9332d2361e08 100644 --- a/arch/x86_64/kernel/setup64.c +++ b/arch/x86_64/kernel/setup64.c | |||
@@ -237,28 +237,17 @@ void __cpuinit cpu_init (void) | |||
237 | * set up and load the per-CPU TSS | 237 | * set up and load the per-CPU TSS |
238 | */ | 238 | */ |
239 | for (v = 0; v < N_EXCEPTION_STACKS; v++) { | 239 | for (v = 0; v < N_EXCEPTION_STACKS; v++) { |
240 | static const unsigned int order[N_EXCEPTION_STACKS] = { | ||
241 | [0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STACK_ORDER, | ||
242 | [DEBUG_STACK - 1] = DEBUG_STACK_ORDER | ||
243 | }; | ||
240 | if (cpu) { | 244 | if (cpu) { |
241 | static const unsigned int order[N_EXCEPTION_STACKS] = { | ||
242 | [0 ... N_EXCEPTION_STACKS - 1] = EXCEPTION_STACK_ORDER, | ||
243 | [DEBUG_STACK - 1] = DEBUG_STACK_ORDER | ||
244 | }; | ||
245 | |||
246 | estacks = (char *)__get_free_pages(GFP_ATOMIC, order[v]); | 245 | estacks = (char *)__get_free_pages(GFP_ATOMIC, order[v]); |
247 | if (!estacks) | 246 | if (!estacks) |
248 | panic("Cannot allocate exception stack %ld %d\n", | 247 | panic("Cannot allocate exception stack %ld %d\n", |
249 | v, cpu); | 248 | v, cpu); |
250 | } | 249 | } |
251 | switch (v + 1) { | 250 | estacks += PAGE_SIZE << order[v]; |
252 | #if DEBUG_STKSZ > EXCEPTION_STKSZ | ||
253 | case DEBUG_STACK: | ||
254 | cpu_pda(cpu)->debugstack = (unsigned long)estacks; | ||
255 | estacks += DEBUG_STKSZ; | ||
256 | break; | ||
257 | #endif | ||
258 | default: | ||
259 | estacks += EXCEPTION_STKSZ; | ||
260 | break; | ||
261 | } | ||
262 | orig_ist->ist[v] = t->ist[v] = (unsigned long)estacks; | 251 | orig_ist->ist[v] = t->ist[v] = (unsigned long)estacks; |
263 | } | 252 | } |
264 | 253 | ||