* Removed all Id tags.
[cacao.git] / src / vm / jit / sparc64 / md-abi.h
index 5564b21aac1e6ccc7e9ee34dfdf574912695a0d4..1e0c91292c25f4ad9638768b14e5c60b3ebb678f 100644 (file)
@@ -28,8 +28,6 @@
 
    Changes:
 
-   $Id: md-abi.h 4357 2006-01-22 23:33:38Z twisti $
-
 */
 
 #ifndef _MD_ABI_H
@@ -69,7 +67,7 @@
 #define REG_OUT2        10
 #define REG_OUT3        11
 #define REG_OUT4        12
-#define REG_OUT5        13
+#define REG_OUT5        13   /* available only when doing a C-call            */
 
 /* floating point registers */
 /* only using the lower half of the floating registers for now */
 
 #define REG_IFTMP        1   /* temporary integer and floating point register */
 
+#define REG_F0           0
+
 
 #define INT_REG_CNT     32   /* number of integer registers                   */
-#define INT_SAV_CNT     12   /* number of int callee saved registers          */
+#define INT_SAV_CNT     13   /* number of int callee saved registers          */
 #define INT_ARG_CNT      5   /* number of int argument registers (-1 for PV)  */
 #define INT_TMP_CNT      0   /* int temp registers (%g4-%g5)                  */
 #define INT_RES_CNT     14   /* number of reserved integer registers          */
@@ -93,8 +93,8 @@
 
 #define FLT_REG_CNT     16   /* number of float registers                     */
 #define FLT_SAV_CNT      0   /* number of flt callee saved registers          */
-#define FLT_ARG_CNT      4   /* number of flt argument registers              */
-#define FLT_TMP_CNT      8   /* number of flt temp registers                  */
+#define FLT_ARG_CNT      5   /* number of flt argument registers              */
+#define FLT_TMP_CNT      7   /* number of flt temp registers                  */
 #define FLT_RES_CNT      3   /* number of reserved float registers            */
                              /* the one "missing" register is the return reg  */
                              
 #define INT_NATARG_CNT   6
 #define FLT_NATARG_CNT  16
 
-#define TRACE_ARGS_NUM   5
+#define TRACE_ARGS_NUM   6
 
 /* helpers for stack addressing and window handling */
 
+#define BIAS          2047    /* SPARC V9: stack @ address SP + BIAS           */
+
 /* SPARC ABI always wants argument slots on the stack, even when not used */
-#define ABI_PARAMARRAY_SLOTS    6
 
 #define WINSAVE_CNT     16    /* number of regs that SPARC saves onto stack    */
-#define ABICALL_OFF     22    /* 8-byte slots for save regs and arg slots      */
-#define BIAS          2047
-#define USESTACK      (WINSAVE_CNT * 8 + BIAS)
-#define USESTACK_PARAMS ((WINSAVE_CNT + ABI_PARAMARRAY_SLOTS) * 8 + BIAS)
+#define ABIPARAMS_CNT    6    /* param slots the ABI always requires on stack  */
+
+#define JITSTACK_CNT    (WINSAVE_CNT + ABIPARAMS_CNT)
+#define CSTACK_CNT      (WINSAVE_CNT + ABIPARAMS_CNT)
+
+#define JITSTACK        ((JITSTACK_CNT) * 8 + BIAS)
+#define CSTACK          ((CSTACK_CNT) * 8 + BIAS)
 
 
 
-/* applies only when caller's window was saved */
+/* applies when the caller's window was saved */
 #define REG_WINDOW_TRANSPOSE(reg) \
        (reg + 16)