diff options
Diffstat (limited to 'samples/ftrace/ftrace-direct-multi-modify.c')
| -rw-r--r-- | samples/ftrace/ftrace-direct-multi-modify.c | 50 | 
1 files changed, 45 insertions, 5 deletions
diff --git a/samples/ftrace/ftrace-direct-multi-modify.c b/samples/ftrace/ftrace-direct-multi-modify.c index b58c594efb51..62f6b681999e 100644 --- a/samples/ftrace/ftrace-direct-multi-modify.c +++ b/samples/ftrace/ftrace-direct-multi-modify.c @@ -103,6 +103,47 @@ asm (  #endif /* CONFIG_S390 */ +#ifdef CONFIG_LOONGARCH +#include <asm/asm.h> + +asm ( +"	.pushsection    .text, \"ax\", @progbits\n" +"	.type		my_tramp1, @function\n" +"	.globl		my_tramp1\n" +"   my_tramp1:\n" +"	addi.d	$sp, $sp, -32\n" +"	st.d	$a0, $sp, 0\n" +"	st.d	$t0, $sp, 8\n" +"	st.d	$ra, $sp, 16\n" +"	move	$a0, $t0\n" +"	bl	my_direct_func1\n" +"	ld.d	$a0, $sp, 0\n" +"	ld.d	$t0, $sp, 8\n" +"	ld.d	$ra, $sp, 16\n" +"	addi.d	$sp, $sp, 32\n" +"	jr	$t0\n" +"	.size		my_tramp1, .-my_tramp1\n" + +"	.type		my_tramp2, @function\n" +"	.globl		my_tramp2\n" +"   my_tramp2:\n" +"	addi.d	$sp, $sp, -32\n" +"	st.d	$a0, $sp, 0\n" +"	st.d	$t0, $sp, 8\n" +"	st.d	$ra, $sp, 16\n" +"	move	$a0, $t0\n" +"	bl	my_direct_func2\n" +"	ld.d	$a0, $sp, 0\n" +"	ld.d	$t0, $sp, 8\n" +"	ld.d	$ra, $sp, 16\n" +"	addi.d	$sp, $sp, 32\n" +"	jr	$t0\n" +"	.size		my_tramp2, .-my_tramp2\n" +"	.popsection\n" +); + +#endif /* CONFIG_LOONGARCH */ +  static unsigned long my_tramp = (unsigned long)my_tramp1;  static unsigned long tramps[2] = {  	(unsigned long)my_tramp1, @@ -123,7 +164,7 @@ static int simple_thread(void *arg)  		if (ret)  			continue;  		t ^= 1; -		ret = modify_ftrace_direct_multi(&direct, tramps[t]); +		ret = modify_ftrace_direct(&direct, tramps[t]);  		if (!ret)  			my_tramp = tramps[t];  		WARN_ON_ONCE(ret); @@ -141,7 +182,7 @@ static int __init ftrace_direct_multi_init(void)  	ftrace_set_filter_ip(&direct, (unsigned long) wake_up_process, 0, 0);  	ftrace_set_filter_ip(&direct, (unsigned long) schedule, 0, 0); -	ret = register_ftrace_direct_multi(&direct, my_tramp); +	ret = register_ftrace_direct(&direct, my_tramp);  	if (!ret)  		simple_tsk = kthread_run(simple_thread, NULL, "event-sample-fn"); @@ -151,13 +192,12 @@ static int __init ftrace_direct_multi_init(void)  static void __exit ftrace_direct_multi_exit(void)  {  	kthread_stop(simple_tsk); -	unregister_ftrace_direct_multi(&direct, my_tramp); -	ftrace_free_filter(&direct); +	unregister_ftrace_direct(&direct, my_tramp, true);  }  module_init(ftrace_direct_multi_init);  module_exit(ftrace_direct_multi_exit);  MODULE_AUTHOR("Jiri Olsa"); -MODULE_DESCRIPTION("Example use case of using modify_ftrace_direct_multi()"); +MODULE_DESCRIPTION("Example use case of using modify_ftrace_direct()");  MODULE_LICENSE("GPL");  |