Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1ce73e8d authored by Denys Vlasenko's avatar Denys Vlasenko Committed by Herbert Xu
Browse files

[CRYPTO] camellia: Code cleanup



Optimize GETU32 to use 4-byte memcpy (modern gcc will convert
such memcpy to single move instruction on i386).
Original GETU32 did four byte fetches, and shifted/XORed those.

Signed-off-by: default avatarDenys Vlasenko <vda.linux@googlemail.com>
Acked-by: default avatarNoriaki TAKAMIYA <takamiya@po.ntts.co.jp>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 3a5e5f81
Loading
Loading
Loading
Loading
+21 −18
Original line number Diff line number Diff line
@@ -330,10 +330,12 @@ static const u32 camellia_sp4404[256] = {
 *  macros
 */

# define GETU32(pt) (((u32)(pt)[0] << 24)	\
		     ^ ((u32)(pt)[1] << 16)	\
		     ^ ((u32)(pt)[2] <<  8)	\
		     ^ ((u32)(pt)[3]))
# define GETU32(v, pt) \
    do { \
	/* latest breed of gcc is clever enough to use move */ \
	memcpy(&(v), (pt), 4); \
	(v) = be32_to_cpu(v); \
    } while(0)

/* rotation right shift 1byte */
#define ROR8(x) (((x) >> 8) + ((x) << 24))
@@ -433,10 +435,11 @@ static void camellia_setup128(const unsigned char *key, u32 *subkey)
	/**
	 *  k == kll || klr || krl || krr (|| is concatination)
	 */
	kll = GETU32(key     );
	klr = GETU32(key +  4);
	krl = GETU32(key +  8);
	krr = GETU32(key + 12);
	GETU32(kll, key     );
	GETU32(klr, key +  4);
	GETU32(krl, key +  8);
	GETU32(krr, key + 12);

	/**
	 * generate KL dependent subkeys
	 */
@@ -698,14 +701,14 @@ static void camellia_setup256(const unsigned char *key, u32 *subkey)
	 *  key = (kll || klr || krl || krr || krll || krlr || krrl || krrr)
	 *  (|| is concatination)
	 */
	kll  = GETU32(key     );
	klr  = GETU32(key +  4);
	krl  = GETU32(key +  8);
	krr  = GETU32(key + 12);
	krll = GETU32(key + 16);
	krlr = GETU32(key + 20);
	krrl = GETU32(key + 24);
	krrr = GETU32(key + 28);
	GETU32(kll,  key     );
	GETU32(klr,  key +  4);
	GETU32(krl,  key +  8);
	GETU32(krr,  key + 12);
	GETU32(krll, key + 16);
	GETU32(krlr, key + 20);
	GETU32(krrl, key + 24);
	GETU32(krrr, key + 28);

	/* generate KL dependent subkeys */
	/* kw1 */