Commit aae898de authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] kill INIT_THREAD_SIZE

From: Matt Mackall <mpm@selenic.com>

This piece of the THREAD_SIZE cleanup got dropped.  If you make THREAD_SIZE
> 8k, the init thread overlaps the .init section and gets smashed.  I've
gone ahead and killed INIT_THREAD_SIZE throughout as it wasn't doing much.
This also saves 4k when we use 4k stacks.  Please apply.  Couple more minor
pieces remaining.
parent cd74e1dc
......@@ -325,7 +325,7 @@ copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
/* Use same stack depth as parent */
cregs->ksp = ((unsigned long)(ti))
+ (pregs->gr[21] & (INIT_THREAD_SIZE - 1));
+ (pregs->gr[21] & (THREAD_SIZE - 1));
cregs->gr[30] = usp;
if (p->personality == PER_HPUX) {
#ifdef CONFIG_HPUX
......
......@@ -23,14 +23,6 @@ EXPORT_SYMBOL(init_mm);
__asm__ (".text");
union thread_union init_thread_union = { INIT_THREAD_INFO(init_task) };
/*
* This is to make the init_thread+stack be the right size for >8k pagesize.
* The definition of thread_union in sched.h makes it 16k wide.
*/
#if PAGE_SHIFT != 13
char init_task_stack[THREAD_SIZE - INIT_THREAD_SIZE] = { 0 };
#endif
/*
* Initial task structure.
*
......
......@@ -81,8 +81,6 @@ static inline struct thread_info *current_thread_info(void)
/* FIXME - PAGE_SIZE < 32K */
#define THREAD_SIZE (8192)
/*FIXME INIT_THREAD_SIZE - how big? */
//#define INIT_THREAD_SIZE (65536)
#define __get_user_regs(x) (((struct pt_regs *)((unsigned long)(x) + THREAD_SIZE - 8)) - 1)
extern struct thread_info *alloc_thread_info(struct task_struct *task);
......
......@@ -100,9 +100,6 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *)
* Size of kernel stack for each process.
* Observe the order of get_free_pages() in alloc_thread_info().
* The sun4 has 8K stack too, because it's short on memory, and 16K is a waste.
*
* XXX Watch how INIT_THREAD_SIZE evolves in linux/sched.h and elsewhere.
* On 2.5.24 it happens to match 8192 magically.
*/
#define THREAD_SIZE 8192
......
......@@ -94,8 +94,6 @@ struct thread_struct {
.request = { 0 } \
}
#define INIT_THREAD_SIZE ((1 << CONFIG_KERNEL_STACK_ORDER) * PAGE_SIZE)
typedef struct {
unsigned long seg;
} mm_segment_t;
......
......@@ -560,13 +560,9 @@ void yield(void);
*/
extern struct exec_domain default_exec_domain;
#ifndef INIT_THREAD_SIZE
# define INIT_THREAD_SIZE 2048*sizeof(long)
#endif
union thread_union {
struct thread_info thread_info;
unsigned long stack[INIT_THREAD_SIZE/sizeof(long)];
unsigned long stack[THREAD_SIZE/sizeof(long)];
};
#ifndef __HAVE_ARCH_KSTACK_END
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment