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

TOMOYO Linux Cross Reference
Linux/arch/powerpc/crypto/sha1-powerpc-asm.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/powerpc/crypto/sha1-powerpc-asm.S (Version linux-6.12-rc7) and /arch/ppc/crypto/sha1-powerpc-asm.S (Version linux-4.19.323)


  1 /* SPDX-License-Identifier: GPL-2.0 */            
  2 /*                                                
  3  * SHA-1 implementation for PowerPC.              
  4  *                                                
  5  * Copyright (C) 2005 Paul Mackerras <paulus@sa    
  6  */                                               
  7                                                   
  8 #include <asm/ppc_asm.h>                          
  9 #include <asm/asm-offsets.h>                      
 10 #include <asm/asm-compat.h>                       
 11                                                   
 12 #ifdef __BIG_ENDIAN__                             
 13 #define LWZ(rt, d, ra)  \                         
 14         lwz     rt,d(ra)                          
 15 #else                                             
 16 #define LWZ(rt, d, ra)  \                         
 17         li      rt,d;   \                         
 18         lwbrx   rt,rt,ra                          
 19 #endif                                            
 20                                                   
 21 /*                                                
 22  * We roll the registers for T, A, B, C, D, E     
 23  * iteration; T on iteration t is A on iterati    
 24  * We use registers 7 - 12 for this.              
 25  */                                               
 26 #define RT(t)   ((((t)+5)%6)+7)                   
 27 #define RA(t)   ((((t)+4)%6)+7)                   
 28 #define RB(t)   ((((t)+3)%6)+7)                   
 29 #define RC(t)   ((((t)+2)%6)+7)                   
 30 #define RD(t)   ((((t)+1)%6)+7)                   
 31 #define RE(t)   ((((t)+0)%6)+7)                   
 32                                                   
 33 /* We use registers 16 - 31 for the W values *    
 34 #define W(t)    (((t)%16)+16)                     
 35                                                   
 36 #define LOADW(t)                                  
 37         LWZ(W(t),(t)*4,r4)                        
 38                                                   
 39 #define STEPD0_LOAD(t)                            
 40         andc    r0,RD(t),RB(t);         \         
 41         and     r6,RB(t),RC(t);         \         
 42         rotlwi  RT(t),RA(t),5;                    
 43         or      r6,r6,r0;                         
 44         add     r0,RE(t),r15;                     
 45         add     RT(t),RT(t),r6;         \         
 46         add     r14,r0,W(t);                      
 47         LWZ(W((t)+4),((t)+4)*4,r4);     \         
 48         rotlwi  RB(t),RB(t),30;                   
 49         add     RT(t),RT(t),r14                   
 50                                                   
 51 #define STEPD0_UPDATE(t)                          
 52         and     r6,RB(t),RC(t);         \         
 53         andc    r0,RD(t),RB(t);         \         
 54         rotlwi  RT(t),RA(t),5;                    
 55         rotlwi  RB(t),RB(t),30;                   
 56         or      r6,r6,r0;                         
 57         add     r0,RE(t),r15;                     
 58         xor     r5,W((t)+4-3),W((t)+4-8);         
 59         add     RT(t),RT(t),r6;         \         
 60         xor     W((t)+4),W((t)+4-16),W((t)+4-1    
 61         add     r0,r0,W(t);                       
 62         xor     W((t)+4),W((t)+4),r5;             
 63         add     RT(t),RT(t),r0;         \         
 64         rotlwi  W((t)+4),W((t)+4),1               
 65                                                   
 66 #define STEPD1(t)                                 
 67         xor     r6,RB(t),RC(t);         \         
 68         rotlwi  RT(t),RA(t),5;                    
 69         rotlwi  RB(t),RB(t),30;                   
 70         xor     r6,r6,RD(t);                      
 71         add     r0,RE(t),r15;                     
 72         add     RT(t),RT(t),r6;         \         
 73         add     r0,r0,W(t);                       
 74         add     RT(t),RT(t),r0                    
 75                                                   
 76 #define STEPD1_UPDATE(t)                          
 77         xor     r6,RB(t),RC(t);         \         
 78         rotlwi  RT(t),RA(t),5;                    
 79         rotlwi  RB(t),RB(t),30;                   
 80         xor     r6,r6,RD(t);                      
 81         add     r0,RE(t),r15;                     
 82         xor     r5,W((t)+4-3),W((t)+4-8);         
 83         add     RT(t),RT(t),r6;         \         
 84         xor     W((t)+4),W((t)+4-16),W((t)+4-1    
 85         add     r0,r0,W(t);                       
 86         xor     W((t)+4),W((t)+4),r5;             
 87         add     RT(t),RT(t),r0;         \         
 88         rotlwi  W((t)+4),W((t)+4),1               
 89                                                   
 90 #define STEPD2_UPDATE(t)                          
 91         and     r6,RB(t),RC(t);         \         
 92         and     r0,RB(t),RD(t);         \         
 93         rotlwi  RT(t),RA(t),5;                    
 94         or      r6,r6,r0;                         
 95         rotlwi  RB(t),RB(t),30;                   
 96         and     r0,RC(t),RD(t);         \         
 97         xor     r5,W((t)+4-3),W((t)+4-8);         
 98         or      r6,r6,r0;                         
 99         xor     W((t)+4),W((t)+4-16),W((t)+4-1    
100         add     r0,RE(t),r15;                     
101         add     RT(t),RT(t),r6;         \         
102         add     r0,r0,W(t);                       
103         xor     W((t)+4),W((t)+4),r5;             
104         add     RT(t),RT(t),r0;         \         
105         rotlwi  W((t)+4),W((t)+4),1               
106                                                   
107 #define STEP0LD4(t)                               
108         STEPD0_LOAD(t);                           
109         STEPD0_LOAD((t)+1);                       
110         STEPD0_LOAD((t)+2);                       
111         STEPD0_LOAD((t)+3)                        
112                                                   
113 #define STEPUP4(t, fn)                            
114         STEP##fn##_UPDATE(t);                     
115         STEP##fn##_UPDATE((t)+1);                 
116         STEP##fn##_UPDATE((t)+2);                 
117         STEP##fn##_UPDATE((t)+3)                  
118                                                   
119 #define STEPUP20(t, fn)                           
120         STEPUP4(t, fn);                           
121         STEPUP4((t)+4, fn);                       
122         STEPUP4((t)+8, fn);                       
123         STEPUP4((t)+12, fn);                      
124         STEPUP4((t)+16, fn)                       
125                                                   
126 _GLOBAL(powerpc_sha_transform)                    
127         PPC_STLU r1,-INT_FRAME_SIZE(r1)           
128         SAVE_GPRS(14, 31, r1)                     
129                                                   
130         /* Load up A - E */                       
131         lwz     RA(0),0(r3)     /* A */           
132         lwz     RB(0),4(r3)     /* B */           
133         lwz     RC(0),8(r3)     /* C */           
134         lwz     RD(0),12(r3)    /* D */           
135         lwz     RE(0),16(r3)    /* E */           
136                                                   
137         LOADW(0)                                  
138         LOADW(1)                                  
139         LOADW(2)                                  
140         LOADW(3)                                  
141                                                   
142         lis     r15,0x5a82      /* K0-19 */       
143         ori     r15,r15,0x7999                    
144         STEP0LD4(0)                               
145         STEP0LD4(4)                               
146         STEP0LD4(8)                               
147         STEPUP4(12, D0)                           
148         STEPUP4(16, D0)                           
149                                                   
150         lis     r15,0x6ed9      /* K20-39 */      
151         ori     r15,r15,0xeba1                    
152         STEPUP20(20, D1)                          
153                                                   
154         lis     r15,0x8f1b      /* K40-59 */      
155         ori     r15,r15,0xbcdc                    
156         STEPUP20(40, D2)                          
157                                                   
158         lis     r15,0xca62      /* K60-79 */      
159         ori     r15,r15,0xc1d6                    
160         STEPUP4(60, D1)                           
161         STEPUP4(64, D1)                           
162         STEPUP4(68, D1)                           
163         STEPUP4(72, D1)                           
164         lwz     r20,16(r3)                        
165         STEPD1(76)                                
166         lwz     r19,12(r3)                        
167         STEPD1(77)                                
168         lwz     r18,8(r3)                         
169         STEPD1(78)                                
170         lwz     r17,4(r3)                         
171         STEPD1(79)                                
172                                                   
173         lwz     r16,0(r3)                         
174         add     r20,RE(80),r20                    
175         add     RD(0),RD(80),r19                  
176         add     RC(0),RC(80),r18                  
177         add     RB(0),RB(80),r17                  
178         add     RA(0),RA(80),r16                  
179         mr      RE(0),r20                         
180         stw     RA(0),0(r3)                       
181         stw     RB(0),4(r3)                       
182         stw     RC(0),8(r3)                       
183         stw     RD(0),12(r3)                      
184         stw     RE(0),16(r3)                      
185                                                   
186         REST_GPRS(14, 31, r1)                     
187         addi    r1,r1,INT_FRAME_SIZE              
188         blr                                       
                                                      

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