Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3)  * Copyright IBM Corp. 2008, 2009
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5)  *   Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) #include <asm/asm-offsets.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) #include <asm/ftrace.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) #include <asm/nospec-insn.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) #include <asm/ptrace.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) #include <asm/export.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 	GEN_BR_THUNK %r1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 	GEN_BR_THUNK %r14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) 	.section .kprobes.text, "ax"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) ENTRY(ftrace_stub)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	BR_EX	%r14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) ENDPROC(ftrace_stub)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) #define STACK_FRAME_SIZE  (STACK_FRAME_OVERHEAD + __PT_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) #define STACK_PTREGS	  (STACK_FRAME_OVERHEAD)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) #define STACK_PTREGS_GPRS (STACK_PTREGS + __PT_GPRS)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) #define STACK_PTREGS_PSW  (STACK_PTREGS + __PT_PSW)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) #ifdef __PACK_STACK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) /* allocate just enough for r14, r15 and backchain */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) #define TRACED_FUNC_FRAME_SIZE	24
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) #define TRACED_FUNC_FRAME_SIZE	STACK_FRAME_OVERHEAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) ENTRY(_mcount)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	BR_EX	%r14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) ENDPROC(_mcount)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) EXPORT_SYMBOL(_mcount)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) ENTRY(ftrace_caller)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	.globl	ftrace_regs_caller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	.set	ftrace_regs_caller,ftrace_caller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	stg	%r14,(__SF_GPRS+8*8)(%r15)	# save traced function caller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	lghi	%r14,0				# save condition code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 	ipm	%r14				# don't put any instructions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	sllg	%r14,%r14,16			# clobbering CC before this point
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 	lgr	%r1,%r15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) #if !(defined(CC_USING_HOTPATCH) || defined(CC_USING_NOP_MCOUNT))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 	aghi	%r0,MCOUNT_RETURN_FIXUP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	# allocate stack frame for ftrace_caller to contain traced function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	aghi	%r15,-TRACED_FUNC_FRAME_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	stg	%r1,__SF_BACKCHAIN(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	stg	%r0,(__SF_GPRS+8*8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	stg	%r15,(__SF_GPRS+9*8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	# allocate pt_regs and stack frame for ftrace_trace_function
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	aghi	%r15,-STACK_FRAME_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	stg	%r1,(STACK_PTREGS_GPRS+15*8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) 	stg	%r14,(STACK_PTREGS_PSW)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 	lg	%r14,(__SF_GPRS+8*8)(%r1)	# restore original return address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 	stosm	(STACK_PTREGS_PSW)(%r15),0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) 	aghi	%r1,-TRACED_FUNC_FRAME_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	stg	%r1,__SF_BACKCHAIN(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 	stg	%r0,(STACK_PTREGS_PSW+8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	stmg	%r2,%r14,(STACK_PTREGS_GPRS+2*8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) #ifdef CONFIG_HAVE_MARCH_Z196_FEATURES
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 	aghik	%r2,%r0,-MCOUNT_INSN_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 	lgrl	%r4,function_trace_op
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) 	lgrl	%r1,ftrace_func
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) #else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	lgr	%r2,%r0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 	aghi	%r2,-MCOUNT_INSN_SIZE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	larl	%r4,function_trace_op
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	lg	%r4,0(%r4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 	larl	%r1,ftrace_func
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 	lg	%r1,0(%r1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 	lgr	%r3,%r14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	la	%r5,STACK_PTREGS(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) 	BASR_EX	%r14,%r1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) #ifdef CONFIG_FUNCTION_GRAPH_TRACER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) # The j instruction gets runtime patched to a nop instruction.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) # See ftrace_enable_ftrace_graph_caller.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 	.globl ftrace_graph_caller
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) ftrace_graph_caller:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 	j	ftrace_graph_caller_end
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	lmg	%r2,%r3,(STACK_PTREGS_GPRS+14*8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) 	lg	%r4,(STACK_PTREGS_PSW+8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	brasl	%r14,prepare_ftrace_return
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	stg	%r2,(STACK_PTREGS_GPRS+14*8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) ftrace_graph_caller_end:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 	.globl	ftrace_graph_caller_end
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) 	lg	%r1,(STACK_PTREGS_PSW+8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	lmg	%r2,%r15,(STACK_PTREGS_GPRS+2*8)(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) 	BR_EX	%r1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) ENDPROC(ftrace_caller)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) #ifdef CONFIG_FUNCTION_GRAPH_TRACER
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) ENTRY(return_to_handler)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) 	stmg	%r2,%r5,32(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	lgr	%r1,%r15
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 	aghi	%r15,-STACK_FRAME_OVERHEAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	stg	%r1,__SF_BACKCHAIN(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	brasl	%r14,ftrace_return_to_handler
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 	aghi	%r15,STACK_FRAME_OVERHEAD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 	lgr	%r14,%r2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) 	lmg	%r2,%r5,32(%r15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	BR_EX	%r14
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) ENDPROC(return_to_handler)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) #endif