diff --git a/cpu.cpp b/cpu.cpp
index 127f014a..8fde6886 100644
--- a/cpu.cpp
+++ b/cpu.cpp
@@ -511,9 +511,9 @@ void DetectX86Features()
#endif
// Solaris 11 i86pc does not signal SSE support using
- // OSXSAVE. We need to probe for SSE support. CR4 and
- // bit 18 is not available to userland.
- // TODO: cut something in when testing is available.
+ // OSXSAVE. We need to probe for SSE support.
+ if (g_hasSSE2 == false)
+ g_hasSSE2 = CPU_ProbeSSE2();
if (g_hasSSE2 == false)
goto done;
diff --git a/vmac.cpp b/vmac.cpp
index 0455b321..5c59a771 100644
--- a/vmac.cpp
+++ b/vmac.cpp
@@ -207,7 +207,6 @@ void VMAC_Base::VHASH_Update_SSE2(const word64 *data, size_t blocksRemainingInWo
#ifdef __GNUC__
__asm__ __volatile__
(
- AS1( push %%ebx)
AS1( push %0) // L1KeyLength
AS1( pop %%ebx)
INTEL_NOPREFIX
@@ -429,11 +428,10 @@ void VMAC_Base::VHASH_Update_SSE2(const word64 *data, size_t blocksRemainingInWo
AS1( emms)
#ifdef __GNUC__
ATT_PREFIX
- AS1( pop %%ebx)
:
: "m" (L1KeyLength), "c" (blocksRemainingInWord64), "S" (data),
"D" (nhK+tagPart*2), "d" (m_isFirstBlock), "a" (polyS+tagPart*4)
- : "esp", "memory", "cc"
+ : "ebx", "memory", "cc"
);
#endif
}
diff --git a/vmac.h b/vmac.h
index 23ffef78..44fe09fc 100644
--- a/vmac.h
+++ b/vmac.h
@@ -68,10 +68,10 @@ protected:
/// \tparam T_BlockCipher block cipher
/// \tparam T_DigestBitSize digest size, in bits
/// \details VMAC is a block cipher-based message authentication code algorithm
-/// using a universal hash proposed by Ted Krovetz and Wei Dai in April 2007. The
-/// algorithm was designed for high performance backed by a formal analysis.
+/// using a universal hash proposed by Ted Krovetz and Wei Dai in April 2007. The
+/// algorithm was designed for high performance backed by a formal analysis.
/// \details The implementation is based on Ted Krovetz's public domain vmac.c
-/// and draft-krovetz-vmac-01.txt.
+/// and draft-krovetz-vmac-01.txt.
/// \sa VMAC.
/// \since Crypto++ 5.5
template