Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: disass.c 7252 2007-01-29 21:09:01Z twisti $
+ $Id: disass.c 7351 2007-02-13 21:32:36Z twisti $
*/
break;
case ITYPE_IMM: /* 16 bit signed immediate value */
- printf("%s %s,%s,%d\n", ops[op].name, regs[rt],
- regs[rs], (c << 16) >> 16);
+ printf("%s %s,%s,%d\n", ops[op].name, abi_registers_integer_name[rt],
+ abi_registers_integer_name[rs], (c << 16) >> 16);
break;
case ITYPE_MEM: /* 16 bit signed memory offset */
- printf("%s %s,%d(%s)\n", ops[op].name, regs[rt],
- (c << 16) >> 16, regs[rs]);
+ printf("%s %s,%d(%s)\n", ops[op].name, abi_registers_integer_name[rt],
+ (c << 16) >> 16, abi_registers_integer_name[rs]);
break;
case ITYPE_FMEM: /* 16 bit signed memory offset */
- printf("%s $f%d,%d(%s)\n", ops[op].name, rt, (c << 16) >> 16, regs[rs]);
+ printf("%s $f%d,%d(%s)\n", ops[op].name, rt, (c << 16) >> 16,
+ abi_registers_integer_name[rs]);
break;
case ITYPE_BRA: /* 16 bit signed branch offset */
break;
}
#if SIZEOF_VOID_P == 8
- printf("%s %s,%s,0x%016lx\n", ops[op].name, regs[rs], regs[rt],
+ printf("%s %s,%s,0x%016lx\n", ops[op].name,
+ abi_registers_integer_name[rs],
+ abi_registers_integer_name[rt],
(u8) code + 4 + ((c << 16) >> 14));
#else
- printf("%s %s,%s,0x%08x\n", ops[op].name, regs[rs], regs[rt],
+ printf("%s %s,%s,0x%08x\n", ops[op].name,
+ abi_registers_integer_name[rs],
+ abi_registers_integer_name[rt],
(u4) code + 4 + ((c << 16) >> 14));
#endif
break;
case ITYPE_RIMM:
if (regimms[rt].ftype == ITYPE_IMM)
- printf("%s %s,%d\n", regimms[rt].name, regs[rs], (c << 16) >> 16);
+ printf("%s %s,%d\n", regimms[rt].name,
+ abi_registers_integer_name[rs], (c << 16) >> 16);
else if (regimms[rt].ftype == ITYPE_BRA)
#if SIZEOF_VOID_P == 8
- printf("%s %s,0x%016lx\n", regimms[rt].name, regs[rs],
+ printf("%s %s,0x%016lx\n", regimms[rt].name,
+ abi_registers_integer_name[rs],
(u8) code + 4 + ((c << 16) >> 14));
#else
- printf("%s %s,0x%08x\n", regimms[rt].name, regs[rs],
+ printf("%s %s,0x%08x\n", regimms[rt].name,
+ abi_registers_integer_name[rs],
(u4) code + 4 + ((c << 16) >> 14));
#endif
else
}
if (opfun == 0x25 && rt == 0) {
if (rs == 0)
- printf("clr %s\n", regs[rd]);
+ printf("clr %s\n", abi_registers_integer_name[rd]);
else
- printf("move %s,%s\n", regs[rd], regs[rs]);
+ printf("move %s,%s\n", abi_registers_integer_name[rd],
+ abi_registers_integer_name[rs]);
break;
}
switch (regops[opfun].ftype) {
case ITYPE_OP:
- printf("%s %s,%s,%s\n", regops[opfun].name, regs[rd],
- regs[rs], regs[rt]);
+ printf("%s %s,%s,%s\n", regops[opfun].name,
+ abi_registers_integer_name[rd],
+ abi_registers_integer_name[rs],
+ abi_registers_integer_name[rt]);
break;
case ITYPE_IMM: /* immediate instruction */
printf("%s %s,%s,%d\n",
- regops[opfun].name, regs[rd], regs[rt], shift);
+ regops[opfun].name, abi_registers_integer_name[rd],
+ abi_registers_integer_name[rt], shift);
break;
case ITYPE_TRAP:
printf("%s %s,%s,%d\n", regops[opfun].name,
- regs[rs], regs[rt], (c << 16) >> 22);
+ abi_registers_integer_name[rs],
+ abi_registers_integer_name[rt], (c << 16) >> 22);
break;
case ITYPE_DIVMUL: /* div/mul instruction */
- printf("%s %s,%s\n", regops[opfun].name, regs[rs], regs[rt]);
+ printf("%s %s,%s\n", regops[opfun].name,
+ abi_registers_integer_name[rs],
+ abi_registers_integer_name[rt]);
break;
case ITYPE_JMP:
if (rd == 31) {
- printf("%s %s\n", regops[opfun].name, regs[rs]);
+ printf("%s %s\n", regops[opfun].name,
+ abi_registers_integer_name[rs]);
break;
}
- printf("%s %s,%s\n", regops[opfun].name, regs[rd], regs[rs]);
+ printf("%s %s,%s\n", regops[opfun].name,
+ abi_registers_integer_name[rd],
+ abi_registers_integer_name[rs]);
break;
case ITYPE_MTOJR:
if (opfun == 8 && rs == 31) {
printf("ret\n");
break;
}
- printf("%s %s\n", regops[opfun].name, regs[rs]);
+ printf("%s %s\n", regops[opfun].name,
+ abi_registers_integer_name[rs]);
break;
case ITYPE_MFROM:
- printf("%s %s\n", regops[opfun].name, regs[rd]);
+ printf("%s %s\n", regops[opfun].name,
+ abi_registers_integer_name[rd]);
break;
case ITYPE_SYS:
printf("%s\n", regops[opfun].name);
}
if (rs == 0) { /* move from */
- printf("mfc1 %s,$f%d\n", regs[rt], fs);
+ printf("mfc1 %s,$f%d\n", abi_registers_integer_name[rt], fs);
break;
}
if (rs == 1) { /* double move from */
- printf("dmfc1 %s,$f%d\n", regs[rt], fs);
+ printf("dmfc1 %s,$f%d\n", abi_registers_integer_name[rt], fs);
break;
}
if (rs == 4) { /* move to */
- printf("mtc1 %s,$f%d\n", regs[rt], fs);
+ printf("mtc1 %s,$f%d\n", abi_registers_integer_name[rt], fs);
break;
}
if (rs == 5) { /* double move to */
- printf("dmtc1 %s,$f%d\n", regs[rt], fs);
+ printf("dmtc1 %s,$f%d\n", abi_registers_integer_name[rt], fs);
break;
}
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- $Id: md-abi.c 7252 2007-01-29 21:09:01Z twisti $
+ $Id: md-abi.c 7351 2007-02-13 21:32:36Z twisti $
*/
REG_END
};
-char *regs[] = {
+const char *abi_registers_integer_name[] = {
"zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
"a4", "a5", "a6", "a7", "t0", "t1", "t2", "t3",
"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
REG_END
};
-char *regs[] = {
+const char *abi_registers_integer_name[] = {
"zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
"a4", "a5", "a6", "a7", "t0", "t1", "t2", "t3",
"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
/* md_param_alloc **************************************************************
- XXX
+ Pre-allocate arguments according to the internal JIT ABI.
*******************************************************************************/
}
+/* md_param_alloc_native *******************************************************
+
+ Pre-allocate arguments according the native ABI.
+
+*******************************************************************************/
+
+void md_param_alloc_native(methoddesc *md)
+{
+ /* On MIPS we use the same ABI for JIT method calls as for native
+ method calls. */
+
+ md_param_alloc(md);
+}
+
+
/* md_return_alloc *************************************************************
Precolor the Java Stackelement containing the Return Value. Since