• Helge Deller's avatar
    parisc: Reduce code size by optimizing get_current() function calls · 8278cc16
    Helge Deller authored
    The get_current() code uses the mfctl() macro to get the pointer to the
    current task struct from %cr30. The problem with the mfctl() macro is,
    that it is marked volatile which is basically correct, because mfctl()
    is used to get e.g. the current internal timer or interrupt flags as
    well.
    
    But specifically the task struct pointer (%cr30) doesn't change over
    time when the kernel executes code for a task.
    
    So, by dropping the volatile when retrieving %cr30 the compiler is now
    able to get this value only once and optimize the generated code a lot.
    
    A bloat-o-meter comparism shows that this patch saves ~5kB kernel code
    on a 32-bit kernel and ~6kB kernel code on a 64-bit kernel.
    Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    8278cc16
current.h 435 Bytes