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

TOMOYO Linux Cross Reference
Linux/arch/xtensa/lib/modsi3.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/xtensa/lib/modsi3.S (Version linux-6.12-rc7) and /arch/sparc64/lib/modsi3.S (Version linux-2.6.0)


  1 /* SPDX-License-Identifier: GPL-2.0-or-later W    
  2 #include <linux/linkage.h>                        
  3 #include <asm/asmmacro.h>                         
  4 #include <asm/core.h>                             
  5                                                   
  6 ENTRY(__modsi3)                                   
  7                                                   
  8         abi_entry_default                         
  9 #if XCHAL_HAVE_DIV32                              
 10         rems    a2, a2, a3                        
 11 #else                                             
 12         mov     a7, a2          /* save origin    
 13         do_abs  a2, a2, a4      /* udividend =    
 14         do_abs  a3, a3, a4      /* udivisor =     
 15         bltui   a3, 2, .Lle_one /* check if ud    
 16         do_nsau a5, a2, a6, a8  /* udividend_s    
 17         do_nsau a4, a3, a6, a8  /* udivisor_sh    
 18         bgeu    a5, a4, .Lspecial                 
 19                                                   
 20         sub     a4, a4, a5      /* count = udi    
 21         ssl     a4                                
 22         sll     a3, a3          /* udivisor <<    
 23                                                   
 24         /* test-subtract-and-shift loop */        
 25 #if XCHAL_HAVE_LOOPS                              
 26         loopnez a4, .Lloopend                     
 27 #endif /* XCHAL_HAVE_LOOPS */                     
 28 .Lloop:                                           
 29         bltu    a2, a3, .Lzerobit                 
 30         sub     a2, a2, a3                        
 31 .Lzerobit:                                        
 32         srli    a3, a3, 1                         
 33 #if !XCHAL_HAVE_LOOPS                             
 34         addi    a4, a4, -1                        
 35         bnez    a4, .Lloop                        
 36 #endif /* !XCHAL_HAVE_LOOPS */                    
 37 .Lloopend:                                        
 38                                                   
 39 .Lspecial:                                        
 40         bltu    a2, a3, .Lreturn                  
 41         sub     a2, a2, a3      /* subtract ag    
 42 .Lreturn:                                         
 43         bgez    a7, .Lpositive                    
 44         neg     a2, a2          /* if (dividen    
 45 .Lpositive:                                       
 46         abi_ret_default                           
 47                                                   
 48 .Lle_one:                                         
 49         bnez    a3, .Lreturn0                     
 50                                                   
 51         /* Divide by zero: Use an illegal inst    
 52            The subsequent "DIV0" string can be    
 53            handler to identify the real cause     
 54         ill                                       
 55         .ascii  "DIV0"                            
 56                                                   
 57 .Lreturn0:                                        
 58         movi    a2, 0                             
 59 #endif /* XCHAL_HAVE_DIV32 */                     
 60         abi_ret_default                           
 61                                                   
 62 ENDPROC(__modsi3)                                 
 63 EXPORT_SYMBOL(__modsi3)                           
 64                                                   
 65 #if !XCHAL_HAVE_NSA                               
 66         .section .rodata                          
 67         .align  4                                 
 68         .global __nsau_data                       
 69         .type   __nsau_data, @object              
 70 __nsau_data:                                      
 71         .byte   8, 7, 6, 6, 5, 5, 5, 5, 4, 4,     
 72         .byte   3, 3, 3, 3, 3, 3, 3, 3, 3, 3,     
 73         .byte   2, 2, 2, 2, 2, 2, 2, 2, 2, 2,     
 74         .byte   2, 2, 2, 2, 2, 2, 2, 2, 2, 2,     
 75         .byte   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,     
 76         .byte   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,     
 77         .byte   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,     
 78         .byte   1, 1, 1, 1, 1, 1, 1, 1, 1, 1,     
 79         .byte   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     
 80         .byte   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     
 81         .byte   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     
 82         .byte   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     
 83         .byte   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     
 84         .byte   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     
 85         .byte   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     
 86         .byte   0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     
 87         .size   __nsau_data, . - __nsau_data      
 88 #endif /* !XCHAL_HAVE_NSA */                      
                                                      

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