Commit 784fde7c authored by Christian Heimes's avatar Christian Heimes

Force 32bit Keccak implementation on SPARC. It look like the Solaris CC...

Force 32bit Keccak implementation on SPARC. It look like the Solaris CC compiler doesn't like the address alignment.
parent ba3e4a0b
......@@ -95,21 +95,27 @@
*
* *************************************************************************/
#if SIZEOF_VOID_P == 8 && defined(PY_UINT64_T)
/* 64bit platforms with unsigned int64 */
#define KeccakImplementation 64
#ifdef __sparc
/* On SPARC with Solaris CC opt64 fails with 'invalid address alignment' */
#define KeccakOpt 32
#elif SIZEOF_VOID_P == 8
#define KeccakOpt 64
#elif SIZEOF_VOID_P == 4
#define KeccakOpt 32
#endif
#if KeccakOpt == 64 && defined(PY_UINT64_T)
/* 64bit platforms with unsigned int64 */
#define Unrolling 24
#define UseBebigokimisa
typedef PY_UINT64_T UINT64;
#elif SIZEOF_VOID_P == 4 && defined(PY_UINT64_T)
#elif KeccakOpt == 32 && defined(PY_UINT64_T)
/* 32bit platforms with unsigned int64 */
#define KeccakImplementation 32
#define Unrolling 2
#define UseSchedule 3
typedef PY_UINT64_T UINT64;
#else
/* 32 or 64bit platforms without unsigned int64 */
#define KeccakImplementation 32
#define Unrolling 2
#define UseSchedule 3
#define UseInterleaveTables
......@@ -125,9 +131,9 @@
#include "keccak/KeccakNISTInterface.h"
#include "keccak/KeccakNISTInterface.c"
#include "keccak/KeccakSponge.c"
#if KeccakImplementation == 64
#if KeccakOpt == 64
#include "keccak/KeccakF-1600-opt64.c"
#elif KeccakImplementation == 32
#elif KeccakOpt == 32
#include "keccak/KeccakF-1600-opt32.c"
#endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment