Messages in this thread Patches in this message | | | From | "Balbir Singh" <> | Subject | Need help with changing stack size (attn parisc folks) | Date | Wed, 06 Feb 2002 16:12:12 -0800 |
| |
I have some legacy code and I think I run into some kind of stack overflow with it. To verify that, I tried increasing the stack size from 8K to 16K. I changed the following files
processor.h current.h vmlinux.lds head.S
The changes were kind of obvious. I know the PARISC guys have done something similar. Is there something missing with my changes, since the kernel does not come up, it is unable to start even kswapd. The diffs have been include below. Please cc to me in your reply since I am not hooked onto lkml.
All help appreciated,
Thanks, Balbir
--- processor.h.org Wed Feb 6 15:10:37 2002 +++ processor.h Wed Feb 6 15:53:10 2002 @@ -447,9 +447,9 @@ #define KSTK_EIP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1019]) #define KSTK_ESP(tsk) (((unsigned long *)(4096+(unsigned long)(tsk)))[1022])
-#define THREAD_SIZE (2*PAGE_SIZE) -#define alloc_task_struct() ((struct task_struct *) __get_free_pages(GFP_KERNEL,1)) -#define free_task_struct(p) free_pages((unsigned long) (p), 1) +#define THREAD_SIZE (4*PAGE_SIZE) +#define alloc_task_struct() ((struct task_struct *) __get_free_pages(GFP_KERNEL,2)) +#define free_task_struct(p) free_pages((unsigned long) (p), 2) #define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count)
#define init_task (init_task_union.task)
--- current.h.org Wed Feb 6 15:11:51 2002 +++ current.h Wed Feb 6 15:52:12 2002 @@ -6,7 +6,7 @@ static inline struct task_struct * get_current(void) { struct task_struct *current; - __asm__("andl %%esp,%0; ":"=r" (current) : "0" (~8191UL)); + __asm__("andl %%esp,%0; ":"=r" (current) : "0" (~(THREAD_SIZE - 1))); return current; }
--- vmlinux.lds.org Wed Feb 6 15:41:07 2002 +++ vmlinux.lds Wed Feb 6 15:41:15 2002 @@ -36,7 +36,7 @@
_edata = .; /* End of data section */
- . = ALIGN(8192); /* init_task */ + . = ALIGN(16384); /* init_task */ .data.init_task : { *(.data.init_task) }
. = ALIGN(4096); /* Init code and data */ --- head.S.org Wed Feb 6 16:21:47 2002 +++ head.S Wed Feb 6 16:22:21 2002 @@ -320,7 +320,7 @@ ret
ENTRY(stack_start) - .long SYMBOL_NAME(init_task_union)+8192 + .long SYMBOL_NAME(init_task_union)+16384 .long __KERNEL_DS
/* This is the default interrupt "handler" :-) */
_________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |