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

TOMOYO Linux Cross Reference
Linux/arch/sparc/lib/divdi3.S

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ 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.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/sparc/lib/divdi3.S (Architecture sparc) and /arch/alpha/lib/divdi3.S (Architecture alpha)


  1 /* SPDX-License-Identifier: GPL-2.0-or-later *    
  2 /* Copyright (C) 1989, 1992, 1993, 1994, 1995     
  3                                                   
  4 This file is part of GNU CC.                      
  5                                                   
  6  */                                               
  7                                                   
  8 #include <linux/export.h>                         
  9         .text                                     
 10         .align 4                                  
 11         .globl __divdi3                           
 12 __divdi3:                                         
 13         save %sp,-104,%sp                         
 14         cmp %i0,0                                 
 15         bge .LL40                                 
 16         mov 0,%l4                                 
 17         mov -1,%l4                                
 18         sub %g0,%i1,%o0                           
 19         mov %o0,%o5                               
 20         subcc %g0,%o0,%g0                         
 21         sub %g0,%i0,%o0                           
 22         subx %o0,0,%o4                            
 23         mov %o4,%i0                               
 24         mov %o5,%i1                               
 25 .LL40:                                            
 26         cmp %i2,0                                 
 27         bge .LL84                                 
 28         mov %i3,%o4                               
 29         xnor %g0,%l4,%l4                          
 30         sub %g0,%i3,%o0                           
 31         mov %o0,%o3                               
 32         subcc %g0,%o0,%g0                         
 33         sub %g0,%i2,%o0                           
 34         subx %o0,0,%o2                            
 35         mov %o2,%i2                               
 36         mov %o3,%i3                               
 37         mov %i3,%o4                               
 38 .LL84:                                            
 39         cmp %i2,0                                 
 40         bne .LL45                                 
 41         mov %i1,%i3                               
 42         cmp %o4,%i0                               
 43         bleu .LL46                                
 44         mov %i3,%o1                               
 45         mov     32,%g1                            
 46         subcc   %i0,%o4,%g0                       
 47 1:      bcs     5f                                
 48          addxcc %o1,%o1,%o1     ! shift n1n0 a    
 49         sub     %i0,%o4,%i0     ! this kills m    
 50         addx    %i0,%i0,%i0     ! so this cann    
 51         subcc   %g1,1,%g1                         
 52 2:      bne     1b                                
 53          subcc  %i0,%o4,%g0                       
 54         bcs     3f                                
 55          addxcc %o1,%o1,%o1     ! shift n1n0 a    
 56         b       3f                                
 57          sub    %i0,%o4,%i0     ! this kills m    
 58 4:      sub     %i0,%o4,%i0                       
 59 5:      addxcc  %i0,%i0,%i0                       
 60         bcc     2b                                
 61          subcc  %g1,1,%g1                         
 62 ! Got carry from n.  Subtract next step to can    
 63         bne     4b                                
 64          addcc  %o1,%o1,%o1     ! shift n1n0 a    
 65         sub     %i0,%o4,%i0                       
 66 3:      xnor    %o1,0,%o1                         
 67         b .LL50                                   
 68         mov 0,%o2                                 
 69 .LL46:                                            
 70         cmp %o4,0                                 
 71         bne .LL85                                 
 72         mov %i0,%o2                               
 73         mov 1,%o0                                 
 74         mov 0,%o1                                 
 75         wr %g0, 0, %y                             
 76         udiv %o0, %o1, %o0                        
 77         mov %o0,%o4                               
 78         mov %i0,%o2                               
 79 .LL85:                                            
 80         mov 0,%g3                                 
 81         mov     32,%g1                            
 82         subcc   %g3,%o4,%g0                       
 83 1:      bcs     5f                                
 84          addxcc %o2,%o2,%o2     ! shift n1n0 a    
 85         sub     %g3,%o4,%g3     ! this kills m    
 86         addx    %g3,%g3,%g3     ! so this cann    
 87         subcc   %g1,1,%g1                         
 88 2:      bne     1b                                
 89          subcc  %g3,%o4,%g0                       
 90         bcs     3f                                
 91          addxcc %o2,%o2,%o2     ! shift n1n0 a    
 92         b       3f                                
 93          sub    %g3,%o4,%g3     ! this kills m    
 94 4:      sub     %g3,%o4,%g3                       
 95 5:      addxcc  %g3,%g3,%g3                       
 96         bcc     2b                                
 97          subcc  %g1,1,%g1                         
 98 ! Got carry from n.  Subtract next step to can    
 99         bne     4b                                
100          addcc  %o2,%o2,%o2     ! shift n1n0 a    
101         sub     %g3,%o4,%g3                       
102 3:      xnor    %o2,0,%o2                         
103         mov %g3,%i0                               
104         mov %i3,%o1                               
105         mov     32,%g1                            
106         subcc   %i0,%o4,%g0                       
107 1:      bcs     5f                                
108          addxcc %o1,%o1,%o1     ! shift n1n0 a    
109         sub     %i0,%o4,%i0     ! this kills m    
110         addx    %i0,%i0,%i0     ! so this cann    
111         subcc   %g1,1,%g1                         
112 2:      bne     1b                                
113          subcc  %i0,%o4,%g0                       
114         bcs     3f                                
115          addxcc %o1,%o1,%o1     ! shift n1n0 a    
116         b       3f                                
117          sub    %i0,%o4,%i0     ! this kills m    
118 4:      sub     %i0,%o4,%i0                       
119 5:      addxcc  %i0,%i0,%i0                       
120         bcc     2b                                
121          subcc  %g1,1,%g1                         
122 ! Got carry from n.  Subtract next step to can    
123         bne     4b                                
124          addcc  %o1,%o1,%o1     ! shift n1n0 a    
125         sub     %i0,%o4,%i0                       
126 3:      xnor    %o1,0,%o1                         
127         b .LL86                                   
128         mov %o1,%l1                               
129 .LL45:                                            
130         cmp %i2,%i0                               
131         bleu .LL51                                
132         sethi %hi(65535),%o0                      
133         b .LL78                                   
134         mov 0,%o1                                 
135 .LL51:                                            
136         or %o0,%lo(65535),%o0                     
137         cmp %i2,%o0                               
138         bgu .LL58                                 
139         mov %i2,%o1                               
140         cmp %i2,256                               
141         addx %g0,-1,%o0                           
142         b .LL64                                   
143         and %o0,8,%o2                             
144 .LL58:                                            
145         sethi %hi(16777215),%o0                   
146         or %o0,%lo(16777215),%o0                  
147         cmp %i2,%o0                               
148         bgu .LL64                                 
149         mov 24,%o2                                
150         mov 16,%o2                                
151 .LL64:                                            
152         srl %o1,%o2,%o0                           
153         sethi %hi(__clz_tab),%o1                  
154         or %o1,%lo(__clz_tab),%o1                 
155         ldub [%o0+%o1],%o0                        
156         add %o0,%o2,%o0                           
157         mov 32,%o1                                
158         subcc %o1,%o0,%o3                         
159         bne,a .LL72                               
160         sub %o1,%o3,%o1                           
161         cmp %i0,%i2                               
162         bgu .LL74                                 
163         cmp %i3,%o4                               
164         blu .LL78                                 
165         mov 0,%o1                                 
166 .LL74:                                            
167         b .LL78                                   
168         mov 1,%o1                                 
169 .LL72:                                            
170         sll %i2,%o3,%o2                           
171         srl %o4,%o1,%o0                           
172         or %o2,%o0,%i2                            
173         sll %o4,%o3,%o4                           
174         srl %i0,%o1,%o2                           
175         sll %i0,%o3,%o0                           
176         srl %i3,%o1,%o1                           
177         or %o0,%o1,%i0                            
178         sll %i3,%o3,%i3                           
179         mov %i0,%o1                               
180         mov     32,%g1                            
181         subcc   %o2,%i2,%g0                       
182 1:      bcs     5f                                
183          addxcc %o1,%o1,%o1     ! shift n1n0 a    
184         sub     %o2,%i2,%o2     ! this kills m    
185         addx    %o2,%o2,%o2     ! so this cann    
186         subcc   %g1,1,%g1                         
187 2:      bne     1b                                
188          subcc  %o2,%i2,%g0                       
189         bcs     3f                                
190          addxcc %o1,%o1,%o1     ! shift n1n0 a    
191         b       3f                                
192          sub    %o2,%i2,%o2     ! this kills m    
193 4:      sub     %o2,%i2,%o2                       
194 5:      addxcc  %o2,%o2,%o2                       
195         bcc     2b                                
196          subcc  %g1,1,%g1                         
197 ! Got carry from n.  Subtract next step to can    
198         bne     4b                                
199          addcc  %o1,%o1,%o1     ! shift n1n0 a    
200         sub     %o2,%i2,%o2                       
201 3:      xnor    %o1,0,%o1                         
202         mov %o2,%i0                               
203         wr      %g0,%o1,%y      ! SPARC has 0-    
204         sra     %o4,31,%g2      ! Do not move     
205         and     %o1,%g2,%g2     ! Do not move     
206         andcc   %g0,0,%g1       ! Do not move     
207         mulscc  %g1,%o4,%g1                       
208         mulscc  %g1,%o4,%g1                       
209         mulscc  %g1,%o4,%g1                       
210         mulscc  %g1,%o4,%g1                       
211         mulscc  %g1,%o4,%g1                       
212         mulscc  %g1,%o4,%g1                       
213         mulscc  %g1,%o4,%g1                       
214         mulscc  %g1,%o4,%g1                       
215         mulscc  %g1,%o4,%g1                       
216         mulscc  %g1,%o4,%g1                       
217         mulscc  %g1,%o4,%g1                       
218         mulscc  %g1,%o4,%g1                       
219         mulscc  %g1,%o4,%g1                       
220         mulscc  %g1,%o4,%g1                       
221         mulscc  %g1,%o4,%g1                       
222         mulscc  %g1,%o4,%g1                       
223         mulscc  %g1,%o4,%g1                       
224         mulscc  %g1,%o4,%g1                       
225         mulscc  %g1,%o4,%g1                       
226         mulscc  %g1,%o4,%g1                       
227         mulscc  %g1,%o4,%g1                       
228         mulscc  %g1,%o4,%g1                       
229         mulscc  %g1,%o4,%g1                       
230         mulscc  %g1,%o4,%g1                       
231         mulscc  %g1,%o4,%g1                       
232         mulscc  %g1,%o4,%g1                       
233         mulscc  %g1,%o4,%g1                       
234         mulscc  %g1,%o4,%g1                       
235         mulscc  %g1,%o4,%g1                       
236         mulscc  %g1,%o4,%g1                       
237         mulscc  %g1,%o4,%g1                       
238         mulscc  %g1,%o4,%g1                       
239         mulscc  %g1,0,%g1                         
240         add     %g1,%g2,%o0                       
241         rd      %y,%o2                            
242         cmp %o0,%i0                               
243         bgu,a .LL78                               
244         add %o1,-1,%o1                            
245         bne,a .LL50                               
246         mov 0,%o2                                 
247         cmp %o2,%i3                               
248         bleu .LL50                                
249         mov 0,%o2                                 
250         add %o1,-1,%o1                            
251 .LL78:                                            
252         mov 0,%o2                                 
253 .LL50:                                            
254         mov %o1,%l1                               
255 .LL86:                                            
256         mov %o2,%l0                               
257         mov %l0,%i0                               
258         mov %l1,%i1                               
259         cmp %l4,0                                 
260         be .LL81                                  
261         sub %g0,%i1,%o0                           
262         mov %o0,%l3                               
263         subcc %g0,%o0,%g0                         
264         sub %g0,%i0,%o0                           
265         subx %o0,0,%l2                            
266         mov %l2,%i0                               
267         mov %l3,%i1                               
268 .LL81:                                            
269         ret                                       
270         restore                                   
271 EXPORT_SYMBOL(__divdi3)                           
                                                      

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