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

TOMOYO Linux Cross Reference
Linux/arch/m68k/math-emu/fp_cond.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/m68k/math-emu/fp_cond.S (Architecture m68k) and /arch/ppc/math-emu/fp_cond.S (Architecture ppc)


  1 /*                                                
  2  * fp_cond.S                                      
  3  *                                                
  4  * Copyright Roman Zippel, 1997.  All rights r    
  5  *                                                
  6  * Redistribution and use in source and binary    
  7  * modification, are permitted provided that t    
  8  * are met:                                       
  9  * 1. Redistributions of source code must reta    
 10  *    notice, and the entire permission notice    
 11  *    including the disclaimer of warranties.     
 12  * 2. Redistributions in binary form must repr    
 13  *    notice, this list of conditions and the     
 14  *    documentation and/or other materials pro    
 15  * 3. The name of the author may not be used t    
 16  *    products derived from this software with    
 17  *    written permission.                         
 18  *                                                
 19  * ALTERNATIVELY, this product may be distribu    
 20  * the GNU General Public License, in which ca    
 21  * required INSTEAD OF the above restrictions.    
 22  * necessary due to a potential bad interactio    
 23  * the restrictions contained in a BSD-style c    
 24  *                                                
 25  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY    
 26  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO,     
 27  * OF MERCHANTABILITY AND FITNESS FOR A PARTIC    
 28  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR B    
 29  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, O    
 30  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT    
 31  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR    
 32  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILI    
 33  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIG    
 34  * ARISING IN ANY WAY OUT OF THE USE OF THIS S    
 35  * OF THE POSSIBILITY OF SUCH DAMAGE.             
 36  */                                               
 37                                                   
 38 #include "fp_emu.h"                               
 39 #include "fp_decode.h"                            
 40                                                   
 41         .globl  fp_fscc, fp_fbccw, fp_fbccl       
 42                                                   
 43 #ifdef FPU_EMU_DEBUG                              
 44 fp_fnop:                                          
 45         printf  PDECODE,"fnop\n"                  
 46         jra     fp_end                            
 47 #else                                             
 48 #define fp_fnop fp_end                            
 49 #endif                                            
 50                                                   
 51 fp_fbccw:                                         
 52         tst.w   %d2                               
 53         jeq     fp_fnop                           
 54         printf  PDECODE,"fbccw "                  
 55         fp_get_pc %a0                             
 56         lea     (-2,%a0,%d2.w),%a0                
 57         jra     1f                                
 58                                                   
 59 fp_fbccl:                                         
 60         printf  PDECODE,"fbccl "                  
 61         fp_get_pc %a0                             
 62         move.l  %d2,%d0                           
 63         swap    %d0                               
 64         fp_get_instr_word %d0,fp_err_ua1          
 65         lea     (-2,%a0,%d0.l),%a0                
 66 1:      printf  PDECODE,"%x",1,%a0                
 67         move.l  %d2,%d0                           
 68         swap    %d0                               
 69         jsr     fp_compute_cond                   
 70         tst.l   %d0                               
 71         jeq     1f                                
 72         fp_put_pc %a0,1                           
 73 1:      printf  PDECODE,"\n"                      
 74         jra     fp_end                            
 75                                                   
 76 fp_fdbcc:                                         
 77         printf  PDECODE,"fdbcc "                  
 78         fp_get_pc %a1                             
 79         fp_get_instr_word %d0,fp_err_ua1          
 80         add.w   %d0,%a1                           
 81         fp_decode_addr_reg                        
 82         printf  PDECODE,"d%d,%x\n",2,%d0,%a1      
 83         swap    %d1                               
 84         tst.w   %d1                               
 85         jne     2f                                
 86         move.l  %d0,%d1                           
 87         jsr     fp_get_data_reg                   
 88         subq.w  #1,%d0                            
 89         jcs     1f                                
 90         fp_put_pc %a1,1                           
 91 1:      jsr     fp_put_data_reg                   
 92 2:      jra     fp_end                            
 93                                                   
 94 | set flags for decode macros for fs<cc>          
 95 do_fscc=1                                         
 96 do_no_pc_mode=1                                   
 97                                                   
 98 fp_fscc:                                          
 99         printf  PDECODE,"fscc "                   
100         move.l  %d2,%d0                           
101         jsr     fp_compute_cond                   
102         move.w  %d0,%d1                           
103         swap    %d1                               
104                                                   
105         | decode addressing mode                  
106         fp_decode_addr_mode                       
107                                                   
108         .long   fp_data, fp_fdbcc                 
109         .long   fp_indirect, fp_postinc           
110         .long   fp_predecr, fp_disp16             
111         .long   fp_extmode0, fp_extmode1          
112                                                   
113         | addressing mode: data register direc    
114 fp_data:                                          
115         fp_mode_data_direct                       
116         move.w  %d0,%d1                 | save    
117         jsr     fp_get_data_reg                   
118         swap    %d1                               
119         move.b  %d1,%d0                           
120         swap    %d1                               
121         jsr     fp_put_data_reg                   
122         printf  PDECODE,"\n"                      
123         jra     fp_end                            
124                                                   
125 fp_indirect:                                      
126         fp_mode_addr_indirect                     
127         jra     fp_do_scc                         
128                                                   
129 fp_postinc:                                       
130         fp_mode_addr_indirect_postinc             
131         jra     fp_do_scc                         
132                                                   
133 fp_predecr:                                       
134         fp_mode_addr_indirect_predec              
135         jra     fp_do_scc                         
136                                                   
137 fp_disp16:                                        
138         fp_mode_addr_indirect_disp16              
139         jra     fp_do_scc                         
140                                                   
141 fp_extmode0:                                      
142         fp_mode_addr_indirect_extmode0            
143         jra     fp_do_scc                         
144                                                   
145 fp_extmode1:                                      
146         bfextu  %d2{#13,#3},%d0                   
147         jmp     ([0f:w,%pc,%d0*4])                
148                                                   
149         .align  4                                 
150 0:                                                
151         .long   fp_absolute_short, fp_absolute    
152         .long   fp_ill, fp_ill          | NOTE    
153         .long   fp_ill, fp_ill                    
154         .long   fp_ill, fp_ill                    
155                                                   
156 fp_absolute_short:                                
157         fp_mode_abs_short                         
158         jra     fp_do_scc                         
159                                                   
160 fp_absolute_long:                                 
161         fp_mode_abs_long                          
162 |       jra     fp_do_scc                         
163                                                   
164 fp_do_scc:                                        
165         swap    %d1                               
166         putuser.b %d1,(%a0),fp_err_ua1,%a0        
167         printf  PDECODE,"\n"                      
168         jra     fp_end                            
169                                                   
170                                                   
171 #define tst_NAN btst #24,%d1                      
172 #define tst_Z   btst #26,%d1                      
173 #define tst_N   btst #27,%d1                      
174                                                   
175 fp_compute_cond:                                  
176         move.l  (FPD_FPSR,FPDATA),%d1             
177         btst    #4,%d0                            
178         jeq     1f                                
179         tst_NAN                                   
180         jeq     1f                                
181         bset    #15,%d1                           
182         bset    #7,%d1                            
183         move.l  %d1,(FPD_FPSR,FPDATA)             
184 1:      and.w   #0xf,%d0                          
185         jmp     ([0f:w,%pc,%d0.w*4])              
186                                                   
187         .align  4                                 
188 0:                                                
189         .long   fp_f  , fp_eq , fp_ogt, fp_oge    
190         .long   fp_olt, fp_ole, fp_ogl, fp_or     
191         .long   fp_un , fp_ueq, fp_ugt, fp_uge    
192         .long   fp_ult, fp_ule, fp_ne , fp_t      
193                                                   
194 fp_f:                                             
195         moveq   #0,%d0                            
196         rts                                       
197                                                   
198 fp_eq:                                            
199         moveq   #0,%d0                            
200         tst_Z                                     
201         jeq     1f                                
202         moveq   #-1,%d0                           
203 1:      rts                                       
204                                                   
205 fp_ogt:                                           
206         moveq   #0,%d0                            
207         tst_NAN                                   
208         jne     1f                                
209         tst_Z                                     
210         jne     1f                                
211         tst_N                                     
212         jne     1f                                
213         moveq   #-1,%d0                           
214 1:      rts                                       
215                                                   
216 fp_oge:                                           
217         moveq   #-1,%d0                           
218         tst_Z                                     
219         jne     2f                                
220         tst_NAN                                   
221         jne     1f                                
222         tst_N                                     
223         jeq     2f                                
224 1:      moveq   #0,%d0                            
225 2:      rts                                       
226                                                   
227 fp_olt:                                           
228         moveq   #0,%d0                            
229         tst_NAN                                   
230         jne     1f                                
231         tst_Z                                     
232         jne     1f                                
233         tst_N                                     
234         jeq     1f                                
235         moveq   #-1,%d0                           
236 1:      rts                                       
237                                                   
238 fp_ole:                                           
239         moveq   #-1,%d0                           
240         tst_Z                                     
241         jne     2f                                
242         tst_NAN                                   
243         jne     1f                                
244         tst_N                                     
245         jne     2f                                
246 1:      moveq   #0,%d0                            
247 2:      rts                                       
248                                                   
249 fp_ogl:                                           
250         moveq   #0,%d0                            
251         tst_NAN                                   
252         jne     1f                                
253         tst_Z                                     
254         jne     1f                                
255         moveq   #-1,%d0                           
256 1:      rts                                       
257                                                   
258 fp_or:                                            
259         moveq   #0,%d0                            
260         tst_NAN                                   
261         jne     1f                                
262         moveq   #-1,%d0                           
263 1:      rts                                       
264                                                   
265 fp_un:                                            
266         moveq   #0,%d0                            
267         tst_NAN                                   
268         jeq     1f                                
269         moveq   #-1,%d0                           
270         rts                                       
271                                                   
272 fp_ueq:                                           
273         moveq   #-1,%d0                           
274         tst_NAN                                   
275         jne     1f                                
276         tst_Z                                     
277         jne     1f                                
278         moveq   #0,%d0                            
279 1:      rts                                       
280                                                   
281 fp_ugt:                                           
282         moveq   #-1,%d0                           
283         tst_NAN                                   
284         jne     2f                                
285         tst_N                                     
286         jne     1f                                
287         tst_Z                                     
288         jeq     2f                                
289 1:      moveq   #0,%d0                            
290 2:      rts                                       
291                                                   
292 fp_uge:                                           
293         moveq   #-1,%d0                           
294         tst_NAN                                   
295         jne     1f                                
296         tst_Z                                     
297         jne     1f                                
298         tst_N                                     
299         jeq     1f                                
300         moveq   #0,%d0                            
301 1:      rts                                       
302                                                   
303 fp_ult:                                           
304         moveq   #-1,%d0                           
305         tst_NAN                                   
306         jne     2f                                
307         tst_Z                                     
308         jne     1f                                
309         tst_N                                     
310         jne     2f                                
311 1:      moveq   #0,%d0                            
312 2:      rts                                       
313                                                   
314 fp_ule:                                           
315         moveq   #-1,%d0                           
316         tst_NAN                                   
317         jne     1f                                
318         tst_Z                                     
319         jne     1f                                
320         tst_N                                     
321         jne     1f                                
322         moveq   #0,%d0                            
323 1:      rts                                       
324                                                   
325 fp_ne:                                            
326         moveq   #0,%d0                            
327         tst_Z                                     
328         jne     1f                                
329         moveq   #-1,%d0                           
330 1:      rts                                       
331                                                   
332 fp_t:                                             
333         moveq   #-1,%d0                           
334         rts                                       
                                                      

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