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

TOMOYO Linux Cross Reference
Linux/arch/arm/crypto/sha1-ce-core.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/arm/crypto/sha1-ce-core.S (Architecture i386) and /arch/sparc64/crypto/sha1-ce-core.S (Architecture sparc64)


  1 /* SPDX-License-Identifier: GPL-2.0-only */       
  2 /*                                                
  3  * sha1-ce-core.S - SHA-1 secure hash using AR    
  4  *                                                
  5  * Copyright (C) 2015 Linaro Ltd.                 
  6  * Author: Ard Biesheuvel <ard.biesheuvel@linar    
  7  */                                               
  8                                                   
  9 #include <linux/linkage.h>                        
 10 #include <asm/assembler.h>                        
 11                                                   
 12         .text                                     
 13         .arch           armv8-a                   
 14         .fpu            crypto-neon-fp-armv8      
 15                                                   
 16         k0              .req    q0                
 17         k1              .req    q1                
 18         k2              .req    q2                
 19         k3              .req    q3                
 20                                                   
 21         ta0             .req    q4                
 22         ta1             .req    q5                
 23         tb0             .req    q5                
 24         tb1             .req    q4                
 25                                                   
 26         dga             .req    q6                
 27         dgb             .req    q7                
 28         dgbs            .req    s28               
 29                                                   
 30         dg0             .req    q12               
 31         dg1a0           .req    q13               
 32         dg1a1           .req    q14               
 33         dg1b0           .req    q14               
 34         dg1b1           .req    q13               
 35                                                   
 36         .macro          add_only, op, ev, rc,     
 37         .ifnb           \s0                       
 38         vadd.u32        tb\ev, q\s0, \rc          
 39         .endif                                    
 40         sha1h.32        dg1b\ev, dg0              
 41         .ifb            \dg1                      
 42         sha1\op\().32   dg0, dg1a\ev, ta\ev       
 43         .else                                     
 44         sha1\op\().32   dg0, \dg1, ta\ev          
 45         .endif                                    
 46         .endm                                     
 47                                                   
 48         .macro          add_update, op, ev, rc    
 49         sha1su0.32      q\s0, q\s1, q\s2          
 50         add_only        \op, \ev, \rc, \s1, \d    
 51         sha1su1.32      q\s0, q\s3                
 52         .endm                                     
 53                                                   
 54         .align          6                         
 55 .Lsha1_rcon:                                      
 56         .word           0x5a827999, 0x5a827999    
 57         .word           0x6ed9eba1, 0x6ed9eba1    
 58         .word           0x8f1bbcdc, 0x8f1bbcdc    
 59         .word           0xca62c1d6, 0xca62c1d6    
 60                                                   
 61         /*                                        
 62          * void sha1_ce_transform(struct sha1_    
 63          *                        int blocks);    
 64          */                                       
 65 ENTRY(sha1_ce_transform)                          
 66         /* load round constants */                
 67         adr             ip, .Lsha1_rcon           
 68         vld1.32         {k0-k1}, [ip, :128]!      
 69         vld1.32         {k2-k3}, [ip, :128]       
 70                                                   
 71         /* load state */                          
 72         vld1.32         {dga}, [r0]               
 73         vldr            dgbs, [r0, #16]           
 74                                                   
 75         /* load input */                          
 76 0:      vld1.32         {q8-q9}, [r1]!            
 77         vld1.32         {q10-q11}, [r1]!          
 78         subs            r2, r2, #1                
 79                                                   
 80 #ifndef CONFIG_CPU_BIG_ENDIAN                     
 81         vrev32.8        q8, q8                    
 82         vrev32.8        q9, q9                    
 83         vrev32.8        q10, q10                  
 84         vrev32.8        q11, q11                  
 85 #endif                                            
 86                                                   
 87         vadd.u32        ta0, q8, k0               
 88         vmov            dg0, dga                  
 89                                                   
 90         add_update      c, 0, k0,  8,  9, 10,     
 91         add_update      c, 1, k0,  9, 10, 11,     
 92         add_update      c, 0, k0, 10, 11,  8,     
 93         add_update      c, 1, k0, 11,  8,  9,     
 94         add_update      c, 0, k1,  8,  9, 10,     
 95                                                   
 96         add_update      p, 1, k1,  9, 10, 11,     
 97         add_update      p, 0, k1, 10, 11,  8,     
 98         add_update      p, 1, k1, 11,  8,  9,     
 99         add_update      p, 0, k1,  8,  9, 10,     
100         add_update      p, 1, k2,  9, 10, 11,     
101                                                   
102         add_update      m, 0, k2, 10, 11,  8,     
103         add_update      m, 1, k2, 11,  8,  9,     
104         add_update      m, 0, k2,  8,  9, 10,     
105         add_update      m, 1, k2,  9, 10, 11,     
106         add_update      m, 0, k3, 10, 11,  8,     
107                                                   
108         add_update      p, 1, k3, 11,  8,  9,     
109         add_only        p, 0, k3,  9              
110         add_only        p, 1, k3, 10              
111         add_only        p, 0, k3, 11              
112         add_only        p, 1                      
113                                                   
114         /* update state */                        
115         vadd.u32        dga, dga, dg0             
116         vadd.u32        dgb, dgb, dg1a0           
117         bne             0b                        
118                                                   
119         /* store new state */                     
120         vst1.32         {dga}, [r0]               
121         vstr            dgbs, [r0, #16]           
122         bx              lr                        
123 ENDPROC(sha1_ce_transform)                        
                                                      

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