aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/crypto/padlock-sha.c
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2009-07-15 06:37:48 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2009-07-15 06:37:48 -0400
commitfaae890883624e14a328863eafabf54a36698774 (patch)
tree647d5c14ed5ced5e20792a591a79b0c7a207fdcb /drivers/crypto/padlock-sha.c
parentb5ebd44eb7559ea6135d536bafd02323d2ef0547 (diff)
crypto: padlock - Fix compile error on i386
The previous change to allow hashing from states other than the initial broke compilation on i386 because the inline assembly tried to squeeze a u64 into a 32-bit register. As we've already checked for 32-bit overflows we can simply truncate it to u32, or unsigned long so that we don't truncate at all on x86-64. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'drivers/crypto/padlock-sha.c')
-rw-r--r--drivers/crypto/padlock-sha.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/crypto/padlock-sha.c b/drivers/crypto/padlock-sha.c
index fb6e6c343148..a936ba49b390 100644
--- a/drivers/crypto/padlock-sha.c
+++ b/drivers/crypto/padlock-sha.c
@@ -103,7 +103,8 @@ static int padlock_sha1_finup(struct shash_desc *desc, const u8 *in,
103 ts_state = irq_ts_save(); 103 ts_state = irq_ts_save();
104 asm volatile (".byte 0xf3,0x0f,0xa6,0xc8" /* rep xsha1 */ 104 asm volatile (".byte 0xf3,0x0f,0xa6,0xc8" /* rep xsha1 */
105 : \ 105 : \
106 : "c"(state.count + count), "a"(state.count), \ 106 : "c"((unsigned long)state.count + count), \
107 "a"((unsigned long)state.count), \
107 "S"(in), "D"(result)); 108 "S"(in), "D"(result));
108 irq_ts_restore(ts_state); 109 irq_ts_restore(ts_state);
109 110
@@ -165,7 +166,8 @@ static int padlock_sha256_finup(struct shash_desc *desc, const u8 *in,
165 ts_state = irq_ts_save(); 166 ts_state = irq_ts_save();
166 asm volatile (".byte 0xf3,0x0f,0xa6,0xd0" /* rep xsha256 */ 167 asm volatile (".byte 0xf3,0x0f,0xa6,0xd0" /* rep xsha256 */
167 : \ 168 : \
168 : "c"(state.count + count), "a"(state.count), \ 169 : "c"((unsigned long)state.count + count), \
170 "a"((unsigned long)state.count), \
169 "S"(in), "D"(result)); 171 "S"(in), "D"(result));
170 irq_ts_restore(ts_state); 172 irq_ts_restore(ts_state);
171 173