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

TOMOYO Linux Cross Reference
Linux/arch/powerpc/lib/copy_mc_64.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/powerpc/lib/copy_mc_64.S (Architecture i386) and /arch/sparc/lib/copy_mc_64.S (Architecture sparc)


  1 /* SPDX-License-Identifier: GPL-2.0 */            
  2 /*                                                
  3  * Copyright (C) IBM Corporation, 2011            
  4  * Derived from copyuser_power7.s by Anton Bla<    
  5  * Author - Balbir Singh <bsingharora@gmail.com    
  6  */                                               
  7 #include <linux/export.h>                         
  8 #include <asm/ppc_asm.h>                          
  9 #include <asm/errno.h>                            
 10                                                   
 11         .macro err1                               
 12 100:                                              
 13         EX_TABLE(100b,.Ldo_err1)                  
 14         .endm                                     
 15                                                   
 16         .macro err2                               
 17 200:                                              
 18         EX_TABLE(200b,.Ldo_err2)                  
 19         .endm                                     
 20                                                   
 21         .macro err3                               
 22 300:    EX_TABLE(300b,.Ldone)                     
 23         .endm                                     
 24                                                   
 25 .Ldo_err2:                                        
 26         ld      r22,STK_REG(R22)(r1)              
 27         ld      r21,STK_REG(R21)(r1)              
 28         ld      r20,STK_REG(R20)(r1)              
 29         ld      r19,STK_REG(R19)(r1)              
 30         ld      r18,STK_REG(R18)(r1)              
 31         ld      r17,STK_REG(R17)(r1)              
 32         ld      r16,STK_REG(R16)(r1)              
 33         ld      r15,STK_REG(R15)(r1)              
 34         ld      r14,STK_REG(R14)(r1)              
 35         addi    r1,r1,STACKFRAMESIZE              
 36 .Ldo_err1:                                        
 37         /* Do a byte by byte copy to get the e    
 38         mtctr   r7                                
 39 46:                                               
 40 err3;   lbz     r0,0(r4)                          
 41         addi    r4,r4,1                           
 42 err3;   stb     r0,0(r3)                          
 43         addi    r3,r3,1                           
 44         bdnz    46b                               
 45         li      r3,0                              
 46         blr                                       
 47                                                   
 48 .Ldone:                                           
 49         mfctr   r3                                
 50         blr                                       
 51                                                   
 52                                                   
 53 _GLOBAL(copy_mc_generic)                          
 54         mr      r7,r5                             
 55         cmpldi  r5,16                             
 56         blt     .Lshort_copy                      
 57                                                   
 58 .Lcopy:                                           
 59         /* Get the source 8B aligned */           
 60         neg     r6,r4                             
 61         mtocrf  0x01,r6                           
 62         clrldi  r6,r6,(64-3)                      
 63                                                   
 64         bf      cr7*4+3,1f                        
 65 err1;   lbz     r0,0(r4)                          
 66         addi    r4,r4,1                           
 67 err1;   stb     r0,0(r3)                          
 68         addi    r3,r3,1                           
 69         subi    r7,r7,1                           
 70                                                   
 71 1:      bf      cr7*4+2,2f                        
 72 err1;   lhz     r0,0(r4)                          
 73         addi    r4,r4,2                           
 74 err1;   sth     r0,0(r3)                          
 75         addi    r3,r3,2                           
 76         subi    r7,r7,2                           
 77                                                   
 78 2:      bf      cr7*4+1,3f                        
 79 err1;   lwz     r0,0(r4)                          
 80         addi    r4,r4,4                           
 81 err1;   stw     r0,0(r3)                          
 82         addi    r3,r3,4                           
 83         subi    r7,r7,4                           
 84                                                   
 85 3:      sub     r5,r5,r6                          
 86         cmpldi  r5,128                            
 87                                                   
 88         mflr    r0                                
 89         stdu    r1,-STACKFRAMESIZE(r1)            
 90         std     r14,STK_REG(R14)(r1)              
 91         std     r15,STK_REG(R15)(r1)              
 92         std     r16,STK_REG(R16)(r1)              
 93         std     r17,STK_REG(R17)(r1)              
 94         std     r18,STK_REG(R18)(r1)              
 95         std     r19,STK_REG(R19)(r1)              
 96         std     r20,STK_REG(R20)(r1)              
 97         std     r21,STK_REG(R21)(r1)              
 98         std     r22,STK_REG(R22)(r1)              
 99         std     r0,STACKFRAMESIZE+16(r1)          
100                                                   
101         blt     5f                                
102         srdi    r6,r5,7                           
103         mtctr   r6                                
104                                                   
105         /* Now do cacheline (128B) sized loads    
106         .align  5                                 
107 4:                                                
108 err2;   ld      r0,0(r4)                          
109 err2;   ld      r6,8(r4)                          
110 err2;   ld      r8,16(r4)                         
111 err2;   ld      r9,24(r4)                         
112 err2;   ld      r10,32(r4)                        
113 err2;   ld      r11,40(r4)                        
114 err2;   ld      r12,48(r4)                        
115 err2;   ld      r14,56(r4)                        
116 err2;   ld      r15,64(r4)                        
117 err2;   ld      r16,72(r4)                        
118 err2;   ld      r17,80(r4)                        
119 err2;   ld      r18,88(r4)                        
120 err2;   ld      r19,96(r4)                        
121 err2;   ld      r20,104(r4)                       
122 err2;   ld      r21,112(r4)                       
123 err2;   ld      r22,120(r4)                       
124         addi    r4,r4,128                         
125 err2;   std     r0,0(r3)                          
126 err2;   std     r6,8(r3)                          
127 err2;   std     r8,16(r3)                         
128 err2;   std     r9,24(r3)                         
129 err2;   std     r10,32(r3)                        
130 err2;   std     r11,40(r3)                        
131 err2;   std     r12,48(r3)                        
132 err2;   std     r14,56(r3)                        
133 err2;   std     r15,64(r3)                        
134 err2;   std     r16,72(r3)                        
135 err2;   std     r17,80(r3)                        
136 err2;   std     r18,88(r3)                        
137 err2;   std     r19,96(r3)                        
138 err2;   std     r20,104(r3)                       
139 err2;   std     r21,112(r3)                       
140 err2;   std     r22,120(r3)                       
141         addi    r3,r3,128                         
142         subi    r7,r7,128                         
143         bdnz    4b                                
144                                                   
145         clrldi  r5,r5,(64-7)                      
146                                                   
147         /* Up to 127B to go */                    
148 5:      srdi    r6,r5,4                           
149         mtocrf  0x01,r6                           
150                                                   
151 6:      bf      cr7*4+1,7f                        
152 err2;   ld      r0,0(r4)                          
153 err2;   ld      r6,8(r4)                          
154 err2;   ld      r8,16(r4)                         
155 err2;   ld      r9,24(r4)                         
156 err2;   ld      r10,32(r4)                        
157 err2;   ld      r11,40(r4)                        
158 err2;   ld      r12,48(r4)                        
159 err2;   ld      r14,56(r4)                        
160         addi    r4,r4,64                          
161 err2;   std     r0,0(r3)                          
162 err2;   std     r6,8(r3)                          
163 err2;   std     r8,16(r3)                         
164 err2;   std     r9,24(r3)                         
165 err2;   std     r10,32(r3)                        
166 err2;   std     r11,40(r3)                        
167 err2;   std     r12,48(r3)                        
168 err2;   std     r14,56(r3)                        
169         addi    r3,r3,64                          
170         subi    r7,r7,64                          
171                                                   
172 7:      ld      r14,STK_REG(R14)(r1)              
173         ld      r15,STK_REG(R15)(r1)              
174         ld      r16,STK_REG(R16)(r1)              
175         ld      r17,STK_REG(R17)(r1)              
176         ld      r18,STK_REG(R18)(r1)              
177         ld      r19,STK_REG(R19)(r1)              
178         ld      r20,STK_REG(R20)(r1)              
179         ld      r21,STK_REG(R21)(r1)              
180         ld      r22,STK_REG(R22)(r1)              
181         addi    r1,r1,STACKFRAMESIZE              
182                                                   
183         /* Up to 63B to go */                     
184         bf      cr7*4+2,8f                        
185 err1;   ld      r0,0(r4)                          
186 err1;   ld      r6,8(r4)                          
187 err1;   ld      r8,16(r4)                         
188 err1;   ld      r9,24(r4)                         
189         addi    r4,r4,32                          
190 err1;   std     r0,0(r3)                          
191 err1;   std     r6,8(r3)                          
192 err1;   std     r8,16(r3)                         
193 err1;   std     r9,24(r3)                         
194         addi    r3,r3,32                          
195         subi    r7,r7,32                          
196                                                   
197         /* Up to 31B to go */                     
198 8:      bf      cr7*4+3,9f                        
199 err1;   ld      r0,0(r4)                          
200 err1;   ld      r6,8(r4)                          
201         addi    r4,r4,16                          
202 err1;   std     r0,0(r3)                          
203 err1;   std     r6,8(r3)                          
204         addi    r3,r3,16                          
205         subi    r7,r7,16                          
206                                                   
207 9:      clrldi  r5,r5,(64-4)                      
208                                                   
209         /* Up to 15B to go */                     
210 .Lshort_copy:                                     
211         mtocrf  0x01,r5                           
212         bf      cr7*4+0,12f                       
213 err1;   lwz     r0,0(r4)        /* Less chance    
214 err1;   lwz     r6,4(r4)                          
215         addi    r4,r4,8                           
216 err1;   stw     r0,0(r3)                          
217 err1;   stw     r6,4(r3)                          
218         addi    r3,r3,8                           
219         subi    r7,r7,8                           
220                                                   
221 12:     bf      cr7*4+1,13f                       
222 err1;   lwz     r0,0(r4)                          
223         addi    r4,r4,4                           
224 err1;   stw     r0,0(r3)                          
225         addi    r3,r3,4                           
226         subi    r7,r7,4                           
227                                                   
228 13:     bf      cr7*4+2,14f                       
229 err1;   lhz     r0,0(r4)                          
230         addi    r4,r4,2                           
231 err1;   sth     r0,0(r3)                          
232         addi    r3,r3,2                           
233         subi    r7,r7,2                           
234                                                   
235 14:     bf      cr7*4+3,15f                       
236 err1;   lbz     r0,0(r4)                          
237 err1;   stb     r0,0(r3)                          
238                                                   
239 15:     li      r3,0                              
240         blr                                       
241                                                   
242 EXPORT_SYMBOL_GPL(copy_mc_generic);               
                                                      

~ [ 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