~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/riscv/kernel/mcount-dyn.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/riscv/kernel/mcount-dyn.S (Version linux-6.12-rc7) and /arch/sparc/kernel/mcount-dyn.S (Version linux-5.9.16)


  1 /* SPDX-License-Identifier: GPL-2.0 */            
  2 /* Copyright (C) 2017 Andes Technology Corpora    
  3                                                   
  4 #include <linux/init.h>                           
  5 #include <linux/linkage.h>                        
  6 #include <linux/export.h>                         
  7 #include <asm/asm.h>                              
  8 #include <asm/csr.h>                              
  9 #include <asm/unistd.h>                           
 10 #include <asm/thread_info.h>                      
 11 #include <asm/asm-offsets.h>                      
 12 #include <asm/ftrace.h>                           
 13                                                   
 14         .text                                     
 15                                                   
 16 #define FENTRY_RA_OFFSET        8                 
 17 #define ABI_SIZE_ON_STACK       80                
 18 #define ABI_A0                  0                 
 19 #define ABI_A1                  8                 
 20 #define ABI_A2                  16                
 21 #define ABI_A3                  24                
 22 #define ABI_A4                  32                
 23 #define ABI_A5                  40                
 24 #define ABI_A6                  48                
 25 #define ABI_A7                  56                
 26 #define ABI_T0                  64                
 27 #define ABI_RA                  72                
 28                                                   
 29         .macro SAVE_ABI                           
 30         addi    sp, sp, -ABI_SIZE_ON_STACK        
 31                                                   
 32         REG_S   a0, ABI_A0(sp)                    
 33         REG_S   a1, ABI_A1(sp)                    
 34         REG_S   a2, ABI_A2(sp)                    
 35         REG_S   a3, ABI_A3(sp)                    
 36         REG_S   a4, ABI_A4(sp)                    
 37         REG_S   a5, ABI_A5(sp)                    
 38         REG_S   a6, ABI_A6(sp)                    
 39         REG_S   a7, ABI_A7(sp)                    
 40         REG_S   t0, ABI_T0(sp)                    
 41         REG_S   ra, ABI_RA(sp)                    
 42         .endm                                     
 43                                                   
 44         .macro RESTORE_ABI                        
 45         REG_L   a0, ABI_A0(sp)                    
 46         REG_L   a1, ABI_A1(sp)                    
 47         REG_L   a2, ABI_A2(sp)                    
 48         REG_L   a3, ABI_A3(sp)                    
 49         REG_L   a4, ABI_A4(sp)                    
 50         REG_L   a5, ABI_A5(sp)                    
 51         REG_L   a6, ABI_A6(sp)                    
 52         REG_L   a7, ABI_A7(sp)                    
 53         REG_L   t0, ABI_T0(sp)                    
 54         REG_L   ra, ABI_RA(sp)                    
 55                                                   
 56         addi    sp, sp, ABI_SIZE_ON_STACK         
 57         .endm                                     
 58                                                   
 59 #ifdef CONFIG_DYNAMIC_FTRACE_WITH_ARGS            
 60                                                   
 61 /**                                               
 62 * SAVE_ABI_REGS - save regs against the ftrace    
 63 *                                                 
 64 * After the stack is established,                 
 65 *                                                 
 66 * 0(sp) stores the PC of the traced function w    
 67 * by &(fregs)->epc in tracing function. Note t    
 68 * function entry address should be computed wi    
 69 *                                                 
 70 * 8(sp) stores the function return address (i.    
 71 * can be accessed by &(fregs)->ra in tracing f    
 72 *                                                 
 73 * The other regs are saved at the respective l    
 74 * by the respective ftrace_regs member.           
 75 *                                                 
 76 * Here is the layout of stack for your referen    
 77 *                                                 
 78 * PT_SIZE_ON_STACK  ->  +++++++++                 
 79 *                       + ..... +                 
 80 *                       + a0-a7 + --++++-> ftr    
 81 *                       + t1    + --++++-> dir    
 82 *                       + s0    + --+ // frame    
 83 *                       + sp    +   +             
 84 *                       + ra    + --+ // paren    
 85 *               sp  ->  + epc   + --+ // PC       
 86 *                       +++++++++                 
 87 **/                                               
 88         .macro SAVE_ABI_REGS                      
 89         mv      t4, sp                  // Sav    
 90         addi    sp, sp, -FREGS_SIZE_ON_STACK      
 91                                                   
 92         REG_S   t0,  FREGS_EPC(sp)                
 93         REG_S   x1,  FREGS_RA(sp)                 
 94         REG_S   t4,  FREGS_SP(sp)       // Put    
 95 #ifdef HAVE_FUNCTION_GRAPH_FP_TEST                
 96         REG_S   x8,  FREGS_S0(sp)                 
 97 #endif                                            
 98         REG_S   x6,  FREGS_T1(sp)                 
 99                                                   
100         // save the arguments                     
101         REG_S   x10, FREGS_A0(sp)                 
102         REG_S   x11, FREGS_A1(sp)                 
103         REG_S   x12, FREGS_A2(sp)                 
104         REG_S   x13, FREGS_A3(sp)                 
105         REG_S   x14, FREGS_A4(sp)                 
106         REG_S   x15, FREGS_A5(sp)                 
107         REG_S   x16, FREGS_A6(sp)                 
108         REG_S   x17, FREGS_A7(sp)                 
109         .endm                                     
110                                                   
111         .macro RESTORE_ABI_REGS, all=0            
112         REG_L   t0, FREGS_EPC(sp)                 
113         REG_L   x1, FREGS_RA(sp)                  
114 #ifdef HAVE_FUNCTION_GRAPH_FP_TEST                
115         REG_L   x8, FREGS_S0(sp)                  
116 #endif                                            
117         REG_L   x6,  FREGS_T1(sp)                 
118                                                   
119         // restore the arguments                  
120         REG_L   x10, FREGS_A0(sp)                 
121         REG_L   x11, FREGS_A1(sp)                 
122         REG_L   x12, FREGS_A2(sp)                 
123         REG_L   x13, FREGS_A3(sp)                 
124         REG_L   x14, FREGS_A4(sp)                 
125         REG_L   x15, FREGS_A5(sp)                 
126         REG_L   x16, FREGS_A6(sp)                 
127         REG_L   x17, FREGS_A7(sp)                 
128                                                   
129         addi    sp, sp, FREGS_SIZE_ON_STACK       
130         .endm                                     
131                                                   
132         .macro PREPARE_ARGS                       
133         addi    a0, t0, -FENTRY_RA_OFFSET         
134         la      a1, function_trace_op             
135         REG_L   a2, 0(a1)                         
136         mv      a1, ra                            
137         mv      a3, sp                            
138         .endm                                     
139                                                   
140 #endif /* CONFIG_DYNAMIC_FTRACE_WITH_ARGS */      
141                                                   
142 #ifndef CONFIG_DYNAMIC_FTRACE_WITH_ARGS           
143 SYM_FUNC_START(ftrace_caller)                     
144         SAVE_ABI                                  
145                                                   
146         addi    a0, t0, -FENTRY_RA_OFFSET         
147         la      a1, function_trace_op             
148         REG_L   a2, 0(a1)                         
149         mv      a1, ra                            
150         mv      a3, sp                            
151                                                   
152 SYM_INNER_LABEL(ftrace_call, SYM_L_GLOBAL)        
153         call    ftrace_stub                       
154                                                   
155 #ifdef CONFIG_FUNCTION_GRAPH_TRACER               
156         addi    a0, sp, ABI_RA                    
157         REG_L   a1, ABI_T0(sp)                    
158         addi    a1, a1, -FENTRY_RA_OFFSET         
159 #ifdef HAVE_FUNCTION_GRAPH_FP_TEST                
160         mv      a2, s0                            
161 #endif                                            
162 SYM_INNER_LABEL(ftrace_graph_call, SYM_L_GLOBA    
163         call    ftrace_stub                       
164 #endif                                            
165         RESTORE_ABI                               
166         jr      t0                                
167 SYM_FUNC_END(ftrace_caller)                       
168                                                   
169 #else /* CONFIG_DYNAMIC_FTRACE_WITH_ARGS */       
170 SYM_FUNC_START(ftrace_caller)                     
171         mv      t1, zero                          
172         SAVE_ABI_REGS                             
173         PREPARE_ARGS                              
174                                                   
175 SYM_INNER_LABEL(ftrace_call, SYM_L_GLOBAL)        
176         call    ftrace_stub                       
177                                                   
178         RESTORE_ABI_REGS                          
179         bnez    t1, .Ldirect                      
180         jr      t0                                
181 .Ldirect:                                         
182         jr      t1                                
183 SYM_FUNC_END(ftrace_caller)                       
184                                                   
185 #endif /* CONFIG_DYNAMIC_FTRACE_WITH_ARGS */      
186                                                   
187 #ifdef CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CALLS    
188 SYM_CODE_START(ftrace_stub_direct_tramp)          
189         jr      t0                                
190 SYM_CODE_END(ftrace_stub_direct_tramp)            
191 #endif /* CONFIG_DYNAMIC_FTRACE_WITH_DIRECT_CA    
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php