if (GET_CODE (op) == SYMBOL_REF)
return (SMALL_NAME_P (XSTR (op, 0))
|| (TARGET_ADDR24
- && CONSTANT_POOL_ADDRESS_P (op)));
+ && (CONSTANT_POOL_ADDRESS_P (op)
+ || LIT_NAME_P (XSTR (op, 0)))));
if (GET_CODE (op) == CONST
&& GET_CODE (XEXP (op, 0)) == PLUS
rtx sym = XEXP (XEXP (op, 0), 0);
return (SMALL_NAME_P (XSTR (sym, 0))
|| (TARGET_ADDR24
- && CONSTANT_POOL_ADDRESS_P (op)));
+ && (CONSTANT_POOL_ADDRESS_P (op)
+ || LIT_NAME_P (XSTR (op, 0)))));
}
return 0;
#if 1
/* Allocate space for register arguments if this is a variadic function. */
if (current_frame_info.pretend_size != 0)
- fprintf (file, "\taddi %s,%d\n",
- sp_str, -current_frame_info.pretend_size);
+ fprintf (file, "\taddi %s,%s%d\n",
+ sp_str, IMMEDIATE_PREFIX,
+ -current_frame_info.pretend_size);
#else
/* If there are unnamed args in registers, save them. */
if (current_function_stdarg || current_function_varargs)
{
int i;
- fprintf (file, "\taddi %s,%d\n",
- sp_str, - M32R_MAX_PARM_REGS * UNITS_PER_WORD);
+ fprintf (file, "\taddi %s,%s%d\n",
+ sp_str, IMMEDIATE_PREFIX,
+ - M32R_MAX_PARM_REGS * UNITS_PER_WORD);
for (i = 0; i < M32R_MAX_PARM_REGS; ++i)
fprintf (file, "\tst %s,@(sp,%d)\n",
reg_names[i], i * UNITS_PER_WORD);
if (frame_size == 0)
; /* nothing to do */
else if (frame_size <= 128)
- fprintf (file, "\taddi %s,%d\n",
- sp_str, -frame_size);
+ fprintf (file, "\taddi %s,%s%d\n",
+ sp_str, IMMEDIATE_PREFIX, -frame_size);
else if (frame_size <= 32768)
- fprintf (file, "\tadd3 %s,%s,%d\n",
- sp_str, sp_str, -frame_size);
+ fprintf (file, "\tadd3 %s,%s,%s%d\n",
+ sp_str, sp_str, IMMEDIATE_PREFIX, -frame_size);
else
- fprintf (file, "\tld24 %s,%d\n\tsub %s,%s\n",
- reg_names[PROLOGUE_TMP_REGNUM], frame_size,
+ fprintf (file, "\tld24 %s,%s%d\n\tsub %s,%s\n",
+ reg_names[PROLOGUE_TMP_REGNUM],
+ IMMEDIATE_PREFIX, frame_size,
sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
if (frame_pointer_needed)
unsigned int reg_offset = var_size + args_size;
if (reg_offset == 0)
; /* nothing to do */
+ else if (reg_offset < 128)
+ fprintf (file, "\taddi %s,%s%d\n",
+ sp_str, IMMEDIATE_PREFIX, reg_offset);
else if (reg_offset < 32768)
- fprintf (file, "\tadd3 %s,%s,%d\n",
- sp_str, sp_str, reg_offset);
+ fprintf (file, "\tadd3 %s,%s,%s%d\n",
+ sp_str, sp_str, IMMEDIATE_PREFIX, reg_offset);
else
- fprintf (file, "\tld24 %s,%d\n\tadd %s,%s\n",
- reg_names[PROLOGUE_TMP_REGNUM], reg_offset,
+ fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n",
+ reg_names[PROLOGUE_TMP_REGNUM],
+ IMMEDIATE_PREFIX, reg_offset,
sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
}
else if (frame_pointer_needed)
if (reg_offset == 0)
fprintf (file, "\tmv %s,%s\n", sp_str, fp_str);
else if (reg_offset < 32768)
- fprintf (file, "\tadd3 %s,%s,%d\n",
- sp_str, fp_str, reg_offset);
+ fprintf (file, "\tadd3 %s,%s,%s%d\n",
+ sp_str, fp_str, IMMEDIATE_PREFIX, reg_offset);
else
- fprintf (file, "\tld24 %s,%d\n\tadd %s,%s\n",
- reg_names[PROLOGUE_TMP_REGNUM], reg_offset,
+ fprintf (file, "\tld24 %s,%s%d\n\tadd %s,%s\n",
+ reg_names[PROLOGUE_TMP_REGNUM],
+ IMMEDIATE_PREFIX, reg_offset,
sp_str, reg_names[PROLOGUE_TMP_REGNUM]);
}
else
/* Remove varargs area if present. */
if (current_frame_info.pretend_size != 0)
- fprintf (file, "\taddi %s,%d\n",
- sp_str, current_frame_info.pretend_size);
+ fprintf (file, "\taddi %s,%s%d\n",
+ sp_str, IMMEDIATE_PREFIX, current_frame_info.pretend_size);
/* Emit the return instruction. */
if (M32R_INTERRUPT_P (fn_type))