* Removed all Id tags.
[cacao.git] / src / vm / jit / i386 / md-abi.c
index c171e7f5ef3ce0ef8e951df5e9b6a57476f02650..71f99b0b8d573151547282d80e33a9c01a18730c 100644 (file)
@@ -22,8 +22,6 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: md-abi.c 7705 2007-04-15 12:15:01Z michi $
-
 */
 
 
@@ -51,17 +49,17 @@ const char *abi_registers_integer_name[] = {
 };
 
 const s4 abi_registers_integer_argument[] = {
-       /* empty */
+       -1,
 };
 
 const s4 abi_registers_integer_saved[] = {
-       5,  /* s0 */
-       6,  /* s1 */
-       7,  /* s2 */
+       5, /* s0 */
+       6, /* s1 */
+       7, /* s2 */
 };
 
 const s4 abi_registers_integer_temporary[] = {
-       3,  /* t0 */
+       3, /* t0 */
 };
 
 
@@ -73,6 +71,18 @@ s4 nregdescfloat[] = {
     REG_END
 };
 
+const s4 abi_registers_float_argument[] = {
+       -1,
+};
+
+const s4 abi_registers_float_saved[] = {
+       -1,
+};
+
+const s4 abi_registers_float_temporary[] = {
+       -1,
+};
+
 
 /* md_param_alloc **************************************************************
 
@@ -94,19 +104,20 @@ s4 nregdescfloat[] = {
 void md_param_alloc(methoddesc *md)
 {
        paramdesc *pd;
-       s4        stacksize;
-       s4        i;
+       int        stacksize;
+       int        i;
 
        pd = md->params;
        stacksize = 0;
 
        for (i = 0; i < md->paramcount; i++, pd++) {
                pd->inmemory = true;
-               pd->regoff = stacksize;
-               stacksize += IS_2_WORD_TYPE(md->paramtypes[i].type) ? 2 : 1;
+               pd->index    = stacksize;
+               pd->regoff   = stacksize * 8;
+               stacksize++;
        }
 
-       md->memuse = stacksize;
+       md->memuse       = stacksize;
        md->argintreguse = 0;
        md->argfltreguse = 0;
 }
@@ -120,10 +131,23 @@ void md_param_alloc(methoddesc *md)
 
 void md_param_alloc_native(methoddesc *md)
 {
-       /* On i386 we use the same ABI for JIT method calls as for native
-          method calls. */
+       paramdesc *pd;
+       int        stacksize;
+       int        i;
 
-       md_param_alloc(md);
+       pd = md->params;
+       stacksize = 0;
+
+       for (i = 0; i < md->paramcount; i++, pd++) {
+               pd->inmemory  = true;
+               pd->index     = stacksize;
+               pd->regoff    = stacksize * 4;
+               stacksize    += IS_2_WORD_TYPE(md->paramtypes[i].type) ? 2 : 1;
+       }
+
+       md->memuse       = stacksize;
+       md->argintreguse = 0;
+       md->argfltreguse = 0;
 }