crypto/modes/modes_lcl.h: let STRICT_ALIGNMENT be on ARMv7.
[openssl.git] / crypto / modes / modes_lcl.h
index 7a82a981ca4f93e460cbeb3a8f5bb42db14bc737..9d83e128444e0bb583a8313753a0b5fd5e0ec388 100644 (file)
@@ -29,10 +29,7 @@ typedef unsigned char u8;
 #if defined(__i386)    || defined(__i386__)    || \
     defined(__x86_64)  || defined(__x86_64__)  || \
     defined(_M_IX86)   || defined(_M_AMD64)    || defined(_M_X64) || \
-    defined(__s390__)  || defined(__s390x__)   || \
-    ( (defined(__arm__)        || defined(__arm)) && \
-      (defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
-       defined(__ARM_ARCH_7R__)        || defined(__ARM_ARCH_7M__)) )
+    defined(__s390__)  || defined(__s390x__)
 # undef STRICT_ALIGNMENT
 #endif
 
@@ -45,7 +42,7 @@ typedef unsigned char u8;
 #  define BSWAP4(x) ({ u32 ret=(x);                    \
                        asm ("bswapl %0"                \
                        : "+r"(ret));   ret;            })
-# elif (defined(__i386) || defined(__i386__))
+# elif (defined(__i386) || defined(__i386__)) && !defined(I386_ONLY)
 #  define BSWAP8(x) ({ u32 lo=(u64)(x)>>32,hi=(x);     \
                        asm ("bswapl %0; bswapl %1"     \
                        : "+r"(hi),"+r"(lo));           \
@@ -101,8 +98,8 @@ typedef struct { u64 hi,lo; } u128;
 
 struct gcm128_context {
        /* Following 6 names follow names in GCM specification */
-       union { u64 u[2]; u32 d[4]; u8 c[16]; } Yi,EKi,EK0,len,
-                                               Xi,H;
+       union { u64 u[2]; u32 d[4]; u8 c[16]; size_t t[16/sizeof(size_t)]; }
+         Yi,EKi,EK0,len,Xi,H;
        /* Relative position of Xi, H and pre-computed Htable is used
         * in some assembler modules, i.e. don't change the order! */
 #if TABLE_BITS==8