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

TOMOYO Linux Cross Reference
Linux/arch/csky/kernel/atomic.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/csky/kernel/atomic.S (Version linux-6.12-rc7) and /arch/sparc64/kernel/atomic.S (Version linux-4.11.12)


  1 /* SPDX-License-Identifier: GPL-2.0 */            
  2 // Copyright (C) 2018 Hangzhou C-SKY Microsyst    
  3                                                   
  4 #include <linux/linkage.h>                        
  5 #include <abi/entry.h>                            
  6                                                   
  7 .text                                             
  8                                                   
  9 /*                                                
 10  * int csky_cmpxchg(int oldval, int newval, in    
 11  *                                                
 12  * If *ptr != oldval && return 1,                 
 13  * else *ptr = newval return 0.                   
 14  */                                               
 15 ENTRY(csky_cmpxchg)                               
 16         USPTOKSP                                  
 17                                                   
 18         RD_MEH  a3                                
 19         WR_MEH  a3                                
 20                                                   
 21         mfcr    a3, epc                           
 22         addi    a3, TRAP0_SIZE                    
 23                                                   
 24         subi    sp, 16                            
 25         stw     a3, (sp, 0)                       
 26         mfcr    a3, epsr                          
 27         stw     a3, (sp, 4)                       
 28         mfcr    a3, usp                           
 29         stw     a3, (sp, 8)                       
 30                                                   
 31         psrset  ee                                
 32 #ifdef CONFIG_CPU_HAS_LDSTEX                      
 33 1:                                                
 34         ldex    a3, (a2)                          
 35         cmpne   a0, a3                            
 36         bt16    2f                                
 37         mov     a3, a1                            
 38         stex    a3, (a2)                          
 39         bez     a3, 1b                            
 40 2:                                                
 41         sync.is                                   
 42 #else                                             
 43 GLOBAL(csky_cmpxchg_ldw)                          
 44         ldw     a3, (a2)                          
 45         cmpne   a0, a3                            
 46         bt16    3f                                
 47 GLOBAL(csky_cmpxchg_stw)                          
 48         stw     a1, (a2)                          
 49 3:                                                
 50 #endif                                            
 51         mvc     a0                                
 52         ldw     a3, (sp, 0)                       
 53         mtcr    a3, epc                           
 54         ldw     a3, (sp, 4)                       
 55         mtcr    a3, epsr                          
 56         ldw     a3, (sp, 8)                       
 57         mtcr    a3, usp                           
 58         addi    sp, 16                            
 59         KSPTOUSP                                  
 60         rte                                       
 61 END(csky_cmpxchg)                                 
                                                      

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