• Denys Vlasenko's avatar
    x86: trivial printk optimizations · 9b706aee
    Denys Vlasenko authored
    In arch/x86/boot/printf.c gets rid of unused tail of digits: const char
    *digits = "0123456789abcdefghijklmnopqrstuvwxyz"; (we are using 0-9a-f
    only)
    
    Uses smaller/faster lowercasing (by ORing with 0x20)
    if we know that we work on numbers/digits. Makes
    strtoul smaller, and also we are getting rid of
    
      static const char small_digits[] = "0123456789abcdefx";
      static const char large_digits[] = "0123456789ABCDEFX";
    
    since this works equally well:
    
      static const char digits[16] = "0123456789ABCDEF";
    
    Size savings:
    
    $ size vmlinux.org vmlinux
       text    data     bss     dec     hex filename
     877320  112252   90112 1079684  107984 vmlinux.org
     877048  112252   90112 1079412  107874 vmlinux
    
    It may be also a tiny bit faster because code has less
    branches now, but I doubt it is measurable.
    
    [ hugh@veritas.com: uppercase pointers fix ]
    Signed-off-by: default avatarDenys Vlasenko <vda.linux@googlemail.com>
    Cc: Andi Kleen <ak@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    9b706aee
vsprintf.c 26 KB