mcount.S (c6380ecd8e9bee7aba3d9a5a94b58168244c4a61) | mcount.S (c15ac4fd60d5ffdb151bb2c7805f377fd7f90363) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0 */ 2/* Copyright (C) 2017 Andes Technology Corporation */ 3 4#include <linux/init.h> 5#include <linux/linkage.h> 6#include <asm/asm.h> 7#include <asm/csr.h> 8#include <asm/unistd.h> --- 18 unchanged lines hidden (view full) --- 27 .macro SAVE_RET_ABI_STATE 28 addi sp, sp, -32 29 sd s0, 16(sp) 30 sd ra, 24(sp) 31 sd a0, 8(sp) 32 addi s0, sp, 32 33 .endm 34 | 1/* SPDX-License-Identifier: GPL-2.0 */ 2/* Copyright (C) 2017 Andes Technology Corporation */ 3 4#include <linux/init.h> 5#include <linux/linkage.h> 6#include <asm/asm.h> 7#include <asm/csr.h> 8#include <asm/unistd.h> --- 18 unchanged lines hidden (view full) --- 27 .macro SAVE_RET_ABI_STATE 28 addi sp, sp, -32 29 sd s0, 16(sp) 30 sd ra, 24(sp) 31 sd a0, 8(sp) 32 addi s0, sp, 32 33 .endm 34 |
35 .macro STORE_ABI_STATE | 35 .macro RESTORE_ABI_STATE |
36 ld ra, 8(sp) 37 ld s0, 0(sp) 38 addi sp, sp, 16 39 .endm 40 | 36 ld ra, 8(sp) 37 ld s0, 0(sp) 38 addi sp, sp, 16 39 .endm 40 |
41 .macro STORE_RET_ABI_STATE | 41 .macro RESTORE_RET_ABI_STATE |
42 ld ra, 24(sp) 43 ld s0, 16(sp) 44 ld a0, 8(sp) 45 addi sp, sp, 32 46 .endm 47 48ENTRY(ftrace_stub) | 42 ld ra, 24(sp) 43 ld s0, 16(sp) 44 ld a0, 8(sp) 45 addi sp, sp, 32 46 .endm 47 48ENTRY(ftrace_stub) |
49#ifdef CONFIG_DYNAMIC_FTRACE 50 .global _mcount 51 .set _mcount, ftrace_stub 52#endif |
|
49 ret 50ENDPROC(ftrace_stub) 51 52#ifdef CONFIG_FUNCTION_GRAPH_TRACER 53ENTRY(return_to_handler) 54/* 55 * On implementing the frame point test, the ideal way is to compare the 56 * s0 (frame pointer, if enabled) on entry and the sp (stack pointer) on return. --- 4 unchanged lines hidden (view full) --- 61 */ 62#ifdef HAVE_FUNCTION_GRAPH_FP_TEST 63 mv t6, s0 64#endif 65 SAVE_RET_ABI_STATE 66#ifdef HAVE_FUNCTION_GRAPH_FP_TEST 67 mv a0, t6 68#endif | 53 ret 54ENDPROC(ftrace_stub) 55 56#ifdef CONFIG_FUNCTION_GRAPH_TRACER 57ENTRY(return_to_handler) 58/* 59 * On implementing the frame point test, the ideal way is to compare the 60 * s0 (frame pointer, if enabled) on entry and the sp (stack pointer) on return. --- 4 unchanged lines hidden (view full) --- 65 */ 66#ifdef HAVE_FUNCTION_GRAPH_FP_TEST 67 mv t6, s0 68#endif 69 SAVE_RET_ABI_STATE 70#ifdef HAVE_FUNCTION_GRAPH_FP_TEST 71 mv a0, t6 72#endif |
69 la t0, ftrace_return_to_handler 70 jalr t0 | 73 call ftrace_return_to_handler |
71 mv a1, a0 | 74 mv a1, a0 |
72 STORE_RET_ABI_STATE | 75 RESTORE_RET_ABI_STATE |
73 jalr a1 74ENDPROC(return_to_handler) 75EXPORT_SYMBOL(return_to_handler) 76#endif 77 | 76 jalr a1 77ENDPROC(return_to_handler) 78EXPORT_SYMBOL(return_to_handler) 79#endif 80 |
81#ifndef CONFIG_DYNAMIC_FTRACE |
|
78ENTRY(_mcount) 79 la t4, ftrace_stub 80#ifdef CONFIG_FUNCTION_GRAPH_TRACER 81 la t0, ftrace_graph_return 82 ld t1, 0(t0) 83 bne t1, t4, do_ftrace_graph_caller 84 85 la t3, ftrace_graph_entry --- 13 unchanged lines hidden (view full) --- 99 */ 100do_ftrace_graph_caller: 101 addi a0, s0, -8 102 mv a1, ra 103#ifdef HAVE_FUNCTION_GRAPH_FP_TEST 104 ld a2, -16(s0) 105#endif 106 SAVE_ABI_STATE | 82ENTRY(_mcount) 83 la t4, ftrace_stub 84#ifdef CONFIG_FUNCTION_GRAPH_TRACER 85 la t0, ftrace_graph_return 86 ld t1, 0(t0) 87 bne t1, t4, do_ftrace_graph_caller 88 89 la t3, ftrace_graph_entry --- 13 unchanged lines hidden (view full) --- 103 */ 104do_ftrace_graph_caller: 105 addi a0, s0, -8 106 mv a1, ra 107#ifdef HAVE_FUNCTION_GRAPH_FP_TEST 108 ld a2, -16(s0) 109#endif 110 SAVE_ABI_STATE |
107 la t0, prepare_ftrace_return 108 jalr t0 109 STORE_ABI_STATE | 111 call prepare_ftrace_return 112 RESTORE_ABI_STATE |
110 ret 111#endif 112 113/* 114 * A pseudo representation for the function tracer: 115 * (*ftrace_trace_function)(ra_to_caller, ra_to_caller_of_caller) 116 */ 117do_trace: 118 ld a1, -8(s0) 119 mv a0, ra 120 121 SAVE_ABI_STATE 122 jalr t5 | 113 ret 114#endif 115 116/* 117 * A pseudo representation for the function tracer: 118 * (*ftrace_trace_function)(ra_to_caller, ra_to_caller_of_caller) 119 */ 120do_trace: 121 ld a1, -8(s0) 122 mv a0, ra 123 124 SAVE_ABI_STATE 125 jalr t5 |
123 STORE_ABI_STATE | 126 RESTORE_ABI_STATE |
124 ret 125ENDPROC(_mcount) 126EXPORT_SYMBOL(_mcount) | 127 ret 128ENDPROC(_mcount) 129EXPORT_SYMBOL(_mcount) |
130#endif |
|