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

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


  1 /* SPDX-License-Identifier: GPL-2.0 */            
  2         /* This is trivial with the new code..    
  3         .globl          do_fpdis                  
  4         .type           do_fpdis,#function        
  5 do_fpdis:                                         
  6         sethi           %hi(TSTATE_PEF), %g4      
  7         rdpr            %tstate, %g5              
  8         andcc           %g5, %g4, %g0             
  9         be,pt           %xcc, 1f                  
 10          nop                                      
 11         rd              %fprs, %g5                
 12         andcc           %g5, FPRS_FEF, %g0        
 13         be,pt           %xcc, 1f                  
 14          nop                                      
 15                                                   
 16         /* Legal state when DCR_IFPOE is set i    
 17         sethi           %hi(109f), %g7            
 18         ba,pt           %xcc, etrap               
 19 109:     or             %g7, %lo(109b), %g7       
 20         add             %g0, %g0, %g0             
 21         ba,a,pt         %xcc, rtrap               
 22                                                   
 23 1:      TRAP_LOAD_THREAD_REG(%g6, %g1)            
 24         ldub            [%g6 + TI_FPSAVED], %g    
 25         wr              %g0, FPRS_FEF, %fprs      
 26         andcc           %g5, FPRS_FEF, %g0        
 27         be,a,pt         %icc, 1f                  
 28          clr            %g7                       
 29         ldx             [%g6 + TI_GSR], %g7       
 30 1:      andcc           %g5, FPRS_DL, %g0         
 31         bne,pn          %icc, 2f                  
 32          fzero          %f0                       
 33         andcc           %g5, FPRS_DU, %g0         
 34         bne,pn          %icc, 1f                  
 35          fzero          %f2                       
 36         faddd           %f0, %f2, %f4             
 37         fmuld           %f0, %f2, %f6             
 38         faddd           %f0, %f2, %f8             
 39         fmuld           %f0, %f2, %f10            
 40         faddd           %f0, %f2, %f12            
 41         fmuld           %f0, %f2, %f14            
 42         faddd           %f0, %f2, %f16            
 43         fmuld           %f0, %f2, %f18            
 44         faddd           %f0, %f2, %f20            
 45         fmuld           %f0, %f2, %f22            
 46         faddd           %f0, %f2, %f24            
 47         fmuld           %f0, %f2, %f26            
 48         faddd           %f0, %f2, %f28            
 49         fmuld           %f0, %f2, %f30            
 50         faddd           %f0, %f2, %f32            
 51         fmuld           %f0, %f2, %f34            
 52         faddd           %f0, %f2, %f36            
 53         fmuld           %f0, %f2, %f38            
 54         faddd           %f0, %f2, %f40            
 55         fmuld           %f0, %f2, %f42            
 56         faddd           %f0, %f2, %f44            
 57         fmuld           %f0, %f2, %f46            
 58         faddd           %f0, %f2, %f48            
 59         fmuld           %f0, %f2, %f50            
 60         faddd           %f0, %f2, %f52            
 61         fmuld           %f0, %f2, %f54            
 62         faddd           %f0, %f2, %f56            
 63         fmuld           %f0, %f2, %f58            
 64         b,pt            %xcc, fpdis_exit2         
 65          faddd          %f0, %f2, %f60            
 66 1:      mov             SECONDARY_CONTEXT, %g3    
 67         add             %g6, TI_FPREGS + 0x80,    
 68         faddd           %f0, %f2, %f4             
 69         fmuld           %f0, %f2, %f6             
 70                                                   
 71 661:    ldxa            [%g3] ASI_DMMU, %g5       
 72         .section        .sun4v_1insn_patch, "a    
 73         .word           661b                      
 74         ldxa            [%g3] ASI_MMU, %g5        
 75         .previous                                 
 76                                                   
 77         sethi           %hi(sparc64_kern_sec_c    
 78         ldx             [%g2 + %lo(sparc64_ker    
 79                                                   
 80 661:    stxa            %g2, [%g3] ASI_DMMU       
 81         .section        .sun4v_1insn_patch, "a    
 82         .word           661b                      
 83         stxa            %g2, [%g3] ASI_MMU        
 84         .previous                                 
 85                                                   
 86         membar          #Sync                     
 87         add             %g6, TI_FPREGS + 0xc0,    
 88         faddd           %f0, %f2, %f8             
 89         fmuld           %f0, %f2, %f10            
 90         membar          #Sync                     
 91         ldda            [%g1] ASI_BLK_S, %f32     
 92         ldda            [%g2] ASI_BLK_S, %f48     
 93         membar          #Sync                     
 94         faddd           %f0, %f2, %f12            
 95         fmuld           %f0, %f2, %f14            
 96         faddd           %f0, %f2, %f16            
 97         fmuld           %f0, %f2, %f18            
 98         faddd           %f0, %f2, %f20            
 99         fmuld           %f0, %f2, %f22            
100         faddd           %f0, %f2, %f24            
101         fmuld           %f0, %f2, %f26            
102         faddd           %f0, %f2, %f28            
103         fmuld           %f0, %f2, %f30            
104         ba,a,pt         %xcc, fpdis_exit          
105                                                   
106 2:      andcc           %g5, FPRS_DU, %g0         
107         bne,pt          %icc, 3f                  
108          fzero          %f32                      
109         mov             SECONDARY_CONTEXT, %g3    
110         fzero           %f34                      
111                                                   
112 661:    ldxa            [%g3] ASI_DMMU, %g5       
113         .section        .sun4v_1insn_patch, "a    
114         .word           661b                      
115         ldxa            [%g3] ASI_MMU, %g5        
116         .previous                                 
117                                                   
118         add             %g6, TI_FPREGS, %g1       
119         sethi           %hi(sparc64_kern_sec_c    
120         ldx             [%g2 + %lo(sparc64_ker    
121                                                   
122 661:    stxa            %g2, [%g3] ASI_DMMU       
123         .section        .sun4v_1insn_patch, "a    
124         .word           661b                      
125         stxa            %g2, [%g3] ASI_MMU        
126         .previous                                 
127                                                   
128         membar          #Sync                     
129         add             %g6, TI_FPREGS + 0x40,    
130         faddd           %f32, %f34, %f36          
131         fmuld           %f32, %f34, %f38          
132         membar          #Sync                     
133         ldda            [%g1] ASI_BLK_S, %f0      
134         ldda            [%g2] ASI_BLK_S, %f16     
135         membar          #Sync                     
136         faddd           %f32, %f34, %f40          
137         fmuld           %f32, %f34, %f42          
138         faddd           %f32, %f34, %f44          
139         fmuld           %f32, %f34, %f46          
140         faddd           %f32, %f34, %f48          
141         fmuld           %f32, %f34, %f50          
142         faddd           %f32, %f34, %f52          
143         fmuld           %f32, %f34, %f54          
144         faddd           %f32, %f34, %f56          
145         fmuld           %f32, %f34, %f58          
146         faddd           %f32, %f34, %f60          
147         fmuld           %f32, %f34, %f62          
148         ba,a,pt         %xcc, fpdis_exit          
149                                                   
150 3:      mov             SECONDARY_CONTEXT, %g3    
151         add             %g6, TI_FPREGS, %g1       
152                                                   
153 661:    ldxa            [%g3] ASI_DMMU, %g5       
154         .section        .sun4v_1insn_patch, "a    
155         .word           661b                      
156         ldxa            [%g3] ASI_MMU, %g5        
157         .previous                                 
158                                                   
159         sethi           %hi(sparc64_kern_sec_c    
160         ldx             [%g2 + %lo(sparc64_ker    
161                                                   
162 661:    stxa            %g2, [%g3] ASI_DMMU       
163         .section        .sun4v_1insn_patch, "a    
164         .word           661b                      
165         stxa            %g2, [%g3] ASI_MMU        
166         .previous                                 
167                                                   
168         membar          #Sync                     
169         mov             0x40, %g2                 
170         membar          #Sync                     
171         ldda            [%g1] ASI_BLK_S, %f0      
172         ldda            [%g1 + %g2] ASI_BLK_S,    
173         add             %g1, 0x80, %g1            
174         ldda            [%g1] ASI_BLK_S, %f32     
175         ldda            [%g1 + %g2] ASI_BLK_S,    
176         membar          #Sync                     
177 fpdis_exit:                                       
178                                                   
179 661:    stxa            %g5, [%g3] ASI_DMMU       
180         .section        .sun4v_1insn_patch, "a    
181         .word           661b                      
182         stxa            %g5, [%g3] ASI_MMU        
183         .previous                                 
184                                                   
185         membar          #Sync                     
186 fpdis_exit2:                                      
187         wr              %g7, 0, %gsr              
188         ldx             [%g6 + TI_XFSR], %fsr     
189         rdpr            %tstate, %g3              
190         or              %g3, %g4, %g3             
191         wrpr            %g3, %tstate              
192         wr              %g0, FPRS_FEF, %fprs      
193         retry                                     
194         .size           do_fpdis,.-do_fpdis       
195                                                   
196         .align          32                        
197         .type           fp_other_bounce,#funct    
198 fp_other_bounce:                                  
199         call            do_fpother                
200          add            %sp, PTREGS_OFF, %o0      
201         ba,a,pt         %xcc, rtrap               
202         .size           fp_other_bounce,.-fp_o    
203                                                   
204         .align          32                        
205         .globl          do_fpother_check_fitos    
206         .type           do_fpother_check_fitos    
207 do_fpother_check_fitos:                           
208         TRAP_LOAD_THREAD_REG(%g6, %g1)            
209         sethi           %hi(fp_other_bounce -     
210         or              %g7, %lo(fp_other_boun    
211                                                   
212         /* NOTE: Need to preserve %g7 until we    
213          *       to the fitos fixup.              
214          */                                       
215         stx             %fsr, [%g6 + TI_XFSR]     
216         rdpr            %tstate, %g3              
217         andcc           %g3, TSTATE_PRIV, %g0     
218         bne,pn          %xcc, do_fptrap_after_    
219          nop                                      
220         ldx             [%g6 + TI_XFSR], %g3      
221         srlx            %g3, 14, %g1              
222         and             %g1, 7, %g1               
223         cmp             %g1, 2                    
224         bne,pn          %xcc, do_fptrap_after_    
225          sethi          %hi(1 << 23), %g1         
226         andcc           %g3, %g1, %g0             
227         bne,pn          %xcc, do_fptrap_after_    
228          rdpr           %tpc, %g1                 
229         lduwa           [%g1] ASI_AIUP, %g3       
230 #define FITOS_MASK      0xc1f83fe0                
231 #define FITOS_COMPARE   0x81a01880                
232         sethi           %hi(FITOS_MASK), %g1      
233         or              %g1, %lo(FITOS_MASK),     
234         and             %g3, %g1, %g1             
235         sethi           %hi(FITOS_COMPARE), %g    
236         or              %g2, %lo(FITOS_COMPARE    
237         cmp             %g1, %g2                  
238         bne,pn          %xcc, do_fptrap_after_    
239          nop                                      
240         std             %f62, [%g6 + TI_FPREGS    
241         sethi           %hi(fitos_table_1), %g    
242         and             %g3, 0x1f, %g2            
243         or              %g1, %lo(fitos_table_1    
244         sllx            %g2, 2, %g2               
245         jmpl            %g1 + %g2, %g0            
246          ba,pt          %xcc, fitos_emul_conti    
247                                                   
248 fitos_table_1:                                    
249         fitod           %f0, %f62                 
250         fitod           %f1, %f62                 
251         fitod           %f2, %f62                 
252         fitod           %f3, %f62                 
253         fitod           %f4, %f62                 
254         fitod           %f5, %f62                 
255         fitod           %f6, %f62                 
256         fitod           %f7, %f62                 
257         fitod           %f8, %f62                 
258         fitod           %f9, %f62                 
259         fitod           %f10, %f62                
260         fitod           %f11, %f62                
261         fitod           %f12, %f62                
262         fitod           %f13, %f62                
263         fitod           %f14, %f62                
264         fitod           %f15, %f62                
265         fitod           %f16, %f62                
266         fitod           %f17, %f62                
267         fitod           %f18, %f62                
268         fitod           %f19, %f62                
269         fitod           %f20, %f62                
270         fitod           %f21, %f62                
271         fitod           %f22, %f62                
272         fitod           %f23, %f62                
273         fitod           %f24, %f62                
274         fitod           %f25, %f62                
275         fitod           %f26, %f62                
276         fitod           %f27, %f62                
277         fitod           %f28, %f62                
278         fitod           %f29, %f62                
279         fitod           %f30, %f62                
280         fitod           %f31, %f62                
281                                                   
282 fitos_emul_continue:                              
283         sethi           %hi(fitos_table_2), %g    
284         srl             %g3, 25, %g2              
285         or              %g1, %lo(fitos_table_2    
286         and             %g2, 0x1f, %g2            
287         sllx            %g2, 2, %g2               
288         jmpl            %g1 + %g2, %g0            
289          ba,pt          %xcc, fitos_emul_fini     
290                                                   
291 fitos_table_2:                                    
292         fdtos           %f62, %f0                 
293         fdtos           %f62, %f1                 
294         fdtos           %f62, %f2                 
295         fdtos           %f62, %f3                 
296         fdtos           %f62, %f4                 
297         fdtos           %f62, %f5                 
298         fdtos           %f62, %f6                 
299         fdtos           %f62, %f7                 
300         fdtos           %f62, %f8                 
301         fdtos           %f62, %f9                 
302         fdtos           %f62, %f10                
303         fdtos           %f62, %f11                
304         fdtos           %f62, %f12                
305         fdtos           %f62, %f13                
306         fdtos           %f62, %f14                
307         fdtos           %f62, %f15                
308         fdtos           %f62, %f16                
309         fdtos           %f62, %f17                
310         fdtos           %f62, %f18                
311         fdtos           %f62, %f19                
312         fdtos           %f62, %f20                
313         fdtos           %f62, %f21                
314         fdtos           %f62, %f22                
315         fdtos           %f62, %f23                
316         fdtos           %f62, %f24                
317         fdtos           %f62, %f25                
318         fdtos           %f62, %f26                
319         fdtos           %f62, %f27                
320         fdtos           %f62, %f28                
321         fdtos           %f62, %f29                
322         fdtos           %f62, %f30                
323         fdtos           %f62, %f31                
324                                                   
325 fitos_emul_fini:                                  
326         ldd             [%g6 + TI_FPREGS + (62    
327         done                                      
328         .size           do_fpother_check_fitos    
329                                                   
330         .align          32                        
331         .globl          do_fptrap                 
332         .type           do_fptrap,#function       
333 do_fptrap:                                        
334         TRAP_LOAD_THREAD_REG(%g6, %g1)            
335         stx             %fsr, [%g6 + TI_XFSR]     
336 do_fptrap_after_fsr:                              
337         ldub            [%g6 + TI_FPSAVED], %g    
338         rd              %fprs, %g1                
339         or              %g3, %g1, %g3             
340         stb             %g3, [%g6 + TI_FPSAVED    
341         rd              %gsr, %g3                 
342         stx             %g3, [%g6 + TI_GSR]       
343         mov             SECONDARY_CONTEXT, %g3    
344                                                   
345 661:    ldxa            [%g3] ASI_DMMU, %g5       
346         .section        .sun4v_1insn_patch, "a    
347         .word           661b                      
348         ldxa            [%g3] ASI_MMU, %g5        
349         .previous                                 
350                                                   
351         sethi           %hi(sparc64_kern_sec_c    
352         ldx             [%g2 + %lo(sparc64_ker    
353                                                   
354 661:    stxa            %g2, [%g3] ASI_DMMU       
355         .section        .sun4v_1insn_patch, "a    
356         .word           661b                      
357         stxa            %g2, [%g3] ASI_MMU        
358         .previous                                 
359                                                   
360         membar          #Sync                     
361         add             %g6, TI_FPREGS, %g2       
362         andcc           %g1, FPRS_DL, %g0         
363         be,pn           %icc, 4f                  
364          mov            0x40, %g3                 
365         stda            %f0, [%g2] ASI_BLK_S      
366         stda            %f16, [%g2 + %g3] ASI_    
367         andcc           %g1, FPRS_DU, %g0         
368         be,pn           %icc, 5f                  
369 4:       add            %g2, 128, %g2             
370         stda            %f32, [%g2] ASI_BLK_S     
371         stda            %f48, [%g2 + %g3] ASI_    
372 5:      mov             SECONDARY_CONTEXT, %g1    
373         membar          #Sync                     
374                                                   
375 661:    stxa            %g5, [%g1] ASI_DMMU       
376         .section        .sun4v_1insn_patch, "a    
377         .word           661b                      
378         stxa            %g5, [%g1] ASI_MMU        
379         .previous                                 
380                                                   
381         membar          #Sync                     
382         ba,pt           %xcc, etrap               
383          wr             %g0, 0, %fprs             
384         .size           do_fptrap,.-do_fptrap     
                                                      

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