linux/arch/mips
Alexander Lobakin 049a68efbf MIPS: module: optimize module relocations processing
For now, module relocation functions are implemented as an array
of handlers of type reloc_handler_t.

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].

The result on MIPS32 R2 with GCC 10.2 -O2 is:

scripts/bloat-o-meter -c arch/mips/kernel/__module.o arch/mips/kernel/module.o
add/remove: 1/11 grow/shrink: 1/0 up/down: 876/-1436 (-560)
Function                                     old     new   delta
apply_relocate                               456    1148    +692
apply_r_mips_pc                                -     184    +184
apply_r_mips_none                              8       -      -8
apply_r_mips_32                               16       -     -16
apply_r_mips_64                               76       -     -76
apply_r_mips_highest                          88       -     -88
apply_r_mips_higher                          108       -    -108
apply_r_mips_26                              132       -    -132
apply_r_mips_pc26                            160       -    -160
apply_r_mips_pc21                            160       -    -160
apply_r_mips_pc16                            160       -    -160
apply_r_mips_hi16                            172       -    -172
apply_r_mips_lo16                            356       -    -356
Total: Before=2608, After=2048, chg -21.47%
add/remove: 0/0 grow/shrink: 0/0 up/down: 0/0 (0)
Data                                         old     new   delta
Total: Before=12, After=12, chg +0.00%
add/remove: 0/1 grow/shrink: 0/0 up/down: 0/-248 (-248)
RO Data                                      old     new   delta
reloc_handlers                               248       -    -248
Total: Before=248, After=0, chg -100.00%

All functions were collapsed into a single one that is called
directly by $(srctree)/kernel/module.c.

Signed-off-by: Alexander Lobakin <alobakin@pm.me>
Reviewed-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2021-01-18 15:55:16 +01:00
..
alchemy MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
ar7 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
ath25 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
ath79 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
bcm47xx MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
bcm63xx MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
bmips MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
boot MIPS: zboot: Avoid endless loop in clear BSS. 2021-01-07 17:12:14 +01:00
cavium-octeon MIPS updates for v5.11: 2020-12-16 12:07:54 -08:00
cobalt MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
configs MIPS: Loongson64: Give chance to build under !CONFIG_NUMA and !CONFIG_SMP 2021-01-04 11:15:07 +01:00
crypto
dec MIPS: DEC: Restore bootmem reservation for firmware working memory area 2020-10-14 23:57:57 +02:00
fw MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
generic MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
include MIPS: Compare __SYNC_loongson3_war against 0 2021-01-15 15:32:47 +01:00
ingenic MIPS: jz4740: Rename jz4740 folders to ingenic 2020-09-18 16:35:05 +02:00
jazz dma-mapping: merge <linux/dma-noncoherent.h> into <linux/dma-map-ops.h> 2020-10-06 07:07:06 +02:00
kernel MIPS: module: optimize module relocations processing 2021-01-18 15:55:16 +01:00
kvm MIPS: kvm: Use vm_get_page_prot to get protection bits 2020-11-19 13:26:53 +01:00
lantiq MIPS: lantiq: irq: register the interrupt controllers with irqchip_init 2021-01-13 11:06:12 +01:00
lib mips: lib: uncached: fix non-standard usage of variable 'sp' 2020-12-14 16:03:11 +01:00
loongson2ef MIPS: init: move externs to header file 2021-01-07 17:12:51 +01:00
loongson32 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
loongson64 MIPS: Support binutils configured with --enable-mips-fix-loongson3-llsc=yes 2021-01-15 15:34:20 +01:00
math-emu MIPS: Use fallthrough for arch/mips 2020-05-07 11:55:47 +02:00
mm MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
mti-malta MIPS: init: move externs to header file 2021-01-07 17:12:51 +01:00
net
netlogic MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
oprofile mips/oprofile: Fix fallthrough placement 2020-08-22 09:23:15 +02:00
pci mips: pci: convert comma to semicolon 2020-12-28 22:33:43 +01:00
pic32 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
pistachio MIPS: init: move externs to header file 2021-01-07 17:12:51 +01:00
power
ralink MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
rb532 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
sgi-ip22 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sgi-ip27 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
sgi-ip30 MIPS: SGI-IP30: Move irq bits to better header files 2020-09-21 22:15:49 +02:00
sgi-ip32 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
sibyte MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
sni MIPS: SNI: Fix spurious interrupts 2020-09-16 22:40:58 +02:00
tools MIPS: tools: Fix resource leak in elf-entry.c 2020-05-24 09:29:48 +02:00
txx9 MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
vdso MIPS: VDSO: Use CLANG_FLAGS instead of filtering out '--target=' 2021-01-18 15:40:14 +01:00
vr41xx MIPS: Remove empty prom_free_prom_memory functions 2021-01-07 17:11:33 +01:00
Kbuild MIPS: Fix "make clean" error due to recent changes 2020-05-13 13:20:22 +02:00
Kbuild.platforms MIPS: generic: Add support for Ingenic SoCs 2020-09-18 16:33:59 +02:00
Kconfig MIPS: select ARCH_WANT_LD_ORPHAN_WARN 2021-01-15 15:27:54 +01:00
Kconfig.debug mips: Add CPS_NS16550_WIDTH config 2020-05-22 09:12:52 +02:00
Makefile MIPS: Support binutils configured with --enable-mips-fix-loongson3-llsc=yes 2021-01-15 15:34:20 +01:00
Makefile.postlink MIPS: fix indentation of the 'RELOCS' message 2020-01-20 15:37:30 -08:00