GNU header update.
[cacao.git] / src / vm / jit / i386 / codegen.h
index 037eeb2a851b719ea747d4f331dd4c591a620a01..c7baf6cb99c9e459a03d59968a8896557acf6738 100644 (file)
@@ -1,9 +1,9 @@
-/* jit/i386/codegen.h - code generation macros and definitions for i386
+/* vm/jit/i386/codegen.h - code generation macros and definitions for i386
 
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-   R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser,
-   M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck,
-   P. Tomsich, J. Wenninger
+   Copyright (C) 1996-2005 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
 
    This file is part of CACAO.
 
@@ -27,7 +27,7 @@
    Authors: Andreas Krall
             Christian Thalinger
 
-   $Id: codegen.h 1351 2004-07-22 22:39:05Z twisti $
+   $Id: codegen.h 1735 2004-12-07 14:33:27Z twisti $
 
 */
 
 #ifndef _CODEGEN_H
 #define _CODEGEN_H
 
-
 #include <ucontext.h>
-#include "jit/jit.h"
-
-
-/* define x86 register numbers */
-#define EAX    0
-#define ECX    1
-#define EDX    2
-#define EBX    3
-#define ESP    4
-#define EBP    5
-#define ESI    6
-#define EDI    7
-
-
-/* preallocated registers *****************************************************/
-
-/* integer registers */
-  
-#define REG_RESULT      EAX      /* to deliver method results                 */
-#define REG_RESULT2     EDX      /* to deliver long method results            */
-
-#define REG_ITMP1       EAX      /* temporary register                        */
-#define REG_ITMP2       ECX      /* temporary register                        */
-#define REG_ITMP3       EDX      /* temporary register                        */
-
-#define REG_NULL        -1       /* used for reg_of_var where d is not needed */
-
-#define REG_ITMP1_XPTR  EAX      /* exception pointer = temporary register 1  */
-#define REG_ITMP2_XPC   ECX      /* exception pc = temporary register 2       */
-
-#define REG_SP          ESP      /* stack pointer                             */
-
-/* floating point registers */
-
-#define REG_FRESULT     0    /* to deliver floating point method results      */
-#define REG_FTMP1       6    /* temporary floating point register             */
-#define REG_FTMP2       7    /* temporary floating point register             */
-#define REG_FTMP3       7    /* temporary floating point register             */
-
-
-#define INT_SAV_CNT     3    /* number of int callee saved registers          */
-#define INT_ARG_CNT     0    /* number of int argument registers              */
-
-#define FLT_SAV_CNT     0    /* number of flt callee saved registers          */
-#define FLT_ARG_CNT     0    /* number of flt argument registers              */
 
 
 /* additional functions and macros to generate code ***************************/
        if (checknull) { \
         i386_test_reg_reg(cd, (objreg), (objreg)); \
         i386_jcc(cd, I386_CC_E, 0); \
-           codegen_addxnullrefs(m, cd->mcodeptr); \
+           codegen_addxnullrefs(cd, cd->mcodeptr); \
        }
 
 #define gen_bound_check \
     if (checkbounds) { \
         i386_alu_membase_reg(cd, I386_CMP, s1, OFFSET(java_arrayheader, size), s2); \
         i386_jcc(cd, I386_CC_AE, 0); \
-        codegen_addxboundrefs(m, cd->mcodeptr, s2); \
+        codegen_addxboundrefs(cd, cd->mcodeptr, s2); \
     }
 
 #define gen_div_check(v) \
             i386_test_reg_reg(cd, src->regoff, src->regoff); \
         } \
         i386_jcc(cd, I386_CC_E, 0); \
-        codegen_addxdivrefs(m, cd->mcodeptr); \
+        codegen_addxdivrefs(cd, cd->mcodeptr); \
     }
 
 
 
 #define MCODECHECK(icnt) \
        if ((cd->mcodeptr + (icnt)) > (u1 *) cd->mcodeend) \
-        cd->mcodeptr = (u1 *) codegen_increase(m, cd->mcodeptr)
+        cd->mcodeptr = (u1 *) codegen_increase(cd, cd->mcodeptr)
+
+
+/* XXX Do we need code padding on i386? */
+/*  #define ALIGNCODENOP {if((int)((long)cd->mcodeptr&7)){M_NOP;}} */
+#define ALIGNCODENOP
 
 
 /* M_INTMOVE:
 
 
 #define M_COPY(from,to) \
-    d = reg_of_var(m, to, REG_ITMP1); \
+    d = reg_of_var(rd, to, REG_ITMP1); \
        if ((from->regoff != to->regoff) || \
            ((from->flags ^ to->flags) & INMEMORY)) { \
                if (IS_FLT_DBL_TYPE(from->type)) { \
@@ -493,7 +452,7 @@ typedef enum {
 
 /* function prototypes */
 
-void thread_restartcriticalsection(ucontext_t*);
+void thread_restartcriticalsection(ucontext_t *);
 
 #endif /* _CODEGEN_H */