diff mbox series

[v4,2/5] tcgbios: Use assembly for 32 bit rotr in sha256

Message ID 20210709153903.691945-3-stefanb@linux.vnet.ibm.com
State Accepted
Headers show
Series tcgbios: Use the proper hashes for the TPM 2 PCR banks | expand

Commit Message

Stefan Berger July 9, 2021, 3:39 p.m. UTC
From: Stefan Berger <stefanb@linux.ibm.com>

Use assembly for the 32 bit rotr in the sha256 implementation
similar to the assembly used in the sha1 and sha512 implementations.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
---
 lib/libtpm/sha256.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/lib/libtpm/sha256.c b/lib/libtpm/sha256.c
index c6b8767..1a0aa9a 100644
--- a/lib/libtpm/sha256.c
+++ b/lib/libtpm/sha256.c
@@ -22,10 +22,16 @@  typedef struct _sha256_ctx {
 	uint32_t h[8];
 } sha256_ctx;
 
-static inline uint32_t rotr(uint32_t x, uint8_t n)
-{
-	return (x >> n) | (x << (32 - n));
-}
+#define rotr(VAL, N)				\
+({						\
+	uint32_t res;				\
+	__asm__ (				\
+		"rotrwi %0, %1, %2\n\t"		\
+		: "=r" (res)			\
+		: "r" (VAL), "i" (N)		\
+	);					\
+	res; 					\
+})
 
 static inline uint32_t Ch(uint32_t x, uint32_t y, uint32_t z)
 {