1. 09 Feb, 2021 5 commits
  2. 04 Feb, 2021 9 commits
  3. 03 Feb, 2021 4 commits
  4. 27 Jan, 2021 6 commits
  5. 25 Jan, 2021 6 commits
  6. 22 Jan, 2021 7 commits
  7. 19 Jan, 2021 2 commits
  8. 18 Jan, 2021 1 commit
    • Alexander Lobakin's avatar
      MIPS: relocatable: optimize the relocation process · d9e84fb1
      Alexander Lobakin authored
      For now, vmlinux relocation functions for relocatable kernel are
      implemented as an array of handlers of a particular type.
      
      Convert that array into a single switch-case function to:
       - remove unused arguments;
       - change the return type of simple handlers to void;
       - remove the array and don't use any data at all;
       - avoid using indirect calls;
       - allow the compiler to inline and greatly optimize
         the relocation function[s];
      
      and also mark do_relocations() and show_kernel_relocation() static
      as they aren't used anywhere else.
      
      The result on MIPS32 R2 with GCC 10.2 -O2 is:
      
      scripts/bloat-o-meter -c arch/mips/kernel/__relocate.o arch/mips/kernel/relocate.o
      add/remove: 0/6 grow/shrink: 1/0 up/down: 356/-640 (-284)
      Function                                     old     new   delta
      relocate_kernel                              852    1208    +356
      apply_r_mips_32_rel                           20       -     -20
      apply_r_mips_hi16_rel                         40       -     -40
      apply_r_mips_64_rel                           44       -     -44
      apply_r_mips_26_rel                          144       -    -144
      show_kernel_relocation                       164       -    -164
      do_relocations                               228       -    -228
      Total: Before=1780, After=1496, chg -15.96%
      add/remove: 0/1 grow/shrink: 0/0 up/down: 0/-76 (-76)
      Data                                         old     new   delta
      reloc_handlers_rel                            76       -     -76
      Total: Before=92, After=16, chg -82.61%
      add/remove: 0/0 grow/shrink: 0/0 up/down: 0/0 (0)
      RO Data                                      old     new   delta
      Total: Before=0, After=0, chg +0.00%
      
      All functions were collapsed into the main one, relocate_kernel().
      Signed-off-by: default avatarAlexander Lobakin <alobakin@pm.me>
      Signed-off-by: default avatarThomas Bogendoerfer <tsbogend@alpha.franken.de>
      d9e84fb1