summaryrefslogtreecommitdiffstats
path: root/arch/xtensa
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2022-04-18 00:14:00 -0700
committerMax Filippov <jcmvbkbc@gmail.com>2022-05-01 19:51:23 -0700
commitf29cab2906346fa93831376256e01f5a6629f979 (patch)
tree07ee91a5f30628a3cbdb349d881874b1ed116e5e /arch/xtensa
parente45d4bfbeb265f352fe5f32852e64eca5fdabe13 (diff)
downloadlinux-f29cab2906346fa93831376256e01f5a6629f979.tar.bz2
xtensa: get rid of stack frame in coprocessor_flush
coprocessor_flush is an ordinary function, it can use all registers. Don't reserve stack frame for it and use a7 to preserve a0 around the context saving call. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'arch/xtensa')
-rw-r--r--arch/xtensa/kernel/coprocessor.S11
1 files changed, 5 insertions, 6 deletions
diff --git a/arch/xtensa/kernel/coprocessor.S b/arch/xtensa/kernel/coprocessor.S
index af11ddaa8c5f..95412409c49e 100644
--- a/arch/xtensa/kernel/coprocessor.S
+++ b/arch/xtensa/kernel/coprocessor.S
@@ -216,10 +216,8 @@ ENDPROC(fast_coprocessor)
ENTRY(coprocessor_flush)
- /* reserve 4 bytes on stack to save a0 */
- abi_entry(4)
+ abi_entry_default
- s32i a0, a1, 0
movi a4, .Lcp_regs_jump_table
addx8 a4, a3, a4
addx4 a3, a3, a4
@@ -227,10 +225,11 @@ ENTRY(coprocessor_flush)
beqz a4, 1f
l32i a3, a3, CP_REGS_TAB_OFFSET
add a2, a2, a3
+ mov a7, a0
callx0 a4
-1: l32i a0, a1, 0
-
- abi_ret(4)
+ mov a0, a7
+1:
+ abi_ret_default
ENDPROC(coprocessor_flush)