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

TOMOYO Linux Cross Reference
Linux/arch/m68k/fpsp040/sgetem.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/fpsp040/sgetem.S (Architecture m68k) and /arch/i386/fpsp040/sgetem.S (Architecture i386)


  1 |                                                 
  2 |       sgetem.sa 3.1 12/10/90                    
  3 |                                                 
  4 |       The entry point sGETEXP returns the ex    
  5 |       of the input argument.  The exponent b    
  6 |       and the exponent value is returned as     
  7 |       precision number in fp0.  sGETEXPD han    
  8 |       numbers.                                  
  9 |                                                 
 10 |       The entry point sGETMAN extracts the m    
 11 |       input argument.  The mantissa is conve    
 12 |       extended precision number and returned    
 13 |       range of the result is [1.0 - 2.0).       
 14 |                                                 
 15 |                                                 
 16 |       Input:  Double-extended number X in th    
 17 |               the floating-point save stack.    
 18 |                                                 
 19 |       Output: The functions return exp(X) or    
 20 |                                                 
 21 |       Modified: fp0.                            
 22 |                                                 
 23 |                                                 
 24 |               Copyright (C) Motorola, Inc. 1    
 25 |                       All Rights Reserved       
 26 |                                                 
 27 |       For details on the license for this fi    
 28 |       file, README, in this same directory.     
 29                                                   
 30 |SGETEM idnt    2,1 | Motorola 040 Floating Po    
 31                                                   
 32         |section 8                                
 33                                                   
 34 #include "fpsp.h"                                 
 35                                                   
 36         |xref   nrm_set                           
 37                                                   
 38 |                                                 
 39 | This entry point is used by the unimplemente    
 40 | handler.  It points a0 to the input operand.    
 41 |                                                 
 42 |                                                 
 43 |                                                 
 44 |       SGETEXP                                   
 45 |                                                 
 46                                                   
 47         .global sgetexp                           
 48 sgetexp:                                          
 49         movew   LOCAL_EX(%a0),%d0       |get t    
 50         bclrl   #15,%d0         |clear the sig    
 51         subw    #0x3fff,%d0     |subtract off     
 52         fmovew  %d0,%fp0                |move     
 53         rts                                       
 54                                                   
 55         .global sgetexpd                          
 56 sgetexpd:                                         
 57         bclrb   #sign_bit,LOCAL_EX(%a0)           
 58         bsr     nrm_set         |normalize (ex    
 59         movew   LOCAL_EX(%a0),%d0       |load     
 60         subw    #0x3fff,%d0     |subtract off     
 61         fmovew  %d0,%fp0                |move     
 62         rts                                       
 63 |                                                 
 64 |                                                 
 65 | This entry point is used by the unimplemente    
 66 | handler.  It points a0 to the input operand.    
 67 |                                                 
 68 |                                                 
 69 |                                                 
 70 |       SGETMAN                                   
 71 |                                                 
 72 |                                                 
 73 | For normalized numbers, leave the mantissa a    
 74 | with an exponent of +/- $3fff.                  
 75 |                                                 
 76         .global sgetman                           
 77 sgetman:                                          
 78         movel   USER_FPCR(%a6),%d0                
 79         andil   #0xffffff00,%d0 |clear roundin    
 80         fmovel  %d0,%fpcr               |this     
 81         movew   LOCAL_EX(%a0),%d0       |get t    
 82         orw     #0x7fff,%d0     |clear old exp    
 83         bclrl   #14,%d0         |make it the n    
 84         movew   %d0,LOCAL_EX(%a0)       |move     
 85         fmovex  (%a0),%fp0      |put new value    
 86         rts                                       
 87                                                   
 88 |                                                 
 89 | For denormalized numbers, shift the mantissa    
 90 | then load the exponent with +/1 $3fff.          
 91 |                                                 
 92         .global sgetmand                          
 93 sgetmand:                                         
 94         movel   LOCAL_HI(%a0),%d0       |load     
 95         movel   LOCAL_LO(%a0),%d1       |load     
 96         bsr     shft            |shift mantiss    
 97         movel   %d0,LOCAL_HI(%a0)       |put m    
 98         movel   %d1,LOCAL_LO(%a0)       |put l    
 99         bras    sgetman                           
100                                                   
101 |                                                 
102 |       SHFT                                      
103 |                                                 
104 |       Shifts the mantissa bits until msbit i    
105 |       input:                                    
106 |               ms mantissa part in d0            
107 |               ls mantissa part in d1            
108 |       output:                                   
109 |               shifted bits in d0 and d1         
110 shft:                                             
111         tstl    %d0             |if any bits s    
112         bnes    upper           |then branch      
113 |                               ;else no bits     
114         tstl    %d1             |test if any b    
115         bnes    cont            |if set then c    
116         bras    shft_end        |else return      
117 cont:                                             
118         movel   %d3,-(%a7)      |save d3          
119         exg     %d0,%d1         |shift ls mant    
120         bfffo   %d0{#0:#32},%d3 |find first 1     
121         lsll    %d3,%d0         |shift first 1    
122         movel   (%a7)+,%d3      |restore d3       
123         bras    shft_end                          
124 upper:                                            
125                                                   
126         moveml  %d3/%d5/%d6,-(%a7)      |save     
127         bfffo   %d0{#0:#32},%d3 |find first 1     
128         lsll    %d3,%d0         |shift ms mant    
129         movel   %d1,%d6         |save ls mant     
130         lsll    %d3,%d1         |shift ls mant    
131         movel   #32,%d5                           
132         subl    %d3,%d5         |sub 32 from s    
133         lsrl    %d5,%d6         |shift off all    
134 |                               ;be shifted in    
135         orl     %d6,%d0         |shift the ls     
136         moveml  (%a7)+,%d3/%d5/%d6      |resto    
137 shft_end:                                         
138         rts                                       
139                                                   
140         |end                                      
                                                      

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