diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2022-04-18 00:14:00 -0700 |
---|---|---|
committer | Max Filippov <jcmvbkbc@gmail.com> | 2022-05-01 19:51:23 -0700 |
commit | f29cab2906346fa93831376256e01f5a6629f979 (patch) | |
tree | 07ee91a5f30628a3cbdb349d881874b1ed116e5e /arch/xtensa/kernel/coprocessor.S | |
parent | e45d4bfbeb265f352fe5f32852e64eca5fdabe13 (diff) | |
download | linux-f29cab2906346fa93831376256e01f5a6629f979.tar.gz linux-f29cab2906346fa93831376256e01f5a6629f979.tar.bz2 linux-f29cab2906346fa93831376256e01f5a6629f979.zip |
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/kernel/coprocessor.S')
-rw-r--r-- | arch/xtensa/kernel/coprocessor.S | 11 |
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) |