* Removed all Id tags.
[cacao.git] / src / vm / jit / powerpc64 / arch.h
index e3f1ada3ef92859c7cf213ca2fc010aa3c934ecb..6a092db61c8e831232f2397b0ee5b3afbb8f6940 100644 (file)
@@ -1,6 +1,6 @@
 /* src/vm/jit/powerpc64/arch.h - architecture defines for PowerPC64
 
-   Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+   Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
    C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
    E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
    J. Wenninger, Institut f. Computersprachen - TU Wien
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   Contact: cacao@cacaojvm.org
-
-   Authors: Christian Thalinger
-
-   Changes:
-
-   $Id: arch.h 5261 2006-08-22 15:49:25Z tbfg $
-
 */
 
 
 #ifndef _ARCH_H
 #define _ARCH_H
 
-/*#define USE_FAKE_ATOMIC_INSTRUCTIONS         0 */
+#include "config.h"
+
 
 /* define architecture features ***********************************************/
 
 #define U8_AVAILABLE                     1
 
-#define USEBUILTINTABLE
-
-#define SUPPORT_DIVISION                 0
-#define SUPPORT_LONG                     0
-#define SUPPORT_FLOAT                    0
-#define SUPPORT_DOUBLE                   0
+#define SUPPORT_DIVISION                 1
+#define SUPPORT_LONG                     1
 
 #define SUPPORT_FMOD                     0
 #define SUPPORT_FICVT                    0
 #define SUPPORT_IFCVT                    0
 
-#define SUPPORT_LONG_ADD                 0
-#define SUPPORT_LONG_CMP                 0
-#define SUPPORT_LONG_CMP_CONST           0
-#define SUPPORT_LONG_LOGICAL             0
-#define SUPPORT_LONG_SHIFT               0
-#define SUPPORT_LONG_MUL                 0
-#define SUPPORT_LONG_DIV                 0
-#define SUPPORT_LONG_ICVT                0
-#define SUPPORT_LONG_FCVT                0
+#define SUPPORT_LONG_ADD                 1
+#define SUPPORT_LONG_CMP                 1
+#define SUPPORT_LONG_CMP_CONST           1
+#define SUPPORT_LONG_LOGICAL             1
+#define SUPPORT_LONG_SHIFT               1     
+#define SUPPORT_LONG_MUL                 1
+#define SUPPORT_LONG_DIV                 1
+#define SUPPORT_LONG_ICVT                1
+#define SUPPORT_LONG_FCVT                1
 
 #define SUPPORT_CONST_LOGICAL            0  /* AND, OR, XOR with immediates   */
-#define SUPPORT_CONST_MUL                0  /* mutiply with immediate         */
+#define SUPPORT_CONST_MUL                1  /* mutiply with immediate         */
 
 #define SUPPORT_CONST_STORE              0  /* do we support const stores     */
 #define SUPPORT_CONST_STORE_ZERO_ONLY    0  /* on some risc machines we can   */
                                             /* only store REG_ZERO            */
 
+
+/* float **********************************************************************/
+
+#define SUPPORT_FLOAT                    1
+
+#if defined(ENABLE_SOFT_FLOAT_CMP)
+# define SUPPORT_FLOAT_CMP               0
+#else
+# define SUPPORT_FLOAT_CMP               1
+#endif
+
+
+/* double *********************************************************************/
+
+#define SUPPORT_DOUBLE                   1
+
+#if defined(ENABLE_SOFT_FLOAT_CMP)
+# define SUPPORT_DOUBLE_CMP              0
+#else
+# define SUPPORT_DOUBLE_CMP              1
+#endif
+
+
 #define SPECIALMEMUSE
 /* #define HAS_4BYTE_STACKSLOT */
 /* #define SUPPORT_COMBINE_INTEGER_REGISTERS */
 
+
+/* branches *******************************************************************/
+
+#define SUPPORT_BRANCH_CONDITIONAL_CONDITION_REGISTER       1
+#define SUPPORT_BRANCH_CONDITIONAL_ONE_INTEGER_REGISTER     0
+#define SUPPORT_BRANCH_CONDITIONAL_TWO_INTEGER_REGISTERS    0
+
+
+/* exceptions *****************************************************************/
+
+#define SUPPORT_HARDWARE_DIVIDE_BY_ZERO  0
+
+
+/* replacement ****************************************************************/
+
+#define REPLACEMENT_PATCH_SIZE           4 /* bytes */
+
 #endif /* _ARCH_H */