]> rtime.felk.cvut.cz Git - can-eth-gw-linux.git/commitdiff
sparc64: Avoid code duplication in crypto assembler.
authorDavid S. Miller <davem@davemloft.net>
Fri, 31 Aug 2012 19:11:51 +0000 (12:11 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 31 Aug 2012 19:11:51 +0000 (12:11 -0700)
Put the opcode macros in a common header

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/crypto/aes_asm.S
arch/sparc/crypto/camellia_asm.S
arch/sparc/crypto/crc32c_asm.S
arch/sparc/crypto/des_asm.S
arch/sparc/crypto/md5_asm.S
arch/sparc/crypto/opcodes.h [new file with mode: 0644]
arch/sparc/crypto/sha1_asm.S
arch/sparc/crypto/sha256_asm.S
arch/sparc/crypto/sha512_asm.S

index 0fadad0c60ad37c31c6bf12bd6cca9023b850bc0..20860885f06813e0930adf827379c99cbd9a9f76 100644 (file)
@@ -1,61 +1,7 @@
 #include <linux/linkage.h>
 #include <asm/visasm.h>
 
-#define F3F(x,y,z)     (((x)<<30)|((y)<<19)|((z)<<5))
-
-#define FPD_ENCODE(x)  (((x) >> 5) | ((x) & ~(0x20)))
-
-#define RS1(x)         (FPD_ENCODE(x) << 14)
-#define RS2(x)         (FPD_ENCODE(x) <<  0)
-#define RS3(x)         (FPD_ENCODE(x) <<  9)
-#define RD(x)          (FPD_ENCODE(x) << 25)
-#define IMM5(x)                ((x)           <<  9)
-
-#define AES_EROUND01(a,b,c,d)  \
-       .word   (F3F(2, 0x19, 0)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-#define AES_EROUND23(a,b,c,d)  \
-       .word   (F3F(2, 0x19, 1)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-#define AES_DROUND01(a,b,c,d)  \
-       .word   (F3F(2, 0x19, 2)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-#define AES_DROUND23(a,b,c,d)  \
-       .word   (F3F(2, 0x19, 3)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-#define AES_EROUND01_L(a,b,c,d)        \
-       .word   (F3F(2, 0x19, 4)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-#define AES_EROUND23_L(a,b,c,d)        \
-       .word   (F3F(2, 0x19, 5)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-#define AES_DROUND01_L(a,b,c,d)        \
-       .word   (F3F(2, 0x19, 6)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-#define AES_DROUND23_L(a,b,c,d)        \
-       .word   (F3F(2, 0x19, 7)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-#define AES_KEXPAND1(a,b,c,d)  \
-       .word   (F3F(2, 0x19, 8)|RS1(a)|RS2(b)|IMM5(c)|RD(d));
-#define AES_KEXPAND0(a,b,c)    \
-       .word   (F3F(2, 0x36, 0x130)|RS1(a)|RS2(b)|RD(c));
-#define AES_KEXPAND2(a,b,c)    \
-       .word   (F3F(2, 0x36, 0x131)|RS1(a)|RS2(b)|RD(c));
-
-#define MOVXTOD_G3_F4          \
-       .word   0x89b02303;
-#define MOVXTOD_G7_F6          \
-       .word   0x8db02307;
-#define MOVXTOD_G3_F0          \
-       .word   0x81b02303;
-#define MOVXTOD_G7_F2          \
-       .word   0x85b02307;
-#define MOVXTOD_O0_F0          \
-       .word   0x81b02308;
-#define MOVXTOD_O5_F0          \
-       .word   0x81b0230d;
-#define MOVXTOD_O5_F2          \
-       .word   0x85b0230d;
-#define MOVXTOD_O5_F4          \
-       .word   0x89b0230d;
-#define MOVXTOD_O5_F6          \
-       .word   0x8db0230d;
-#define MOVXTOD_G3_F60         \
-       .word   0xbbb02303;
-#define MOVXTOD_G7_F62         \
-       .word   0xbfb02307;
+#include "opcodes.h"
 
 #define ENCRYPT_TWO_ROUNDS(KEY_BASE, I0, I1, T0, T1) \
        AES_EROUND01(KEY_BASE +  0, I0, I1, T0) \
index b0ddb5bcfe5f38c1fc3e0a5e8730bbd46403bda3..d3ef9c7bbd0200b2fda84622e808e4dbf7dbf034 100644 (file)
@@ -1,27 +1,7 @@
 #include <linux/linkage.h>
 #include <asm/visasm.h>
 
-#define F3F(x,y,z)     (((x)<<30)|((y)<<19)|((z)<<5))
-
-#define FPD_ENCODE(x)  (((x) >> 5) | ((x) & ~(0x20)))
-
-#define RS1(x)         (FPD_ENCODE(x) << 14)
-#define RS2(x)         (FPD_ENCODE(x) <<  0)
-#define RS3(x)         (FPD_ENCODE(x) <<  9)
-#define RD(x)          (FPD_ENCODE(x) << 25)
-#define IMM5(x)                ((x)           <<  0)
-
-#define CAMELLIA_F(a,b,c,d)            \
-       .word           (F3F(2, 0x19, 0x00c)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-#define CAMELLIA_FL(a,b,c)             \
-       .word           (F3F(2, 0x36, 0x13c)|RS1(a)|RS2(b)|RD(c));
-#define CAMELLIA_FLI(a,b,c)            \
-       .word           (F3F(2, 0x36, 0x13d)|RS1(a)|RS2(b)|RD(c));
-
-#define MOVDTOX_F0_O4  \
-       .word   0x99b02200
-#define MOVDTOX_F2_O5  \
-       .word   0x9bb02202
+#include "opcodes.h"
 
 #define CAMELLIA_6ROUNDS(KEY_BASE, I0, I1) \
        CAMELLIA_F(KEY_BASE +  0, I1, I0, I1) \
index cb479ec72433e0412eb1966296f4a67f4c5e7eb4..2b1976e765b53212e5aa16ab37078e3f709e12e1 100644 (file)
@@ -2,16 +2,7 @@
 #include <asm/visasm.h>
 #include <asm/asi.h>
 
-#define F3F(x,y,z)     (((x)<<30)|((y)<<19)|((z)<<5))
-
-#define FPD_ENCODE(x)  (((x) >> 5) | ((x) & ~(0x20)))
-
-#define RS1(x)         (FPD_ENCODE(x) << 14)
-#define RS2(x)         (FPD_ENCODE(x) <<  0)
-#define RD(x)          (FPD_ENCODE(x) << 25)
-
-#define CRC32C(a,b,c)  \
-       .word           (F3F(2,0x36,0x147)|RS1(a)|RS2(b)|RD(c));
+#include "opcodes.h"
 
 ENTRY(crc32c_sparc64)
        /* %o0=crc32p, %o1=data_ptr, %o2=len */
index 589481e53d0717508ec393891db6931eda893d7f..a7da935796e12a5bd05e7aa7ccc881cbb275f082 100644 (file)
@@ -1,29 +1,7 @@
 #include <linux/linkage.h>
 #include <asm/visasm.h>
 
-#define F3F(x,y,z)     (((x)<<30)|((y)<<19)|((z)<<5))
-
-#define FPD_ENCODE(x)  (((x) >> 5) | ((x) & ~(0x20)))
-
-#define RS1(x)         (FPD_ENCODE(x) << 14)
-#define RS2(x)         (FPD_ENCODE(x) <<  0)
-#define RS3(x)         (FPD_ENCODE(x) <<  9)
-#define RD(x)          (FPD_ENCODE(x) << 25)
-#define IMM5(x)                ((x)           <<  0)
-
-#define DES_IP(a,b)            \
-       .word           (F3F(2, 0x36, 0x134)|RS1(a)|RD(b));
-#define DES_IIP(a,b)           \
-       .word           (F3F(2, 0x36, 0x135)|RS1(a)|RD(b));
-#define DES_KEXPAND(a,b,c)     \
-       .word           (F3F(2, 0x36, 0x136)|RS1(a)|IMM5(b)|RD(c));
-#define DES_ROUND(a,b,c,d)     \
-       .word           (F3F(2, 0x19, 0x009)|RS1(a)|RS2(b)|RS3(c)|RD(d));
-
-#define MOVXTOD_G1_F60 \
-       .word           0xbbb02301
-#define MOVXTOD_G1_F62 \
-       .word           0xbfb02301
+#include "opcodes.h"
 
        .align  32
 ENTRY(des_sparc64_key_expand)
index ff90903180eb7f7471893b3b69959421d325da6f..3150404e602e46fedffa3b97dc8260265114136e 100644 (file)
@@ -1,6 +1,8 @@
 #include <linux/linkage.h>
 #include <asm/visasm.h>
 
+#include "opcodes.h"
+
 ENTRY(md5_sparc64_transform)
        /* %o0 = digest, %o1 = data, %o2 = rounds */
        VISEntryHalf
@@ -21,8 +23,7 @@ ENTRY(md5_sparc64_transform)
        ldd     [%o1 + 0x30], %f20
        ldd     [%o1 + 0x38], %f22
 
-       /* md5 */
-       .word   0x81b02800
+       MD5
 
        subcc   %o2, 1, %o2
        bne,pt  %xcc, 1b
@@ -58,8 +59,7 @@ ENTRY(md5_sparc64_transform)
        faligndata %f22, %f24, %f20
        faligndata %f24, %f26, %f22
 
-       /* md5 */
-       .word   0x81b02800
+       MD5
 
        subcc   %o2, 1, %o2
        fsrc2   %f26, %f10
diff --git a/arch/sparc/crypto/opcodes.h b/arch/sparc/crypto/opcodes.h
new file mode 100644 (file)
index 0000000..b6c4a15
--- /dev/null
@@ -0,0 +1,97 @@
+#ifndef _OPCODES_H
+#define _OPCODES_H
+
+#define F3F(x,y,z)     (((x)<<30)|((y)<<19)|((z)<<5))
+
+#define FPD_ENCODE(x)  (((x) >> 5) | ((x) & ~(0x20)))
+
+#define RS1(x)         (FPD_ENCODE(x) << 14)
+#define RS2(x)         (FPD_ENCODE(x) <<  0)
+#define RS3(x)         (FPD_ENCODE(x) <<  9)
+#define RD(x)          (FPD_ENCODE(x) << 25)
+#define IMM5_0(x)      ((x)           <<  0)
+#define IMM5_9(x)      ((x)           <<  9)
+
+#define CRC32C(a,b,c)  \
+       .word           (F3F(2,0x36,0x147)|RS1(a)|RS2(b)|RD(c));
+
+#define MD5            \
+       .word   0x81b02800;
+#define SHA1           \
+       .word   0x81b02820;
+#define SHA256         \
+       .word   0x81b02840;
+#define SHA512         \
+       .word   0x81b02860;
+
+#define AES_EROUND01(a,b,c,d)  \
+       .word   (F3F(2, 0x19, 0)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+#define AES_EROUND23(a,b,c,d)  \
+       .word   (F3F(2, 0x19, 1)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+#define AES_DROUND01(a,b,c,d)  \
+       .word   (F3F(2, 0x19, 2)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+#define AES_DROUND23(a,b,c,d)  \
+       .word   (F3F(2, 0x19, 3)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+#define AES_EROUND01_L(a,b,c,d)        \
+       .word   (F3F(2, 0x19, 4)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+#define AES_EROUND23_L(a,b,c,d)        \
+       .word   (F3F(2, 0x19, 5)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+#define AES_DROUND01_L(a,b,c,d)        \
+       .word   (F3F(2, 0x19, 6)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+#define AES_DROUND23_L(a,b,c,d)        \
+       .word   (F3F(2, 0x19, 7)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+#define AES_KEXPAND1(a,b,c,d)  \
+       .word   (F3F(2, 0x19, 8)|RS1(a)|RS2(b)|IMM5_9(c)|RD(d));
+#define AES_KEXPAND0(a,b,c)    \
+       .word   (F3F(2, 0x36, 0x130)|RS1(a)|RS2(b)|RD(c));
+#define AES_KEXPAND2(a,b,c)    \
+       .word   (F3F(2, 0x36, 0x131)|RS1(a)|RS2(b)|RD(c));
+
+#define DES_IP(a,b)            \
+       .word           (F3F(2, 0x36, 0x134)|RS1(a)|RD(b));
+#define DES_IIP(a,b)           \
+       .word           (F3F(2, 0x36, 0x135)|RS1(a)|RD(b));
+#define DES_KEXPAND(a,b,c)     \
+       .word           (F3F(2, 0x36, 0x136)|RS1(a)|IMM5_0(b)|RD(c));
+#define DES_ROUND(a,b,c,d)     \
+       .word           (F3F(2, 0x19, 0x009)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+
+#define CAMELLIA_F(a,b,c,d)            \
+       .word           (F3F(2, 0x19, 0x00c)|RS1(a)|RS2(b)|RS3(c)|RD(d));
+#define CAMELLIA_FL(a,b,c)             \
+       .word           (F3F(2, 0x36, 0x13c)|RS1(a)|RS2(b)|RD(c));
+#define CAMELLIA_FLI(a,b,c)            \
+       .word           (F3F(2, 0x36, 0x13d)|RS1(a)|RS2(b)|RD(c));
+
+#define MOVDTOX_F0_O4          \
+       .word   0x99b02200
+#define MOVDTOX_F2_O5          \
+       .word   0x9bb02202
+#define MOVXTOD_G1_F60                 \
+       .word   0xbbb02301
+#define MOVXTOD_G1_F62                 \
+       .word   0xbfb02301
+#define MOVXTOD_G3_F4          \
+       .word   0x89b02303;
+#define MOVXTOD_G7_F6          \
+       .word   0x8db02307;
+#define MOVXTOD_G3_F0          \
+       .word   0x81b02303;
+#define MOVXTOD_G7_F2          \
+       .word   0x85b02307;
+#define MOVXTOD_O0_F0          \
+       .word   0x81b02308;
+#define MOVXTOD_O5_F0          \
+       .word   0x81b0230d;
+#define MOVXTOD_O5_F2          \
+       .word   0x85b0230d;
+#define MOVXTOD_O5_F4          \
+       .word   0x89b0230d;
+#define MOVXTOD_O5_F6          \
+       .word   0x8db0230d;
+#define MOVXTOD_G3_F60         \
+       .word   0xbbb02303;
+#define MOVXTOD_G7_F62         \
+       .word   0xbfb02307;
+
+#endif /* _OPCODES_H */
index 3cd218ac631b9d8d4ed5b220fa0d32387fb0c45f..219d10c5ae0e7a850b33b5cc30ce99e90bd56fd4 100644 (file)
@@ -1,6 +1,8 @@
 #include <linux/linkage.h>
 #include <asm/visasm.h>
 
+#include "opcodes.h"
+
 ENTRY(sha1_sparc64_transform)
        /* %o0 = digest, %o1 = data, %o2 = rounds */
        VISEntryHalf
@@ -22,8 +24,7 @@ ENTRY(sha1_sparc64_transform)
        ldd     [%o1 + 0x30], %f20
        ldd     [%o1 + 0x38], %f22
 
-       /* sha1 */
-       .word   0x81b02820
+       SHA1
 
        subcc   %o2, 1, %o2
        bne,pt  %xcc, 1b
@@ -60,8 +61,7 @@ ENTRY(sha1_sparc64_transform)
        faligndata %f22, %f24, %f20
        faligndata %f24, %f26, %f22
 
-       /* sha1 */
-       .word   0x81b02820
+       SHA1
 
        subcc   %o2, 1, %o2
        fsrc2   %f26, %f10
index 9da84f5b61f53e1b45361e4f6d66180a31f587ae..b5f3d5826eb411c9c6bde3aa334c195b65429354 100644 (file)
@@ -1,6 +1,8 @@
 #include <linux/linkage.h>
 #include <asm/visasm.h>
 
+#include "opcodes.h"
+
 ENTRY(sha256_sparc64_transform)
        /* %o0 = digest, %o1 = data, %o2 = rounds */
        VISEntryHalf
@@ -25,8 +27,7 @@ ENTRY(sha256_sparc64_transform)
        ldd     [%o1 + 0x30], %f20
        ldd     [%o1 + 0x38], %f22
 
-       /* sha256 */
-       .word   0x81b02840
+       SHA256
 
        subcc   %o2, 1, %o2
        bne,pt  %xcc, 1b
@@ -66,8 +67,7 @@ ENTRY(sha256_sparc64_transform)
        faligndata %f22, %f24, %f20
        faligndata %f24, %f26, %f22
 
-       /* sha256 */
-       .word   0x81b02840
+       SHA256
 
        subcc   %o2, 1, %o2
        fsrc2   %f26, %f10
index 650ba5742f0eeb4902f2fffb4a54247e9850acf1..54bfba713c0eb564620a4542101e752c98b4cc97 100644 (file)
@@ -1,6 +1,8 @@
 #include <linux/linkage.h>
 #include <asm/visasm.h>
 
+#include "opcodes.h"
+
 ENTRY(sha512_sparc64_transform)
        /* %o0 = digest, %o1 = data, %o2 = rounds */
        VISEntry
@@ -33,8 +35,7 @@ ENTRY(sha512_sparc64_transform)
        ldd     [%o1 + 0x70], %f44
        ldd     [%o1 + 0x78], %f46
 
-       /* sha512 */
-       .word   0x81b02860
+       SHA512
 
        subcc   %o2, 1, %o2
        bne,pt  %xcc, 1b
@@ -90,8 +91,7 @@ ENTRY(sha512_sparc64_transform)
        faligndata %f46, %f48, %f44
        faligndata %f48, %f50, %f46
 
-       /* sha512 */
-       .word   0x81b02860
+       SHA512
 
        subcc   %o2, 1, %o2
        fsrc2   %f50, %f18