From: Matt Mackall <mpm@selenic.com>
I noticed that my vmlinux BSS had grown from 17k to 45k between 2.6.5 and
2.6.6. 8k was moving a pair of objects in head.S from the text section to
bss, 8k was the introduction of IRQ stacks, while the remainder (12k) was
page alignment slop, some of it spurious. The following patch brings BSS
down to the expected 33k.
Throw the IRQ stacks into the page aligned section to avoided wasted BSS
space. While we'd expect this to save up to 4k, this saves over 10k of BSS
here due to gcc3.3 spuriously aligning other objects in the vicinity.
Signed-off-by: Matt Mackall <mpm@selenic.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
#ifdef CONFIG_4KSTACKS
-static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE)));
-static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE)));
+static char softirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
+static char hardirq_stack[NR_CPUS * THREAD_SIZE] __attribute__((__aligned__(THREAD_SIZE), __section__(".bss.page_aligned")));
/*
* allocate per-cpu stacks for hardirq and for softirq processing