diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-07-18 06:19:57 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-07-18 06:20:01 -0400 |
| commit | 45bceffc3013bda7d2ebc7802e9b153b674e2d44 (patch) | |
| tree | 222d7dd8fd300925cbf12cdc0fba5bee2528997e /arch/x86/kernel/dumpstack_64.c | |
| parent | 6f2f3cf00ee32f75ba007a46bab88a54d68a5deb (diff) | |
| parent | 78af08d90b8f745044b1274430bc4bc6b2b27aca (diff) | |
Merge branch 'linus' into tracing/core
Merge reason: tracing/core was on an older, pre-rc1 base.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/dumpstack_64.c')
| -rw-r--r-- | arch/x86/kernel/dumpstack_64.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/arch/x86/kernel/dumpstack_64.c b/arch/x86/kernel/dumpstack_64.c index d35db5993fd6..54b0a3276766 100644 --- a/arch/x86/kernel/dumpstack_64.c +++ b/arch/x86/kernel/dumpstack_64.c | |||
| @@ -19,10 +19,8 @@ | |||
| 19 | 19 | ||
| 20 | #include "dumpstack.h" | 20 | #include "dumpstack.h" |
| 21 | 21 | ||
| 22 | static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack, | 22 | |
| 23 | unsigned *usedp, char **idp) | 23 | static char x86_stack_ids[][8] = { |
| 24 | { | ||
| 25 | static char ids[][8] = { | ||
| 26 | [DEBUG_STACK - 1] = "#DB", | 24 | [DEBUG_STACK - 1] = "#DB", |
| 27 | [NMI_STACK - 1] = "NMI", | 25 | [NMI_STACK - 1] = "NMI", |
| 28 | [DOUBLEFAULT_STACK - 1] = "#DF", | 26 | [DOUBLEFAULT_STACK - 1] = "#DF", |
| @@ -33,6 +31,15 @@ static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack, | |||
| 33 | N_EXCEPTION_STACKS + DEBUG_STKSZ / EXCEPTION_STKSZ - 2] = "#DB[?]" | 31 | N_EXCEPTION_STACKS + DEBUG_STKSZ / EXCEPTION_STKSZ - 2] = "#DB[?]" |
| 34 | #endif | 32 | #endif |
| 35 | }; | 33 | }; |
| 34 | |||
| 35 | int x86_is_stack_id(int id, char *name) | ||
| 36 | { | ||
| 37 | return x86_stack_ids[id - 1] == name; | ||
| 38 | } | ||
| 39 | |||
| 40 | static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack, | ||
| 41 | unsigned *usedp, char **idp) | ||
| 42 | { | ||
| 36 | unsigned k; | 43 | unsigned k; |
| 37 | 44 | ||
| 38 | /* | 45 | /* |
| @@ -61,7 +68,7 @@ static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack, | |||
| 61 | if (*usedp & (1U << k)) | 68 | if (*usedp & (1U << k)) |
| 62 | break; | 69 | break; |
| 63 | *usedp |= 1U << k; | 70 | *usedp |= 1U << k; |
| 64 | *idp = ids[k]; | 71 | *idp = x86_stack_ids[k]; |
| 65 | return (unsigned long *)end; | 72 | return (unsigned long *)end; |
| 66 | } | 73 | } |
| 67 | /* | 74 | /* |
| @@ -81,12 +88,13 @@ static unsigned long *in_exception_stack(unsigned cpu, unsigned long stack, | |||
| 81 | do { | 88 | do { |
| 82 | ++j; | 89 | ++j; |
| 83 | end -= EXCEPTION_STKSZ; | 90 | end -= EXCEPTION_STKSZ; |
| 84 | ids[j][4] = '1' + (j - N_EXCEPTION_STACKS); | 91 | x86_stack_ids[j][4] = '1' + |
| 92 | (j - N_EXCEPTION_STACKS); | ||
| 85 | } while (stack < end - EXCEPTION_STKSZ); | 93 | } while (stack < end - EXCEPTION_STKSZ); |
| 86 | if (*usedp & (1U << j)) | 94 | if (*usedp & (1U << j)) |
| 87 | break; | 95 | break; |
| 88 | *usedp |= 1U << j; | 96 | *usedp |= 1U << j; |
| 89 | *idp = ids[j]; | 97 | *idp = x86_stack_ids[j]; |
| 90 | return (unsigned long *)end; | 98 | return (unsigned long *)end; |
| 91 | } | 99 | } |
| 92 | #endif | 100 | #endif |
