Skip to content

Commit

Permalink
[CRYPTO] rmd: Use pointer form of endian swapping operations
Browse files Browse the repository at this point in the history
This patch converts the relevant code in the rmd implementations to
use the pointer form of the endian swapping operations.  This allows
certain architectures to generate more optimised code.  For example,
on sparc64 this more than halves the CPU cycles on a typical hashing
operation.

Based on a patch by David Miller.

Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
herbertx committed Jul 10, 2008
1 parent 0936a94 commit 5cdcc22
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 8 deletions.
4 changes: 2 additions & 2 deletions crypto/rmd128.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ struct rmd128_ctx {
#define F4(x, y, z) (y ^ (z & (x ^ y))) /* z ? x : y */

#define ROUND(a, b, c, d, f, k, x, s) { \
(a) += f((b), (c), (d)) + le32_to_cpu(x) + (k); \
(a) += f((b), (c), (d)) + le32_to_cpup(&(x)) + (k); \
(a) = rol32((a), (s)); \
}

Expand Down Expand Up @@ -285,7 +285,7 @@ static void rmd128_final(struct crypto_tfm *tfm, u8 *out)

/* Store state in digest */
for (i = 0; i < 4; i++)
dst[i] = cpu_to_le32(rctx->state[i]);
dst[i] = cpu_to_le32p(&rctx->state[i]);

/* Wipe context */
memset(rctx, 0, sizeof(*rctx));
Expand Down
4 changes: 2 additions & 2 deletions crypto/rmd160.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ struct rmd160_ctx {
#define F5(x, y, z) (x ^ (y | ~z))

#define ROUND(a, b, c, d, e, f, k, x, s) { \
(a) += f((b), (c), (d)) + le32_to_cpu(x) + (k); \
(a) += f((b), (c), (d)) + le32_to_cpup(&(x)) + (k); \
(a) = rol32((a), (s)) + (e); \
(c) = rol32((c), 10); \
}
Expand Down Expand Up @@ -329,7 +329,7 @@ static void rmd160_final(struct crypto_tfm *tfm, u8 *out)

/* Store state in digest */
for (i = 0; i < 5; i++)
dst[i] = cpu_to_le32(rctx->state[i]);
dst[i] = cpu_to_le32p(&rctx->state[i]);

/* Wipe context */
memset(rctx, 0, sizeof(*rctx));
Expand Down
4 changes: 2 additions & 2 deletions crypto/rmd256.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ struct rmd256_ctx {
#define F4(x, y, z) (y ^ (z & (x ^ y))) /* z ? x : y */

#define ROUND(a, b, c, d, f, k, x, s) { \
(a) += f((b), (c), (d)) + le32_to_cpu(x) + (k); \
(a) += f((b), (c), (d)) + le32_to_cpup(&(x)) + (k); \
(a) = rol32((a), (s)); \
}

Expand Down Expand Up @@ -304,7 +304,7 @@ static void rmd256_final(struct crypto_tfm *tfm, u8 *out)

/* Store state in digest */
for (i = 0; i < 8; i++)
dst[i] = cpu_to_le32(rctx->state[i]);
dst[i] = cpu_to_le32p(&rctx->state[i]);

/* Wipe context */
memset(rctx, 0, sizeof(*rctx));
Expand Down
4 changes: 2 additions & 2 deletions crypto/rmd320.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ struct rmd320_ctx {
#define F5(x, y, z) (x ^ (y | ~z))

#define ROUND(a, b, c, d, e, f, k, x, s) { \
(a) += f((b), (c), (d)) + le32_to_cpu(x) + (k); \
(a) += f((b), (c), (d)) + le32_to_cpup(&(x)) + (k); \
(a) = rol32((a), (s)) + (e); \
(c) = rol32((c), 10); \
}
Expand Down Expand Up @@ -353,7 +353,7 @@ static void rmd320_final(struct crypto_tfm *tfm, u8 *out)

/* Store state in digest */
for (i = 0; i < 10; i++)
dst[i] = cpu_to_le32(rctx->state[i]);
dst[i] = cpu_to_le32p(&rctx->state[i]);

/* Wipe context */
memset(rctx, 0, sizeof(*rctx));
Expand Down

0 comments on commit 5cdcc22

Please sign in to comment.