$OpenBSD: patch-extensions_transformiix_source_base_Double_cpp,v 1.5 2009/02/03 22:22:11 martynas Exp $
--- extensions/transformiix/source/base/Double.cpp.orig	Thu Jun 22 22:13:00 2006
+++ extensions/transformiix/source/base/Double.cpp	Mon Feb  2 20:20:46 2009
@@ -72,8 +72,10 @@ fp_except_t oldmask = fpsetmask(~allmask);
  */
 
 #if defined(__arm) || defined(__arm32__) || defined(_arm26__) || defined(__arm__)
+#ifndef __OpenBSD__ /* Armel ABI */
 #define CPU_IS_ARM
 #endif
+#endif
 
 #if (__GNUC__ == 2 && __GNUC_MINOR__ > 95) || __GNUC__ > 2
 /**
@@ -115,17 +117,19 @@ typedef union txdpun {
 #define TX_DOUBLE_HI32_EXPMASK   0x7ff00000
 #define TX_DOUBLE_HI32_MANTMASK  0x000fffff
 
+#define STRICT_ALIGN __attribute__ ((aligned (8)))
+
 //-- Initialize Double related constants
 #ifdef IS_BIG_ENDIAN
-const PRUint32 nanMask[2] =    {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
+const PRUint32 nanMask[2] STRICT_ALIGN =    {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK,
                                 0xffffffff};
-const PRUint32 infMask[2] =    {TX_DOUBLE_HI32_EXPMASK, 0};
-const PRUint32 negInfMask[2] = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
+const PRUint32 infMask[2] STRICT_ALIGN =    {TX_DOUBLE_HI32_EXPMASK, 0};
+const PRUint32 negInfMask[2] STRICT_ALIGN = {TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT, 0};
 #else
-const PRUint32 nanMask[2] =    {0xffffffff,
+const PRUint32 nanMask[2] STRICT_ALIGN =    {0xffffffff,
                                 TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_MANTMASK};
-const PRUint32 infMask[2] =    {0, TX_DOUBLE_HI32_EXPMASK};
-const PRUint32 negInfMask[2] = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
+const PRUint32 infMask[2] STRICT_ALIGN =    {0, TX_DOUBLE_HI32_EXPMASK};
+const PRUint32 negInfMask[2] STRICT_ALIGN = {0, TX_DOUBLE_HI32_EXPMASK | TX_DOUBLE_HI32_SIGNBIT};
 #endif
 
 const double Double::NaN = *((double*)nanMask);
