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

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

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ 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/NGpage.S (Version linux-6.11.5) and /arch/sparc/lib/NGpage.S (Version linux-2.6.0)


  1 /* SPDX-License-Identifier: GPL-2.0 */            
  2 /* NGpage.S: Niagara optimize clear and copy p    
  3  *                                                
  4  * Copyright (C) 2006 (davem@davemloft.net)       
  5  */                                               
  6                                                   
  7 #include <asm/asi.h>                              
  8 #include <asm/page.h>                             
  9                                                   
 10         .text                                     
 11         .align  32                                
 12                                                   
 13         /* This is heavily simplified from the    
 14          * because Niagara does not have any D    
 15          * and also we don't need to use the F    
 16          * an optimal page copy/clear.            
 17          */                                       
 18                                                   
 19 NGcopy_user_page:       /* %o0=dest, %o1=src,     
 20         save            %sp, -192, %sp            
 21         rd              %asi, %g3                 
 22         wr              %g0, ASI_BLK_INIT_QUAD    
 23         set             PAGE_SIZE, %g7            
 24         prefetch        [%i1 + 0x00], #one_rea    
 25         prefetch        [%i1 + 0x40], #one_rea    
 26                                                   
 27 1:      prefetch        [%i1 + 0x80], #one_rea    
 28         prefetch        [%i1 + 0xc0], #one_rea    
 29         ldda            [%i1 + 0x00] %asi, %o2    
 30         ldda            [%i1 + 0x10] %asi, %o4    
 31         ldda            [%i1 + 0x20] %asi, %l2    
 32         ldda            [%i1 + 0x30] %asi, %l4    
 33         stxa            %o2, [%i0 + 0x00] %asi    
 34         stxa            %o3, [%i0 + 0x08] %asi    
 35         stxa            %o4, [%i0 + 0x10] %asi    
 36         stxa            %o5, [%i0 + 0x18] %asi    
 37         stxa            %l2, [%i0 + 0x20] %asi    
 38         stxa            %l3, [%i0 + 0x28] %asi    
 39         stxa            %l4, [%i0 + 0x30] %asi    
 40         stxa            %l5, [%i0 + 0x38] %asi    
 41         ldda            [%i1 + 0x40] %asi, %o2    
 42         ldda            [%i1 + 0x50] %asi, %o4    
 43         ldda            [%i1 + 0x60] %asi, %l2    
 44         ldda            [%i1 + 0x70] %asi, %l4    
 45         stxa            %o2, [%i0 + 0x40] %asi    
 46         stxa            %o3, [%i0 + 0x48] %asi    
 47         stxa            %o4, [%i0 + 0x50] %asi    
 48         stxa            %o5, [%i0 + 0x58] %asi    
 49         stxa            %l2, [%i0 + 0x60] %asi    
 50         stxa            %l3, [%i0 + 0x68] %asi    
 51         stxa            %l4, [%i0 + 0x70] %asi    
 52         stxa            %l5, [%i0 + 0x78] %asi    
 53         add             %i1, 128, %i1             
 54         subcc           %g7, 128, %g7             
 55         bne,pt          %xcc, 1b                  
 56          add            %i0, 128, %i0             
 57         wr              %g3, 0x0, %asi            
 58         membar          #Sync                     
 59         ret                                       
 60          restore                                  
 61                                                   
 62         .align          32                        
 63         .globl          NGclear_page              
 64         .globl          NGclear_user_page         
 65 NGclear_page:           /* %o0=dest */            
 66 NGclear_user_page:      /* %o0=dest, %o1=vaddr    
 67         rd              %asi, %g3                 
 68         wr              %g0, ASI_BLK_INIT_QUAD    
 69         set             PAGE_SIZE, %g7            
 70                                                   
 71 1:      stxa            %g0, [%o0 + 0x00] %asi    
 72         stxa            %g0, [%o0 + 0x08] %asi    
 73         stxa            %g0, [%o0 + 0x10] %asi    
 74         stxa            %g0, [%o0 + 0x18] %asi    
 75         stxa            %g0, [%o0 + 0x20] %asi    
 76         stxa            %g0, [%o0 + 0x28] %asi    
 77         stxa            %g0, [%o0 + 0x30] %asi    
 78         stxa            %g0, [%o0 + 0x38] %asi    
 79         stxa            %g0, [%o0 + 0x40] %asi    
 80         stxa            %g0, [%o0 + 0x48] %asi    
 81         stxa            %g0, [%o0 + 0x50] %asi    
 82         stxa            %g0, [%o0 + 0x58] %asi    
 83         stxa            %g0, [%o0 + 0x60] %asi    
 84         stxa            %g0, [%o0 + 0x68] %asi    
 85         stxa            %g0, [%o0 + 0x70] %asi    
 86         stxa            %g0, [%o0 + 0x78] %asi    
 87         stxa            %g0, [%o0 + 0x80] %asi    
 88         stxa            %g0, [%o0 + 0x88] %asi    
 89         stxa            %g0, [%o0 + 0x90] %asi    
 90         stxa            %g0, [%o0 + 0x98] %asi    
 91         stxa            %g0, [%o0 + 0xa0] %asi    
 92         stxa            %g0, [%o0 + 0xa8] %asi    
 93         stxa            %g0, [%o0 + 0xb0] %asi    
 94         stxa            %g0, [%o0 + 0xb8] %asi    
 95         stxa            %g0, [%o0 + 0xc0] %asi    
 96         stxa            %g0, [%o0 + 0xc8] %asi    
 97         stxa            %g0, [%o0 + 0xd0] %asi    
 98         stxa            %g0, [%o0 + 0xd8] %asi    
 99         stxa            %g0, [%o0 + 0xe0] %asi    
100         stxa            %g0, [%o0 + 0xe8] %asi    
101         stxa            %g0, [%o0 + 0xf0] %asi    
102         stxa            %g0, [%o0 + 0xf8] %asi    
103         subcc           %g7, 256, %g7             
104         bne,pt          %xcc, 1b                  
105          add            %o0, 256, %o0             
106         wr              %g3, 0x0, %asi            
107         membar          #Sync                     
108         retl                                      
109          nop                                      
110                                                   
111 #define BRANCH_ALWAYS   0x10680000                
112 #define NOP             0x01000000                
113 #define NG_DO_PATCH(OLD, NEW)   \                 
114         sethi   %hi(NEW), %g1; \                  
115         or      %g1, %lo(NEW), %g1; \             
116         sethi   %hi(OLD), %g2; \                  
117         or      %g2, %lo(OLD), %g2; \             
118         sub     %g1, %g2, %g1; \                  
119         sethi   %hi(BRANCH_ALWAYS), %g3; \        
120         sll     %g1, 11, %g1; \                   
121         srl     %g1, 11 + 2, %g1; \               
122         or      %g3, %lo(BRANCH_ALWAYS), %g3;     
123         or      %g3, %g1, %g3; \                  
124         stw     %g3, [%g2]; \                     
125         sethi   %hi(NOP), %g3; \                  
126         or      %g3, %lo(NOP), %g3; \             
127         stw     %g3, [%g2 + 0x4]; \               
128         flush   %g2;                              
129                                                   
130         .globl  niagara_patch_pageops             
131         .type   niagara_patch_pageops,#functio    
132 niagara_patch_pageops:                            
133         NG_DO_PATCH(copy_user_page, NGcopy_use    
134         NG_DO_PATCH(_clear_page, NGclear_page)    
135         NG_DO_PATCH(clear_user_page, NGclear_u    
136         retl                                      
137          nop                                      
138         .size   niagara_patch_pageops,.-niagar    
                                                      

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