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

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


  1 /* SPDX-License-Identifier: GPL-2.0 */            
  2 /*                                                
  3  * arch/sparc64/lib/xor.S                         
  4  *                                                
  5  * High speed xor_block operation for RAID4/5     
  6  * UltraSparc Visual Instruction Set and Niaga    
  7  *                                                
  8  * Copyright (C) 1997, 1999 Jakub Jelinek (jj@    
  9  * Copyright (C) 2006 David S. Miller <davem@da    
 10  */                                               
 11                                                   
 12 #include <linux/export.h>                         
 13 #include <linux/linkage.h>                        
 14 #include <asm/visasm.h>                           
 15 #include <asm/asi.h>                              
 16 #include <asm/dcu.h>                              
 17 #include <asm/spitfire.h>                         
 18                                                   
 19 /*                                                
 20  *      Requirements:                             
 21  *      !(((long)dest | (long)sourceN) & (64 -    
 22  *      !(len & 127) && len >= 256                
 23  */                                               
 24         .text                                     
 25                                                   
 26         /* VIS versions. */                       
 27 ENTRY(xor_vis_2)                                  
 28         rd      %fprs, %o5                        
 29         andcc   %o5, FPRS_FEF|FPRS_DU, %g0        
 30         be,pt   %icc, 0f                          
 31          sethi  %hi(VISenter), %g1                
 32         jmpl    %g1 + %lo(VISenter), %g7          
 33          add    %g7, 8, %g7                       
 34 0:      wr      %g0, FPRS_FEF, %fprs              
 35         rd      %asi, %g1                         
 36         wr      %g0, ASI_BLK_P, %asi              
 37         membar  #LoadStore|#StoreLoad|#StoreSt    
 38         sub     %o0, 128, %o0                     
 39         ldda    [%o1] %asi, %f0                   
 40         ldda    [%o2] %asi, %f16                  
 41                                                   
 42 2:      ldda    [%o1 + 64] %asi, %f32             
 43         fxor    %f0, %f16, %f16                   
 44         fxor    %f2, %f18, %f18                   
 45         fxor    %f4, %f20, %f20                   
 46         fxor    %f6, %f22, %f22                   
 47         fxor    %f8, %f24, %f24                   
 48         fxor    %f10, %f26, %f26                  
 49         fxor    %f12, %f28, %f28                  
 50         fxor    %f14, %f30, %f30                  
 51         stda    %f16, [%o1] %asi                  
 52         ldda    [%o2 + 64] %asi, %f48             
 53         ldda    [%o1 + 128] %asi, %f0             
 54         fxor    %f32, %f48, %f48                  
 55         fxor    %f34, %f50, %f50                  
 56         add     %o1, 128, %o1                     
 57         fxor    %f36, %f52, %f52                  
 58         add     %o2, 128, %o2                     
 59         fxor    %f38, %f54, %f54                  
 60         subcc   %o0, 128, %o0                     
 61         fxor    %f40, %f56, %f56                  
 62         fxor    %f42, %f58, %f58                  
 63         fxor    %f44, %f60, %f60                  
 64         fxor    %f46, %f62, %f62                  
 65         stda    %f48, [%o1 - 64] %asi             
 66         bne,pt  %xcc, 2b                          
 67          ldda   [%o2] %asi, %f16                  
 68                                                   
 69         ldda    [%o1 + 64] %asi, %f32             
 70         fxor    %f0, %f16, %f16                   
 71         fxor    %f2, %f18, %f18                   
 72         fxor    %f4, %f20, %f20                   
 73         fxor    %f6, %f22, %f22                   
 74         fxor    %f8, %f24, %f24                   
 75         fxor    %f10, %f26, %f26                  
 76         fxor    %f12, %f28, %f28                  
 77         fxor    %f14, %f30, %f30                  
 78         stda    %f16, [%o1] %asi                  
 79         ldda    [%o2 + 64] %asi, %f48             
 80         membar  #Sync                             
 81         fxor    %f32, %f48, %f48                  
 82         fxor    %f34, %f50, %f50                  
 83         fxor    %f36, %f52, %f52                  
 84         fxor    %f38, %f54, %f54                  
 85         fxor    %f40, %f56, %f56                  
 86         fxor    %f42, %f58, %f58                  
 87         fxor    %f44, %f60, %f60                  
 88         fxor    %f46, %f62, %f62                  
 89         stda    %f48, [%o1 + 64] %asi             
 90         membar  #Sync|#StoreStore|#StoreLoad      
 91         wr      %g1, %g0, %asi                    
 92         retl                                      
 93           wr    %g0, 0, %fprs                     
 94 ENDPROC(xor_vis_2)                                
 95 EXPORT_SYMBOL(xor_vis_2)                          
 96                                                   
 97 ENTRY(xor_vis_3)                                  
 98         rd      %fprs, %o5                        
 99         andcc   %o5, FPRS_FEF|FPRS_DU, %g0        
100         be,pt   %icc, 0f                          
101          sethi  %hi(VISenter), %g1                
102         jmpl    %g1 + %lo(VISenter), %g7          
103          add    %g7, 8, %g7                       
104 0:      wr      %g0, FPRS_FEF, %fprs              
105         rd      %asi, %g1                         
106         wr      %g0, ASI_BLK_P, %asi              
107         membar  #LoadStore|#StoreLoad|#StoreSt    
108         sub     %o0, 64, %o0                      
109         ldda    [%o1] %asi, %f0                   
110         ldda    [%o2] %asi, %f16                  
111                                                   
112 3:      ldda    [%o3] %asi, %f32                  
113         fxor    %f0, %f16, %f48                   
114         fxor    %f2, %f18, %f50                   
115         add     %o1, 64, %o1                      
116         fxor    %f4, %f20, %f52                   
117         fxor    %f6, %f22, %f54                   
118         add     %o2, 64, %o2                      
119         fxor    %f8, %f24, %f56                   
120         fxor    %f10, %f26, %f58                  
121         fxor    %f12, %f28, %f60                  
122         fxor    %f14, %f30, %f62                  
123         ldda    [%o1] %asi, %f0                   
124         fxor    %f48, %f32, %f48                  
125         fxor    %f50, %f34, %f50                  
126         fxor    %f52, %f36, %f52                  
127         fxor    %f54, %f38, %f54                  
128         add     %o3, 64, %o3                      
129         fxor    %f56, %f40, %f56                  
130         fxor    %f58, %f42, %f58                  
131         subcc   %o0, 64, %o0                      
132         fxor    %f60, %f44, %f60                  
133         fxor    %f62, %f46, %f62                  
134         stda    %f48, [%o1 - 64] %asi             
135         bne,pt  %xcc, 3b                          
136          ldda   [%o2] %asi, %f16                  
137                                                   
138         ldda    [%o3] %asi, %f32                  
139         fxor    %f0, %f16, %f48                   
140         fxor    %f2, %f18, %f50                   
141         fxor    %f4, %f20, %f52                   
142         fxor    %f6, %f22, %f54                   
143         fxor    %f8, %f24, %f56                   
144         fxor    %f10, %f26, %f58                  
145         fxor    %f12, %f28, %f60                  
146         fxor    %f14, %f30, %f62                  
147         membar  #Sync                             
148         fxor    %f48, %f32, %f48                  
149         fxor    %f50, %f34, %f50                  
150         fxor    %f52, %f36, %f52                  
151         fxor    %f54, %f38, %f54                  
152         fxor    %f56, %f40, %f56                  
153         fxor    %f58, %f42, %f58                  
154         fxor    %f60, %f44, %f60                  
155         fxor    %f62, %f46, %f62                  
156         stda    %f48, [%o1] %asi                  
157         membar  #Sync|#StoreStore|#StoreLoad      
158         wr      %g1, %g0, %asi                    
159         retl                                      
160          wr     %g0, 0, %fprs                     
161 ENDPROC(xor_vis_3)                                
162 EXPORT_SYMBOL(xor_vis_3)                          
163                                                   
164 ENTRY(xor_vis_4)                                  
165         rd      %fprs, %o5                        
166         andcc   %o5, FPRS_FEF|FPRS_DU, %g0        
167         be,pt   %icc, 0f                          
168          sethi  %hi(VISenter), %g1                
169         jmpl    %g1 + %lo(VISenter), %g7          
170          add    %g7, 8, %g7                       
171 0:      wr      %g0, FPRS_FEF, %fprs              
172         rd      %asi, %g1                         
173         wr      %g0, ASI_BLK_P, %asi              
174         membar  #LoadStore|#StoreLoad|#StoreSt    
175         sub     %o0, 64, %o0                      
176         ldda    [%o1] %asi, %f0                   
177         ldda    [%o2] %asi, %f16                  
178                                                   
179 4:      ldda    [%o3] %asi, %f32                  
180         fxor    %f0, %f16, %f16                   
181         fxor    %f2, %f18, %f18                   
182         add     %o1, 64, %o1                      
183         fxor    %f4, %f20, %f20                   
184         fxor    %f6, %f22, %f22                   
185         add     %o2, 64, %o2                      
186         fxor    %f8, %f24, %f24                   
187         fxor    %f10, %f26, %f26                  
188         fxor    %f12, %f28, %f28                  
189         fxor    %f14, %f30, %f30                  
190         ldda    [%o4] %asi, %f48                  
191         fxor    %f16, %f32, %f32                  
192         fxor    %f18, %f34, %f34                  
193         fxor    %f20, %f36, %f36                  
194         fxor    %f22, %f38, %f38                  
195         add     %o3, 64, %o3                      
196         fxor    %f24, %f40, %f40                  
197         fxor    %f26, %f42, %f42                  
198         fxor    %f28, %f44, %f44                  
199         fxor    %f30, %f46, %f46                  
200         ldda    [%o1] %asi, %f0                   
201         fxor    %f32, %f48, %f48                  
202         fxor    %f34, %f50, %f50                  
203         fxor    %f36, %f52, %f52                  
204         add     %o4, 64, %o4                      
205         fxor    %f38, %f54, %f54                  
206         fxor    %f40, %f56, %f56                  
207         fxor    %f42, %f58, %f58                  
208         subcc   %o0, 64, %o0                      
209         fxor    %f44, %f60, %f60                  
210         fxor    %f46, %f62, %f62                  
211         stda    %f48, [%o1 - 64] %asi             
212         bne,pt  %xcc, 4b                          
213          ldda   [%o2] %asi, %f16                  
214                                                   
215         ldda    [%o3] %asi, %f32                  
216         fxor    %f0, %f16, %f16                   
217         fxor    %f2, %f18, %f18                   
218         fxor    %f4, %f20, %f20                   
219         fxor    %f6, %f22, %f22                   
220         fxor    %f8, %f24, %f24                   
221         fxor    %f10, %f26, %f26                  
222         fxor    %f12, %f28, %f28                  
223         fxor    %f14, %f30, %f30                  
224         ldda    [%o4] %asi, %f48                  
225         fxor    %f16, %f32, %f32                  
226         fxor    %f18, %f34, %f34                  
227         fxor    %f20, %f36, %f36                  
228         fxor    %f22, %f38, %f38                  
229         fxor    %f24, %f40, %f40                  
230         fxor    %f26, %f42, %f42                  
231         fxor    %f28, %f44, %f44                  
232         fxor    %f30, %f46, %f46                  
233         membar  #Sync                             
234         fxor    %f32, %f48, %f48                  
235         fxor    %f34, %f50, %f50                  
236         fxor    %f36, %f52, %f52                  
237         fxor    %f38, %f54, %f54                  
238         fxor    %f40, %f56, %f56                  
239         fxor    %f42, %f58, %f58                  
240         fxor    %f44, %f60, %f60                  
241         fxor    %f46, %f62, %f62                  
242         stda    %f48, [%o1] %asi                  
243         membar  #Sync|#StoreStore|#StoreLoad      
244         wr      %g1, %g0, %asi                    
245         retl                                      
246          wr     %g0, 0, %fprs                     
247 ENDPROC(xor_vis_4)                                
248 EXPORT_SYMBOL(xor_vis_4)                          
249                                                   
250 ENTRY(xor_vis_5)                                  
251         save    %sp, -192, %sp                    
252         rd      %fprs, %o5                        
253         andcc   %o5, FPRS_FEF|FPRS_DU, %g0        
254         be,pt   %icc, 0f                          
255          sethi  %hi(VISenter), %g1                
256         jmpl    %g1 + %lo(VISenter), %g7          
257          add    %g7, 8, %g7                       
258 0:      wr      %g0, FPRS_FEF, %fprs              
259         rd      %asi, %g1                         
260         wr      %g0, ASI_BLK_P, %asi              
261         membar  #LoadStore|#StoreLoad|#StoreSt    
262         sub     %i0, 64, %i0                      
263         ldda    [%i1] %asi, %f0                   
264         ldda    [%i2] %asi, %f16                  
265                                                   
266 5:      ldda    [%i3] %asi, %f32                  
267         fxor    %f0, %f16, %f48                   
268         fxor    %f2, %f18, %f50                   
269         add     %i1, 64, %i1                      
270         fxor    %f4, %f20, %f52                   
271         fxor    %f6, %f22, %f54                   
272         add     %i2, 64, %i2                      
273         fxor    %f8, %f24, %f56                   
274         fxor    %f10, %f26, %f58                  
275         fxor    %f12, %f28, %f60                  
276         fxor    %f14, %f30, %f62                  
277         ldda    [%i4] %asi, %f16                  
278         fxor    %f48, %f32, %f48                  
279         fxor    %f50, %f34, %f50                  
280         fxor    %f52, %f36, %f52                  
281         fxor    %f54, %f38, %f54                  
282         add     %i3, 64, %i3                      
283         fxor    %f56, %f40, %f56                  
284         fxor    %f58, %f42, %f58                  
285         fxor    %f60, %f44, %f60                  
286         fxor    %f62, %f46, %f62                  
287         ldda    [%i5] %asi, %f32                  
288         fxor    %f48, %f16, %f48                  
289         fxor    %f50, %f18, %f50                  
290         add     %i4, 64, %i4                      
291         fxor    %f52, %f20, %f52                  
292         fxor    %f54, %f22, %f54                  
293         add     %i5, 64, %i5                      
294         fxor    %f56, %f24, %f56                  
295         fxor    %f58, %f26, %f58                  
296         fxor    %f60, %f28, %f60                  
297         fxor    %f62, %f30, %f62                  
298         ldda    [%i1] %asi, %f0                   
299         fxor    %f48, %f32, %f48                  
300         fxor    %f50, %f34, %f50                  
301         fxor    %f52, %f36, %f52                  
302         fxor    %f54, %f38, %f54                  
303         fxor    %f56, %f40, %f56                  
304         fxor    %f58, %f42, %f58                  
305         subcc   %i0, 64, %i0                      
306         fxor    %f60, %f44, %f60                  
307         fxor    %f62, %f46, %f62                  
308         stda    %f48, [%i1 - 64] %asi             
309         bne,pt  %xcc, 5b                          
310          ldda   [%i2] %asi, %f16                  
311                                                   
312         ldda    [%i3] %asi, %f32                  
313         fxor    %f0, %f16, %f48                   
314         fxor    %f2, %f18, %f50                   
315         fxor    %f4, %f20, %f52                   
316         fxor    %f6, %f22, %f54                   
317         fxor    %f8, %f24, %f56                   
318         fxor    %f10, %f26, %f58                  
319         fxor    %f12, %f28, %f60                  
320         fxor    %f14, %f30, %f62                  
321         ldda    [%i4] %asi, %f16                  
322         fxor    %f48, %f32, %f48                  
323         fxor    %f50, %f34, %f50                  
324         fxor    %f52, %f36, %f52                  
325         fxor    %f54, %f38, %f54                  
326         fxor    %f56, %f40, %f56                  
327         fxor    %f58, %f42, %f58                  
328         fxor    %f60, %f44, %f60                  
329         fxor    %f62, %f46, %f62                  
330         ldda    [%i5] %asi, %f32                  
331         fxor    %f48, %f16, %f48                  
332         fxor    %f50, %f18, %f50                  
333         fxor    %f52, %f20, %f52                  
334         fxor    %f54, %f22, %f54                  
335         fxor    %f56, %f24, %f56                  
336         fxor    %f58, %f26, %f58                  
337         fxor    %f60, %f28, %f60                  
338         fxor    %f62, %f30, %f62                  
339         membar  #Sync                             
340         fxor    %f48, %f32, %f48                  
341         fxor    %f50, %f34, %f50                  
342         fxor    %f52, %f36, %f52                  
343         fxor    %f54, %f38, %f54                  
344         fxor    %f56, %f40, %f56                  
345         fxor    %f58, %f42, %f58                  
346         fxor    %f60, %f44, %f60                  
347         fxor    %f62, %f46, %f62                  
348         stda    %f48, [%i1] %asi                  
349         membar  #Sync|#StoreStore|#StoreLoad      
350         wr      %g1, %g0, %asi                    
351         wr      %g0, 0, %fprs                     
352         ret                                       
353          restore                                  
354 ENDPROC(xor_vis_5)                                
355 EXPORT_SYMBOL(xor_vis_5)                          
356                                                   
357         /* Niagara versions. */                   
358 ENTRY(xor_niagara_2) /* %o0=bytes, %o1=dest, %    
359         save            %sp, -192, %sp            
360         prefetch        [%i1], #n_writes          
361         prefetch        [%i2], #one_read          
362         rd              %asi, %g7                 
363         wr              %g0, ASI_BLK_INIT_QUAD    
364         srlx            %i0, 6, %g1               
365         mov             %i1, %i0                  
366         mov             %i2, %i1                  
367 1:      ldda            [%i1 + 0x00] %asi, %i2    
368         ldda            [%i1 + 0x10] %asi, %i4    
369         ldda            [%i1 + 0x20] %asi, %g2    
370         ldda            [%i1 + 0x30] %asi, %l0    
371         prefetch        [%i1 + 0x40], #one_rea    
372         ldda            [%i0 + 0x00] %asi, %o0    
373         ldda            [%i0 + 0x10] %asi, %o2    
374         ldda            [%i0 + 0x20] %asi, %o4    
375         ldda            [%i0 + 0x30] %asi, %l2    
376         prefetch        [%i0 + 0x40], #n_write    
377         xor             %o0, %i2, %o0             
378         xor             %o1, %i3, %o1             
379         stxa            %o0, [%i0 + 0x00] %asi    
380         stxa            %o1, [%i0 + 0x08] %asi    
381         xor             %o2, %i4, %o2             
382         xor             %o3, %i5, %o3             
383         stxa            %o2, [%i0 + 0x10] %asi    
384         stxa            %o3, [%i0 + 0x18] %asi    
385         xor             %o4, %g2, %o4             
386         xor             %o5, %g3, %o5             
387         stxa            %o4, [%i0 + 0x20] %asi    
388         stxa            %o5, [%i0 + 0x28] %asi    
389         xor             %l2, %l0, %l2             
390         xor             %l3, %l1, %l3             
391         stxa            %l2, [%i0 + 0x30] %asi    
392         stxa            %l3, [%i0 + 0x38] %asi    
393         add             %i0, 0x40, %i0            
394         subcc           %g1, 1, %g1               
395         bne,pt          %xcc, 1b                  
396          add            %i1, 0x40, %i1            
397         membar          #Sync                     
398         wr              %g7, 0x0, %asi            
399         ret                                       
400          restore                                  
401 ENDPROC(xor_niagara_2)                            
402 EXPORT_SYMBOL(xor_niagara_2)                      
403                                                   
404 ENTRY(xor_niagara_3) /* %o0=bytes, %o1=dest, %    
405         save            %sp, -192, %sp            
406         prefetch        [%i1], #n_writes          
407         prefetch        [%i2], #one_read          
408         prefetch        [%i3], #one_read          
409         rd              %asi, %g7                 
410         wr              %g0, ASI_BLK_INIT_QUAD    
411         srlx            %i0, 6, %g1               
412         mov             %i1, %i0                  
413         mov             %i2, %i1                  
414         mov             %i3, %l7                  
415 1:      ldda            [%i1 + 0x00] %asi, %i2    
416         ldda            [%i1 + 0x10] %asi, %i4    
417         ldda            [%l7 + 0x00] %asi, %g2    
418         ldda            [%l7 + 0x10] %asi, %l0    
419         ldda            [%i0 + 0x00] %asi, %o0    
420         ldda            [%i0 + 0x10] %asi, %o2    
421         xor             %g2, %i2, %g2             
422         xor             %g3, %i3, %g3             
423         xor             %o0, %g2, %o0             
424         xor             %o1, %g3, %o1             
425         stxa            %o0, [%i0 + 0x00] %asi    
426         stxa            %o1, [%i0 + 0x08] %asi    
427         ldda            [%i1 + 0x20] %asi, %i2    
428         ldda            [%l7 + 0x20] %asi, %g2    
429         ldda            [%i0 + 0x20] %asi, %o0    
430         xor             %l0, %i4, %l0             
431         xor             %l1, %i5, %l1             
432         xor             %o2, %l0, %o2             
433         xor             %o3, %l1, %o3             
434         stxa            %o2, [%i0 + 0x10] %asi    
435         stxa            %o3, [%i0 + 0x18] %asi    
436         ldda            [%i1 + 0x30] %asi, %i4    
437         ldda            [%l7 + 0x30] %asi, %l0    
438         ldda            [%i0 + 0x30] %asi, %o2    
439         prefetch        [%i1 + 0x40], #one_rea    
440         prefetch        [%l7 + 0x40], #one_rea    
441         prefetch        [%i0 + 0x40], #n_write    
442         xor             %g2, %i2, %g2             
443         xor             %g3, %i3, %g3             
444         xor             %o0, %g2, %o0             
445         xor             %o1, %g3, %o1             
446         stxa            %o0, [%i0 + 0x20] %asi    
447         stxa            %o1, [%i0 + 0x28] %asi    
448         xor             %l0, %i4, %l0             
449         xor             %l1, %i5, %l1             
450         xor             %o2, %l0, %o2             
451         xor             %o3, %l1, %o3             
452         stxa            %o2, [%i0 + 0x30] %asi    
453         stxa            %o3, [%i0 + 0x38] %asi    
454         add             %i0, 0x40, %i0            
455         add             %i1, 0x40, %i1            
456         subcc           %g1, 1, %g1               
457         bne,pt          %xcc, 1b                  
458          add            %l7, 0x40, %l7            
459         membar          #Sync                     
460         wr              %g7, 0x0, %asi            
461         ret                                       
462          restore                                  
463 ENDPROC(xor_niagara_3)                            
464 EXPORT_SYMBOL(xor_niagara_3)                      
465                                                   
466 ENTRY(xor_niagara_4) /* %o0=bytes, %o1=dest, %    
467         save            %sp, -192, %sp            
468         prefetch        [%i1], #n_writes          
469         prefetch        [%i2], #one_read          
470         prefetch        [%i3], #one_read          
471         prefetch        [%i4], #one_read          
472         rd              %asi, %g7                 
473         wr              %g0, ASI_BLK_INIT_QUAD    
474         srlx            %i0, 6, %g1               
475         mov             %i1, %i0                  
476         mov             %i2, %i1                  
477         mov             %i3, %l7                  
478         mov             %i4, %l6                  
479 1:      ldda            [%i1 + 0x00] %asi, %i2    
480         ldda            [%l7 + 0x00] %asi, %i4    
481         ldda            [%l6 + 0x00] %asi, %g2    
482         ldda            [%i0 + 0x00] %asi, %l0    
483         xor             %i4, %i2, %i4             
484         xor             %i5, %i3, %i5             
485         ldda            [%i1 + 0x10] %asi, %i2    
486         xor             %g2, %i4, %g2             
487         xor             %g3, %i5, %g3             
488         ldda            [%l7 + 0x10] %asi, %i4    
489         xor             %l0, %g2, %l0             
490         xor             %l1, %g3, %l1             
491         stxa            %l0, [%i0 + 0x00] %asi    
492         stxa            %l1, [%i0 + 0x08] %asi    
493         ldda            [%l6 + 0x10] %asi, %g2    
494         ldda            [%i0 + 0x10] %asi, %l0    
495                                                   
496         xor             %i4, %i2, %i4             
497         xor             %i5, %i3, %i5             
498         ldda            [%i1 + 0x20] %asi, %i2    
499         xor             %g2, %i4, %g2             
500         xor             %g3, %i5, %g3             
501         ldda            [%l7 + 0x20] %asi, %i4    
502         xor             %l0, %g2, %l0             
503         xor             %l1, %g3, %l1             
504         stxa            %l0, [%i0 + 0x10] %asi    
505         stxa            %l1, [%i0 + 0x18] %asi    
506         ldda            [%l6 + 0x20] %asi, %g2    
507         ldda            [%i0 + 0x20] %asi, %l0    
508                                                   
509         xor             %i4, %i2, %i4             
510         xor             %i5, %i3, %i5             
511         ldda            [%i1 + 0x30] %asi, %i2    
512         xor             %g2, %i4, %g2             
513         xor             %g3, %i5, %g3             
514         ldda            [%l7 + 0x30] %asi, %i4    
515         xor             %l0, %g2, %l0             
516         xor             %l1, %g3, %l1             
517         stxa            %l0, [%i0 + 0x20] %asi    
518         stxa            %l1, [%i0 + 0x28] %asi    
519         ldda            [%l6 + 0x30] %asi, %g2    
520         ldda            [%i0 + 0x30] %asi, %l0    
521                                                   
522         prefetch        [%i1 + 0x40], #one_rea    
523         prefetch        [%l7 + 0x40], #one_rea    
524         prefetch        [%l6 + 0x40], #one_rea    
525         prefetch        [%i0 + 0x40], #n_write    
526                                                   
527         xor             %i4, %i2, %i4             
528         xor             %i5, %i3, %i5             
529         xor             %g2, %i4, %g2             
530         xor             %g3, %i5, %g3             
531         xor             %l0, %g2, %l0             
532         xor             %l1, %g3, %l1             
533         stxa            %l0, [%i0 + 0x30] %asi    
534         stxa            %l1, [%i0 + 0x38] %asi    
535                                                   
536         add             %i0, 0x40, %i0            
537         add             %i1, 0x40, %i1            
538         add             %l7, 0x40, %l7            
539         subcc           %g1, 1, %g1               
540         bne,pt          %xcc, 1b                  
541          add            %l6, 0x40, %l6            
542         membar          #Sync                     
543         wr              %g7, 0x0, %asi            
544         ret                                       
545          restore                                  
546 ENDPROC(xor_niagara_4)                            
547 EXPORT_SYMBOL(xor_niagara_4)                      
548                                                   
549 ENTRY(xor_niagara_5) /* %o0=bytes, %o1=dest, %    
550         save            %sp, -192, %sp            
551         prefetch        [%i1], #n_writes          
552         prefetch        [%i2], #one_read          
553         prefetch        [%i3], #one_read          
554         prefetch        [%i4], #one_read          
555         prefetch        [%i5], #one_read          
556         rd              %asi, %g7                 
557         wr              %g0, ASI_BLK_INIT_QUAD    
558         srlx            %i0, 6, %g1               
559         mov             %i1, %i0                  
560         mov             %i2, %i1                  
561         mov             %i3, %l7                  
562         mov             %i4, %l6                  
563         mov             %i5, %l5                  
564 1:      ldda            [%i1 + 0x00] %asi, %i2    
565         ldda            [%l7 + 0x00] %asi, %i4    
566         ldda            [%l6 + 0x00] %asi, %g2    
567         ldda            [%l5 + 0x00] %asi, %l0    
568         ldda            [%i0 + 0x00] %asi, %l2    
569         xor             %i4, %i2, %i4             
570         xor             %i5, %i3, %i5             
571         ldda            [%i1 + 0x10] %asi, %i2    
572         xor             %g2, %i4, %g2             
573         xor             %g3, %i5, %g3             
574         ldda            [%l7 + 0x10] %asi, %i4    
575         xor             %l0, %g2, %l0             
576         xor             %l1, %g3, %l1             
577         ldda            [%l6 + 0x10] %asi, %g2    
578         xor             %l2, %l0, %l2             
579         xor             %l3, %l1, %l3             
580         stxa            %l2, [%i0 + 0x00] %asi    
581         stxa            %l3, [%i0 + 0x08] %asi    
582         ldda            [%l5 + 0x10] %asi, %l0    
583         ldda            [%i0 + 0x10] %asi, %l2    
584                                                   
585         xor             %i4, %i2, %i4             
586         xor             %i5, %i3, %i5             
587         ldda            [%i1 + 0x20] %asi, %i2    
588         xor             %g2, %i4, %g2             
589         xor             %g3, %i5, %g3             
590         ldda            [%l7 + 0x20] %asi, %i4    
591         xor             %l0, %g2, %l0             
592         xor             %l1, %g3, %l1             
593         ldda            [%l6 + 0x20] %asi, %g2    
594         xor             %l2, %l0, %l2             
595         xor             %l3, %l1, %l3             
596         stxa            %l2, [%i0 + 0x10] %asi    
597         stxa            %l3, [%i0 + 0x18] %asi    
598         ldda            [%l5 + 0x20] %asi, %l0    
599         ldda            [%i0 + 0x20] %asi, %l2    
600                                                   
601         xor             %i4, %i2, %i4             
602         xor             %i5, %i3, %i5             
603         ldda            [%i1 + 0x30] %asi, %i2    
604         xor             %g2, %i4, %g2             
605         xor             %g3, %i5, %g3             
606         ldda            [%l7 + 0x30] %asi, %i4    
607         xor             %l0, %g2, %l0             
608         xor             %l1, %g3, %l1             
609         ldda            [%l6 + 0x30] %asi, %g2    
610         xor             %l2, %l0, %l2             
611         xor             %l3, %l1, %l3             
612         stxa            %l2, [%i0 + 0x20] %asi    
613         stxa            %l3, [%i0 + 0x28] %asi    
614         ldda            [%l5 + 0x30] %asi, %l0    
615         ldda            [%i0 + 0x30] %asi, %l2    
616                                                   
617         prefetch        [%i1 + 0x40], #one_rea    
618         prefetch        [%l7 + 0x40], #one_rea    
619         prefetch        [%l6 + 0x40], #one_rea    
620         prefetch        [%l5 + 0x40], #one_rea    
621         prefetch        [%i0 + 0x40], #n_write    
622                                                   
623         xor             %i4, %i2, %i4             
624         xor             %i5, %i3, %i5             
625         xor             %g2, %i4, %g2             
626         xor             %g3, %i5, %g3             
627         xor             %l0, %g2, %l0             
628         xor             %l1, %g3, %l1             
629         xor             %l2, %l0, %l2             
630         xor             %l3, %l1, %l3             
631         stxa            %l2, [%i0 + 0x30] %asi    
632         stxa            %l3, [%i0 + 0x38] %asi    
633                                                   
634         add             %i0, 0x40, %i0            
635         add             %i1, 0x40, %i1            
636         add             %l7, 0x40, %l7            
637         add             %l6, 0x40, %l6            
638         subcc           %g1, 1, %g1               
639         bne,pt          %xcc, 1b                  
640          add            %l5, 0x40, %l5            
641         membar          #Sync                     
642         wr              %g7, 0x0, %asi            
643         ret                                       
644          restore                                  
645 ENDPROC(xor_niagara_5)                            
646 EXPORT_SYMBOL(xor_niagara_5)                      
                                                      

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