From 1f00d79595c8d9a978c6a64ace603c3046b7a653 Mon Sep 17 00:00:00 2001 From: weidai Date: Sun, 5 Jul 2009 22:30:24 +0000 Subject: [PATCH] fix bugs in AES assembly (from trantrungan and Andrew Bromba) --- rijndael.cpp | 8 ++------ x64dll.asm | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/rijndael.cpp b/rijndael.cpp index 74893d10..b3d986b8 100644 --- a/rijndael.cpp +++ b/rijndael.cpp @@ -90,7 +90,7 @@ static word64 Td[256]; #else static word32 Te[256*4], Td[256*4]; #endif -static bool s_TeFilled = false, s_TdFilled = false; +static volatile bool s_TeFilled = false, s_TdFilled = false; // ************************* Portable Code ************************************ @@ -529,7 +529,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l .endprolog mov L_REG, rcx mov AS_REG_7, ?Te@rdtable@CryptoPP@@3PA_KA - mov rdi, QWORD PTR [?g_cacheLineSize@CryptoPP@@3IA] + mov edi, DWORD PTR [?g_cacheLineSize@CryptoPP@@3IA] #elif defined(__GNUC__) __asm__ __volatile__ ( @@ -543,9 +543,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l #else AS_PUSH_IF86(si) AS_PUSH_IF86(di) -#if !defined(_MSC_VER) || (_MSC_VER < 1400) AS_PUSH_IF86(bx) -#endif AS_PUSH_IF86(bp) AS2( lea AS_REG_7, [Te]) AS2( mov edi, [g_cacheLineSize]) @@ -875,9 +873,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l AS1( emms) #endif AS_POP_IF86(bp) -#if !defined(_MSC_VER) || (_MSC_VER < 1400) AS_POP_IF86(bx) -#endif #if defined(_MSC_VER) && CRYPTOPP_BOOL_X86 AS_POP_IF86(di) AS_POP_IF86(si) diff --git a/x64dll.asm b/x64dll.asm index 18270982..0d07f362 100644 --- a/x64dll.asm +++ b/x64dll.asm @@ -66,7 +66,7 @@ push_reg r12 .endprolog mov r8, rcx mov r11, ?Te@rdtable@CryptoPP@@3PA_KA -mov rdi, QWORD PTR [?g_cacheLineSize@CryptoPP@@3IA] +mov edi, DWORD PTR [?g_cacheLineSize@CryptoPP@@3IA] mov rsi, [(r8+16*19)] mov rax, 16 and rax, rsi