diff options
author | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 18:22:14 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2006-09-27 18:22:14 +0900 |
commit | a6a31139897a5e539efe7ad3b7bd351fa9673ce8 (patch) | |
tree | 6e2ad11d93ab95214694038080c79284c6da30d6 /include/asm-sh/thread_info.h | |
parent | 2cb7ce3bb384f30a377f66336c78546b834604df (diff) | |
download | op-kernel-dev-a6a31139897a5e539efe7ad3b7bd351fa9673ce8.zip op-kernel-dev-a6a31139897a5e539efe7ad3b7bd351fa9673ce8.tar.gz |
sh: Add support for 4K stacks.
This enables support for 4K stacks on SH.
Currently this depends on DEBUG_KERNEL, but likely all boards
will switch to this as the default in the future.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include/asm-sh/thread_info.h')
-rw-r--r-- | include/asm-sh/thread_info.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/include/asm-sh/thread_info.h b/include/asm-sh/thread_info.h index 605259f..3ebc3f9 100644 --- a/include/asm-sh/thread_info.h +++ b/include/asm-sh/thread_info.h @@ -9,8 +9,8 @@ * Copyright (C) 2002 David Howells (dhowells@redhat.com) * - Incorporating suggestions made by Linus Torvalds and Dave Miller */ - #ifdef __KERNEL__ +#include <asm/page.h> #ifndef __ASSEMBLY__ #include <asm/processor.h> @@ -23,13 +23,20 @@ struct thread_info { int preempt_count; /* 0 => preemptable, <0 => BUG */ mm_segment_t addr_limit; /* thread address space */ struct restart_block restart_block; + unsigned long previous_sp; /* sp of previous stack in case + of nested IRQ stacks */ __u8 supervisor_stack[0]; }; #endif #define PREEMPT_ACTIVE 0x10000000 + +#ifdef CONFIG_4KSTACKS +#define THREAD_SIZE (PAGE_SIZE) +#else #define THREAD_SIZE (PAGE_SIZE * 2) +#endif #define STACK_WARN (THREAD_SIZE / 8) /* @@ -52,6 +59,9 @@ struct thread_info { #define init_thread_info (init_thread_union.thread_info) #define init_stack (init_thread_union.stack) +/* how to get the current stack pointer from C */ +register unsigned long current_stack_pointer asm("r15") __attribute_used__; + /* how to get the thread information struct from C */ static inline struct thread_info *current_thread_info(void) { |