powerpc: module_[32|64].c: replace swap function with built-in one
Replace relaswap with built-in one, because relaswap does a simple byte to byte swap. Since Spectre mitigations have made indirect function calls more expensive, and the default simple byte copies swap is implemented without them, an "optimized" custom swap function is now a waste of time as well as code. Signed-off-by: Andrey Abramov <st5pub@yandex.ru> Reviewed-by: George Spelvin <lkml@sdf.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/994931554238042@iva8-b333b7f98ab0.qloud-c.yandex.net
This commit is contained in:
Родитель
2f62870ca5
Коммит
bac7ca7b98
|
@ -67,21 +67,6 @@ static int relacmp(const void *_x, const void *_y)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void relaswap(void *_x, void *_y, int size)
|
|
||||||
{
|
|
||||||
uint32_t *x, *y, tmp;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
y = (uint32_t *)_x;
|
|
||||||
x = (uint32_t *)_y;
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof(Elf32_Rela) / sizeof(uint32_t); i++) {
|
|
||||||
tmp = x[i];
|
|
||||||
x[i] = y[i];
|
|
||||||
y[i] = tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get the potential trampolines size required of the init and
|
/* Get the potential trampolines size required of the init and
|
||||||
non-init sections */
|
non-init sections */
|
||||||
static unsigned long get_plt_size(const Elf32_Ehdr *hdr,
|
static unsigned long get_plt_size(const Elf32_Ehdr *hdr,
|
||||||
|
@ -118,7 +103,7 @@ static unsigned long get_plt_size(const Elf32_Ehdr *hdr,
|
||||||
*/
|
*/
|
||||||
sort((void *)hdr + sechdrs[i].sh_offset,
|
sort((void *)hdr + sechdrs[i].sh_offset,
|
||||||
sechdrs[i].sh_size / sizeof(Elf32_Rela),
|
sechdrs[i].sh_size / sizeof(Elf32_Rela),
|
||||||
sizeof(Elf32_Rela), relacmp, relaswap);
|
sizeof(Elf32_Rela), relacmp, NULL);
|
||||||
|
|
||||||
ret += count_relocs((void *)hdr
|
ret += count_relocs((void *)hdr
|
||||||
+ sechdrs[i].sh_offset,
|
+ sechdrs[i].sh_offset,
|
||||||
|
|
|
@ -226,21 +226,6 @@ static int relacmp(const void *_x, const void *_y)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void relaswap(void *_x, void *_y, int size)
|
|
||||||
{
|
|
||||||
uint64_t *x, *y, tmp;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
y = (uint64_t *)_x;
|
|
||||||
x = (uint64_t *)_y;
|
|
||||||
|
|
||||||
for (i = 0; i < sizeof(Elf64_Rela) / sizeof(uint64_t); i++) {
|
|
||||||
tmp = x[i];
|
|
||||||
x[i] = y[i];
|
|
||||||
y[i] = tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get size of potential trampolines required. */
|
/* Get size of potential trampolines required. */
|
||||||
static unsigned long get_stubs_size(const Elf64_Ehdr *hdr,
|
static unsigned long get_stubs_size(const Elf64_Ehdr *hdr,
|
||||||
const Elf64_Shdr *sechdrs)
|
const Elf64_Shdr *sechdrs)
|
||||||
|
@ -264,7 +249,7 @@ static unsigned long get_stubs_size(const Elf64_Ehdr *hdr,
|
||||||
*/
|
*/
|
||||||
sort((void *)sechdrs[i].sh_addr,
|
sort((void *)sechdrs[i].sh_addr,
|
||||||
sechdrs[i].sh_size / sizeof(Elf64_Rela),
|
sechdrs[i].sh_size / sizeof(Elf64_Rela),
|
||||||
sizeof(Elf64_Rela), relacmp, relaswap);
|
sizeof(Elf64_Rela), relacmp, NULL);
|
||||||
|
|
||||||
relocs += count_relocs((void *)sechdrs[i].sh_addr,
|
relocs += count_relocs((void *)sechdrs[i].sh_addr,
|
||||||
sechdrs[i].sh_size
|
sechdrs[i].sh_size
|
||||||
|
|
Загрузка…
Ссылка в новой задаче