SOURCES: kernel-2.6.17-thread_info-buildfix.patch (NEW) - buildfix for kern...

pawelz pawelz at pld-linux.org
Sun Dec 7 03:58:06 CET 2008


Author: pawelz                       Date: Sun Dec  7 02:58:06 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- buildfix for kernel 2.6.17 with new gcc (it is needed on ti,
  but not on ac)

---- Files affected:
SOURCES:
   kernel-2.6.17-thread_info-buildfix.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/kernel-2.6.17-thread_info-buildfix.patch
diff -u /dev/null SOURCES/kernel-2.6.17-thread_info-buildfix.patch:1.1
--- /dev/null	Sun Dec  7 03:58:06 2008
+++ SOURCES/kernel-2.6.17-thread_info-buildfix.patch	Sun Dec  7 03:58:00 2008
@@ -0,0 +1,45 @@
+
+From: Chuck Ebbert <76306.1226 at compuserve.com>
+
+Using C code for current_thread_info() lets the compiler optimize it.
+With gcc 4.0.2, kernel is smaller:
+
+    text           data     bss     dec     hex filename
+ 3645212         555556  312024 4512792  44dc18 2.6.17-rc6-nb-post/vmlinux
+ 3647276         555556  312024 4514856  44e428 2.6.17-rc6-nb/vmlinux
+ -------
+   -2064
+
+Signed-off-by: Chuck Ebbert <76306.1226 at compuserve.com>
+Signed-off-by: Andrew Morton <akpm at osdl.org>
+---
+
+ include/asm-i386/thread_info.h |   10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+diff -puN include/asm-i386/thread_info.h~i386-use-c-code-for-current_thread_info include/asm-i386/thread_info.h
+--- a/include/asm-i386/thread_info.h~i386-use-c-code-for-current_thread_info
++++ a/include/asm-i386/thread_info.h
+@@ -83,17 +83,15 @@ struct 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("esp") __attribute_used__;
++
+ /* how to get the thread information struct from C */
+ static inline struct thread_info *current_thread_info(void)
+ {
+-	struct thread_info *ti;
+-	__asm__("andl %%esp,%0; ":"=r" (ti) : "0" (~(THREAD_SIZE - 1)));
+-	return ti;
++	return (struct thread_info *)(current_stack_pointer & ~(THREAD_SIZE - 1));
+ }
+ 
+-/* how to get the current stack pointer from C */
+-register unsigned long current_stack_pointer asm("esp") __attribute_used__;
+-
+ /* thread information allocation */
+ #ifdef CONFIG_DEBUG_STACK_USAGE
+ #define alloc_thread_info(tsk)					\
+_
================================================================


More information about the pld-cvs-commit mailing list