lkml.org 
[lkml]   [2006]   [Jun]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch] i386: use C code for current_thread_info()
    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@compuserve.com>

    --- 2.6.17-rc6-32.orig/include/asm-i386/thread_info.h
    +++ 2.6.17-rc6-32/include/asm-i386/thread_info.h
    @@ -84,17 +84,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) \
    --
    Chuck
    -
    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/
    \
     
     \ /
      Last update: 2006-06-11 21:18    [W:0.020 / U:31.080 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site