Message ID | 20221115200832.706370-3-jamie@jamieiles.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 3bd7743f8d6d7171db9897a746038eefd52a1fbd |
Delegated to: | Palmer Dabbelt |
Headers | show |
Series | RISC-V: Dynamic ftrace support for RV32I | expand |
Context | Check | Description |
---|---|---|
conchuod/patch_count | success | Link |
conchuod/cover_letter | success | Series has a cover letter |
conchuod/tree_selection | success | Guessed tree name to be for-next |
conchuod/fixes_present | success | Fixes tag not required for -next series |
conchuod/verify_signedoff | success | Signed-off-by tag matches author and committer |
conchuod/kdoc | success | Errors and warnings before: 0 this patch: 0 |
conchuod/module_param | success | Was 0 now: 0 |
conchuod/build_rv32_defconfig | success | Build OK |
conchuod/build_warn_rv64 | success | Errors and warnings before: 0 this patch: 0 |
conchuod/dtb_warn_rv64 | success | Errors and warnings before: 0 this patch: 0 |
conchuod/header_inline | success | No static functions without inline keyword in header files |
conchuod/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 65 lines checked |
conchuod/source_inline | success | Was 0 now: 0 |
conchuod/build_rv64_nommu_k210_defconfig | success | Build OK |
conchuod/verify_fixes | success | No Fixes tag |
conchuod/build_rv64_nommu_virt_defconfig | success | Build OK |
On Tue, Nov 15, 2022 at 08:08:30PM +0000, Jamie Iles wrote: > For RV32 we can reduce the size of the ABI save+restore state by using > SZREG so that register stores are packed rather than on an 8 byte > boundary. > > Signed-off-by: Jamie Iles <jamie@jamieiles.com> > --- > arch/riscv/kernel/mcount.S | 32 ++++++++++++++++---------------- > 1 file changed, 16 insertions(+), 16 deletions(-) > > diff --git a/arch/riscv/kernel/mcount.S b/arch/riscv/kernel/mcount.S > index 9cf0904afd6d..613bd07c6268 100644 > --- a/arch/riscv/kernel/mcount.S > +++ b/arch/riscv/kernel/mcount.S > @@ -15,8 +15,8 @@ > > .macro SAVE_ABI_STATE > addi sp, sp, -16 > - REG_S s0, 0(sp) > - REG_S ra, 8(sp) > + REG_S s0, 0*SZREG(sp) > + REG_S ra, 1*SZREG(sp) > addi s0, sp, 16 > .endm > > @@ -25,24 +25,24 @@ > * register if a0 was not saved. > */ > .macro SAVE_RET_ABI_STATE > - addi sp, sp, -32 > - REG_S s0, 16(sp) > - REG_S ra, 24(sp) > - REG_S a0, 8(sp) > - addi s0, sp, 32 > + addi sp, sp, -4*SZREG > + REG_S s0, 2*SZREG(sp) > + REG_S ra, 3*SZREG(sp) > + REG_S a0, 1*SZREG(sp) I probably would have taken the opportunity to put these lines in ascending order by offset, since it looks odd like this. Anyway, Reviewed-by: Andrew Jones <ajones@ventanamicro.com> > + addi s0, sp, 4*SZREG > .endm > > .macro RESTORE_ABI_STATE > - REG_L ra, 8(sp) > - REG_L s0, 0(sp) > + REG_L ra, 1*SZREG(sp) > + REG_L s0, 0*SZREG(sp) > addi sp, sp, 16 > .endm > > .macro RESTORE_RET_ABI_STATE > - REG_L ra, 24(sp) > - REG_L s0, 16(sp) > - REG_L a0, 8(sp) > - addi sp, sp, 32 > + REG_L ra, 3*SZREG(sp) > + REG_L s0, 2*SZREG(sp) > + REG_L a0, 1*SZREG(sp) > + addi sp, sp, 4*SZREG > .endm > > ENTRY(ftrace_stub) > @@ -101,10 +101,10 @@ ENTRY(MCOUNT_NAME) > * prepare_to_return(&ra_to_caller_of_caller, ra_to_caller) > */ > do_ftrace_graph_caller: > - addi a0, s0, -8 > + addi a0, s0, -SZREG > mv a1, ra > #ifdef HAVE_FUNCTION_GRAPH_FP_TEST > - REG_L a2, -16(s0) > + REG_L a2, -2*SZREG(s0) > #endif > SAVE_ABI_STATE > call prepare_ftrace_return > @@ -117,7 +117,7 @@ do_ftrace_graph_caller: > * (*ftrace_trace_function)(ra_to_caller, ra_to_caller_of_caller) > */ > do_trace: > - REG_L a1, -8(s0) > + REG_L a1, -SZREG(s0) > mv a0, ra > > SAVE_ABI_STATE > -- > 2.37.2 > > > _______________________________________________ > linux-riscv mailing list > linux-riscv@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-riscv
diff --git a/arch/riscv/kernel/mcount.S b/arch/riscv/kernel/mcount.S index 9cf0904afd6d..613bd07c6268 100644 --- a/arch/riscv/kernel/mcount.S +++ b/arch/riscv/kernel/mcount.S @@ -15,8 +15,8 @@ .macro SAVE_ABI_STATE addi sp, sp, -16 - REG_S s0, 0(sp) - REG_S ra, 8(sp) + REG_S s0, 0*SZREG(sp) + REG_S ra, 1*SZREG(sp) addi s0, sp, 16 .endm @@ -25,24 +25,24 @@ * register if a0 was not saved. */ .macro SAVE_RET_ABI_STATE - addi sp, sp, -32 - REG_S s0, 16(sp) - REG_S ra, 24(sp) - REG_S a0, 8(sp) - addi s0, sp, 32 + addi sp, sp, -4*SZREG + REG_S s0, 2*SZREG(sp) + REG_S ra, 3*SZREG(sp) + REG_S a0, 1*SZREG(sp) + addi s0, sp, 4*SZREG .endm .macro RESTORE_ABI_STATE - REG_L ra, 8(sp) - REG_L s0, 0(sp) + REG_L ra, 1*SZREG(sp) + REG_L s0, 0*SZREG(sp) addi sp, sp, 16 .endm .macro RESTORE_RET_ABI_STATE - REG_L ra, 24(sp) - REG_L s0, 16(sp) - REG_L a0, 8(sp) - addi sp, sp, 32 + REG_L ra, 3*SZREG(sp) + REG_L s0, 2*SZREG(sp) + REG_L a0, 1*SZREG(sp) + addi sp, sp, 4*SZREG .endm ENTRY(ftrace_stub) @@ -101,10 +101,10 @@ ENTRY(MCOUNT_NAME) * prepare_to_return(&ra_to_caller_of_caller, ra_to_caller) */ do_ftrace_graph_caller: - addi a0, s0, -8 + addi a0, s0, -SZREG mv a1, ra #ifdef HAVE_FUNCTION_GRAPH_FP_TEST - REG_L a2, -16(s0) + REG_L a2, -2*SZREG(s0) #endif SAVE_ABI_STATE call prepare_ftrace_return @@ -117,7 +117,7 @@ do_ftrace_graph_caller: * (*ftrace_trace_function)(ra_to_caller, ra_to_caller_of_caller) */ do_trace: - REG_L a1, -8(s0) + REG_L a1, -SZREG(s0) mv a0, ra SAVE_ABI_STATE
For RV32 we can reduce the size of the ABI save+restore state by using SZREG so that register stores are packed rather than on an 8 byte boundary. Signed-off-by: Jamie Iles <jamie@jamieiles.com> --- arch/riscv/kernel/mcount.S | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-)