aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86_64
diff options
context:
space:
mode:
authorKeith Owens <kaos@ocs.com.au>2006-09-26 04:52:38 -0400
committerAndi Kleen <andi@basil.nowhere.org>2006-09-26 04:52:38 -0400
commitf574164491d00d28b727d713685fb5edc9138200 (patch)
tree7ab1a5a2257e27824cf3762fcf276840259deceb /arch/x86_64
parent575400d1b483fbe9e03c68758059bfaf4e4768d1 (diff)
[PATCH] Remove most of the special cases for the debug IST stack
Remove most of the special cases for the debug IST stack. This is a follow on clean up patch, it requires the bug fix patch that adds orig_ist. Signed-off-by: Keith Owens <kaos@ocs.com.au> Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/x86_64')
-rw-r--r--arch/x86_64/kernel/setup64.c21
-rw-r--r--arch/x86_64/kernel/traps.c21
2 files changed, 6 insertions, 36 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
diff --git a/arch/x86_64/kernel/traps.c b/arch/x86_64/kernel/traps.c
index 38bc821e457b..fb8486eca1b6 100644
--- a/arch/x86_64/kernel/traps.c
+++ b/arch/x86_64/kernel/traps.c
@@ -162,26 +162,7 @@ static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack,
162 * 'stack' is in one of them: 162 * 'stack' is in one of them:
163 */ 163 */
164 for (k = 0; k < N_EXCEPTION_STACKS; k++) { 164 for (k = 0; k < N_EXCEPTION_STACKS; k++) {
165 unsigned long end; 165 unsigned long end = per_cpu(orig_ist, cpu).ist[k];
166
167 /*
168 * set 'end' to the end of the exception stack.
169 */
170 switch (k + 1) {
171 /*
172 * TODO: this block is not needed i think, because
173 * setup64.c:cpu_init() sets up t->ist[DEBUG_STACK]
174 * properly too.
175 */
176#if DEBUG_STKSZ > EXCEPTION_STKSZ
177 case DEBUG_STACK:
178 end = cpu_pda(cpu)->debugstack + DEBUG_STKSZ;
179 break;
180#endif
181 default:
182 end = per_cpu(orig_ist, cpu).ist[k];
183 break;
184 }
185 /* 166 /*
186 * Is 'stack' above this exception frame's end? 167 * Is 'stack' above this exception frame's end?
187 * If yes then skip to the next frame. 168 * If yes then skip to the next frame.