Support for SPARC T4 MONT[MUL|SQR] instructions.
[openssl.git] / crypto / sparc_arch.h
index 1a8fca9..c3843c0 100644 (file)
@@ -9,6 +9,7 @@
 #define SPARCV9_BLK            (1<<5)  /* VIS1 block copy */
 #define SPARCV9_VIS3           (1<<6)
 #define SPARCV9_RANDOM         (1<<7)
+#define SPARCV9_64BIT_STACK    (1<<8)
 
 /*
  * OPENSSL_sparcv9cap_P[1] is copy of Compatibility Feature Register,
 # define __PIC__
 #endif
 
+#if defined(__SUNPRO_C) && defined(__sparcv9) && !defined(__arch64__)
+# define __arch64__
+#endif
+
 #define SPARC_PIC_THUNK(reg)   \
        .align  32;             \
 .Lpic_thunk:                   \
        add     %o7, reg, reg
 #endif
 
-#if    (defined(__GNUC__) && defined(__arch64__)) || \
-       (defined(__SUNPRO_C) && defined(__sparcv9))
+#if defined(__arch64__)
 
 # define SPARC_LOAD_ADDRESS(SYM, reg)  \
        setx    SYM, %o7, reg;
-# define LDPTR ldx
+# define LDPTR         ldx
+# define SIZE_T_CC     %xcc
+# define STACK_FRAME   192
+# define STACK_BIAS    2047
+# define STACK_7thARG  (STACK_BIAS+176)
 
 #else
 
 # define SPARC_LOAD_ADDRESS(SYM, reg)  \
        set     SYM, reg;
-# define LDPTR ld
+# define LDPTR         ld
+# define SIZE_T_CC     %icc
+# define STACK_FRAME   112
+# define STACK_BIAS    0
+# define STACK_7thARG  92
 # define SPARC_LOAD_ADDRESS_LEAF(SYM,reg,tmp) SPARC_LOAD_ADDRESS(SYM,reg)
 
 #endif