Author: zoltan
Date: 2008-02-08 09:29:08 -0500 (Fri, 08 Feb 2008)
New Revision: 95255
Modified:
trunk/mono/mono/mini/ChangeLog
trunk/mono/mono/mini/mini-arm.c
Log:
2008-02-08 Zoltan Varga <[EMAIL PROTECTED]>
* mini-arm.c (mono_arch_output_basic_block): Fix the ordering of
arguments for
some load/store opcodes so they are consistent.
(mono_arch_emit_prolog): Simplify some code.
Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog 2008-02-08 14:28:06 UTC (rev 95254)
+++ trunk/mono/mono/mini/ChangeLog 2008-02-08 14:29:08 UTC (rev 95255)
@@ -1,5 +1,9 @@
2008-02-08 Zoltan Varga <[EMAIL PROTECTED]>
+ * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of
arguments for
+ some load/store opcodes so they are consistent.
+ (mono_arch_emit_prolog): Simplify some code.
+
* aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
* objects.cs: Add tests for large argument offsets on ARM.
Modified: trunk/mono/mono/mini/mini-arm.c
===================================================================
--- trunk/mono/mono/mini/mini-arm.c 2008-02-08 14:28:06 UTC (rev 95254)
+++ trunk/mono/mono/mini/mini-arm.c 2008-02-08 14:29:08 UTC (rev 95255)
@@ -2108,8 +2108,7 @@
ARM_STRB_REG_REG (code, ins->sreg1,
ins->inst_destbasereg, ins->sreg2);
break;
case OP_STOREI2_MEMINDEX:
- /* note: the args are reversed in the macro */
- ARM_STRH_REG_REG (code, ins->inst_destbasereg,
ins->sreg1, ins->sreg2);
+ ARM_STRH_REG_REG (code, ins->sreg1,
ins->inst_destbasereg, ins->sreg2);
break;
case OP_STORE_MEMINDEX:
case OP_STOREI4_MEMINDEX:
@@ -2124,19 +2123,16 @@
ARM_LDR_REG_REG (code, ins->dreg, ins->inst_basereg,
ins->sreg2);
break;
case OP_LOADI1_MEMINDEX:
- /* note: the args are reversed in the macro */
- ARM_LDRSB_REG_REG (code, ins->inst_basereg, ins->dreg,
ins->sreg2);
+ ARM_LDRSB_REG_REG (code, ins->dreg, ins->inst_basereg,
ins->sreg2);
break;
case OP_LOADU1_MEMINDEX:
ARM_LDRB_REG_REG (code, ins->dreg, ins->inst_basereg,
ins->sreg2);
break;
case OP_LOADI2_MEMINDEX:
- /* note: the args are reversed in the macro */
- ARM_LDRSH_REG_REG (code, ins->inst_basereg, ins->dreg,
ins->sreg2);
+ ARM_LDRSH_REG_REG (code, ins->dreg, ins->inst_basereg,
ins->sreg2);
break;
case OP_LOADU2_MEMINDEX:
- /* note: the args are reversed in the macro */
- ARM_LDRH_REG_REG (code, ins->inst_basereg, ins->dreg,
ins->sreg2);
+ ARM_LDRH_REG_REG (code, ins->dreg, ins->inst_basereg,
ins->sreg2);
break;
case OP_LOAD_MEMBASE:
case OP_LOADI4_MEMBASE:
@@ -3289,8 +3285,7 @@
ARM_STRH_IMM (code, ainfo->reg,
inst->inst_basereg, inst->inst_offset);
} else {
code = mono_arm_emit_load_imm
(code, ARMREG_IP, inst->inst_offset);
- /* note: the args are reversed
in the macro */
- ARM_STRH_REG_REG (code,
inst->inst_basereg, ainfo->reg, ARMREG_IP);
+ ARM_STRH_REG_REG (code,
ainfo->reg, inst->inst_basereg, ARMREG_IP);
}
break;
case 8:
@@ -3328,8 +3323,7 @@
ARM_STRB_IMM (code, ARMREG_LR,
inst->inst_basereg, inst->inst_offset);
} else {
code = mono_arm_emit_load_imm
(code, ARMREG_IP, inst->inst_offset);
- ARM_ADD_REG_REG (code,
ARMREG_IP, ARMREG_IP, inst->inst_basereg);
- ARM_STRB_IMM (code, ARMREG_LR,
ARMREG_IP, 0);
+ ARM_STRB_REG_REG (code,
ARMREG_LR, inst->inst_basereg, ARMREG_IP);
}
break;
case 2:
@@ -3337,8 +3331,7 @@
ARM_STRH_IMM (code, ARMREG_LR,
inst->inst_basereg, inst->inst_offset);
} else {
code = mono_arm_emit_load_imm
(code, ARMREG_IP, inst->inst_offset);
- ARM_ADD_REG_REG (code,
ARMREG_IP, ARMREG_IP, inst->inst_basereg);
- ARM_STRH_IMM (code, ARMREG_LR,
ARMREG_IP, 0);
+ ARM_STRH_REG_REG (code,
ARMREG_LR, inst->inst_basereg, ARMREG_IP);
}
break;
case 8:
@@ -3346,22 +3339,19 @@
ARM_STR_IMM (code, ARMREG_LR,
inst->inst_basereg, inst->inst_offset);
} else {
code = mono_arm_emit_load_imm
(code, ARMREG_IP, inst->inst_offset);
- ARM_ADD_REG_REG (code,
ARMREG_IP, ARMREG_IP, inst->inst_basereg);
- ARM_STR_IMM (code, ARMREG_LR,
ARMREG_IP, 0);
+ ARM_STR_REG_REG (code,
ARMREG_LR, inst->inst_basereg, ARMREG_IP);
}
if (arm_is_imm12 (prev_sp_offset +
ainfo->offset + 4)) {
ARM_LDR_IMM (code, ARMREG_LR,
ARMREG_SP, (prev_sp_offset + ainfo->offset + 4));
} else {
code = mono_arm_emit_load_imm
(code, ARMREG_IP, prev_sp_offset + ainfo->offset + 4);
- ARM_ADD_REG_REG (code,
ARMREG_IP, ARMREG_IP, ARMREG_SP);
- ARM_LDR_IMM (code, ARMREG_LR,
ARMREG_IP, 0);
+ ARM_LDR_REG_REG (code,
ARMREG_LR, ARMREG_SP, ARMREG_IP);
}
if (arm_is_imm12 (inst->inst_offset +
4)) {
ARM_STR_IMM (code, ARMREG_LR,
inst->inst_basereg, inst->inst_offset + 4);
} else {
code = mono_arm_emit_load_imm
(code, ARMREG_IP, inst->inst_offset + 4);
- ARM_ADD_REG_REG (code,
ARMREG_IP, ARMREG_IP, inst->inst_basereg);
- ARM_STR_IMM (code, ARMREG_LR,
ARMREG_IP, 0);
+ ARM_STR_REG_REG (code,
ARMREG_LR, inst->inst_basereg, ARMREG_IP);
}
break;
default:
@@ -3369,8 +3359,7 @@
ARM_STR_IMM (code, ARMREG_LR,
inst->inst_basereg, inst->inst_offset);
} else {
code = mono_arm_emit_load_imm
(code, ARMREG_IP, inst->inst_offset);
- ARM_ADD_REG_REG (code,
ARMREG_IP, ARMREG_IP, inst->inst_basereg);
- ARM_STR_IMM (code, ARMREG_LR,
ARMREG_IP, 0);
+ ARM_STR_REG_REG (code,
ARMREG_LR, inst->inst_basereg, ARMREG_IP);
}
break;
}
@@ -3388,8 +3377,7 @@
ARM_STR_IMM (code, ainfo->reg +
cur_reg, inst->inst_basereg, doffset);
} else {
code = mono_arm_emit_load_imm
(code, ARMREG_IP, doffset);
- ARM_ADD_REG_REG (code,
ARMREG_IP, ARMREG_IP, inst->inst_basereg);
- ARM_STR_IMM (code, ainfo->reg +
cur_reg, ARMREG_IP, 0);
+ ARM_STR_REG_REG (code,
ainfo->reg + cur_reg, inst->inst_basereg, ARMREG_IP);
}
soffset += sizeof (gpointer);
doffset += sizeof (gpointer);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches