powerpc/32: Don't use lmw/stmw for saving/restoring non volatile regs
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Mon, 23 Aug 2021 15:29:12 +0000 (15:29 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Jul 2022 14:35:02 +0000 (16:35 +0200)
commit0a80e66a10af2b74c68739927201f4d5aebc467f
tree07067f92369f8f588f35a5cbe884eb503bfdc435
parentb342feb491415ee5a35d7edcd759e9d021acc544
powerpc/32: Don't use lmw/stmw for saving/restoring non volatile regs

[ Upstream commit a85c728cb5e12216c19ae5878980c2cbbbf8616d ]

Instructions lmw/stmw are interesting for functions that are rarely
used and not in the cache, because only one instruction is to be
copied into the instruction cache instead of 19. However those
instruction are less performant than 19x raw lwz/stw as they require
synchronisation plus one additional cycle.

SAVE_NVGPRS / REST_NVGPRS are used in only a few places which are
mostly in interrupts entries/exits and in task switch so they are
likely already in the cache.

Using standard lwz improves null_syscall selftest by:
- 10 cycles on mpc832x.
- 2 cycles on mpc8xx.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/316c543b8906712c108985c8463eec09c8db577b.1629732542.git.christophe.leroy@csgroup.eu
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/powerpc/include/asm/ppc_asm.h