Commit 8f802bfb by David Edelsohn

ld/std typos and TARGET_32BIT usage

From-SVN: r11145
parent d52d8c9c
...@@ -2900,15 +2900,15 @@ output_prolog (file, size) ...@@ -2900,15 +2900,15 @@ output_prolog (file, size)
char *store_reg; char *store_reg;
char *load_reg; char *load_reg;
if (TARGET_64BIT) if (TARGET_32BIT)
{ {
store_reg = "\tstd %s,%d(%s)"; store_reg = "\t{st|stw} %s,%d(%s)\n";
load_reg = "\tlld %s,%d(%s)"; load_reg = "\t{l|lwz} %s,%d(%s)\n";
} }
else else
{ {
store_reg = "\t{st|stw} %s,%d(%s)\n"; store_reg = "\tstd %s,%d(%s)\n";
load_reg = "\t{l|lwz} %s,%d(%s)\n"; load_reg = "\tlld %s,%d(%s)\n";
} }
if (TARGET_DEBUG_STACK) if (TARGET_DEBUG_STACK)
...@@ -3009,7 +3009,7 @@ output_prolog (file, size) ...@@ -3009,7 +3009,7 @@ output_prolog (file, size)
{ {
if (info->total_size < 32767) if (info->total_size < 32767)
asm_fprintf (file, asm_fprintf (file,
(TARGET_64BIT) ? "\tstdu %s,%d(%s)\n" : "\t{stu|stwu} %s,%d(%s)\n", (TARGET_32BIT) ? "\t{stu|stwu} %s,%d(%s)\n" : "\tstdu %s,%d(%s)\n",
reg_names[1], - info->total_size, reg_names[1]); reg_names[1], - info->total_size, reg_names[1]);
else else
{ {
...@@ -3018,7 +3018,7 @@ output_prolog (file, size) ...@@ -3018,7 +3018,7 @@ output_prolog (file, size)
reg_names[0], (neg_size >> 16) & 0xffff, reg_names[0], (neg_size >> 16) & 0xffff,
reg_names[0], reg_names[0], neg_size & 0xffff); reg_names[0], reg_names[0], neg_size & 0xffff);
asm_fprintf (file, asm_fprintf (file,
(TARGET_64BIT) ? "\tstdux %s,%s,%s\n" : "\t{stux|stwux} %s,%s,%s\n", (TARGET_32BIT) ? "\t{stux|stwux} %s,%s,%s\n" : "\tstdux %s,%s,%s\n",
reg_names[1], reg_names[1], reg_names[0]); reg_names[1], reg_names[1], reg_names[0]);
} }
} }
...@@ -3093,7 +3093,7 @@ output_prolog (file, size) ...@@ -3093,7 +3093,7 @@ output_prolog (file, size)
ASM_OUTPUT_INTERNAL_LABEL (file, "LCF", rs6000_pic_labelno); ASM_OUTPUT_INTERNAL_LABEL (file, "LCF", rs6000_pic_labelno);
fprintf (file, "\tmflr %s\n", reg_names[30]); fprintf (file, "\tmflr %s\n", reg_names[30]);
asm_fprintf (file, TARGET_64BIT ? "\tld" : "\t{l|lwz}"); asm_fprintf (file, TARGET_32BIT ? "\t{l|lwz}" : "\tld");
fprintf (file, " %s,(", reg_names[0]); fprintf (file, " %s,(", reg_names[0]);
ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno); ASM_GENERATE_INTERNAL_LABEL (buf, "LCL", rs6000_pic_labelno);
assemble_name (file, buf); assemble_name (file, buf);
...@@ -3112,7 +3112,7 @@ output_prolog (file, size) ...@@ -3112,7 +3112,7 @@ output_prolog (file, size)
{ {
case ABI_V4: case ABI_V4:
case ABI_AIX_NODESC: case ABI_AIX_NODESC:
if (!TARGET_64BIT) if (TARGET_32BIT)
{ {
ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1); ASM_GENERATE_INTERNAL_LABEL (buf, "LCTOC", 1);
asm_fprintf (file, "\t{cau|addis} %s,%s,", reg_names[30], reg_names[0]); asm_fprintf (file, "\t{cau|addis} %s,%s,", reg_names[30], reg_names[0]);
...@@ -3161,7 +3161,7 @@ output_epilog (file, size) ...@@ -3161,7 +3161,7 @@ output_epilog (file, size)
int size; int size;
{ {
rs6000_stack_t *info = rs6000_stack_info (); rs6000_stack_t *info = rs6000_stack_info ();
char *load_reg = (TARGET_64BIT) ? "\tld %s,%d(%s)" : "\t{l|lwz} %s,%d(%s)\n"; char *load_reg = (TARGET_32BIT) ? "\t{l|lwz} %s,%d(%s)\n" : "\tld %s,%d(%s)\n";
rtx insn = get_last_insn (); rtx insn = get_last_insn ();
int i; int i;
...@@ -3206,7 +3206,7 @@ output_epilog (file, size) ...@@ -3206,7 +3206,7 @@ output_epilog (file, size)
{ {
int regno = info->first_gp_reg_save; int regno = info->first_gp_reg_save;
int loc = info->gp_save_offset; int loc = info->gp_save_offset;
int reg_size = (TARGET_64BIT) ? 8 : 4; int reg_size = (TARGET_32BIT) ? 4 : 8;
for ( ; regno < 32; regno++, loc += reg_size) for ( ; regno < 32; regno++, loc += reg_size)
asm_fprintf (file, load_reg, reg_names[regno], loc, reg_names[1]); asm_fprintf (file, load_reg, reg_names[regno], loc, reg_names[1]);
...@@ -3887,7 +3887,7 @@ rs6000_trampoline_template (file) ...@@ -3887,7 +3887,7 @@ rs6000_trampoline_template (file)
the address of the function, the second word is the TOC pointer (r2), the address of the function, the second word is the TOC pointer (r2),
and the third word is the static chain value. */ and the third word is the static chain value. */
case ABI_AIX: case ABI_AIX:
fprintf (file, "\t.long %s\n", (TARGET_64BIT) ? "0,0,0,0,0,0" : "0,0,0"); fprintf (file, "\t.long %s\n", (TARGET_32BIT) ? "0,0,0" : "0,0,0,0,0,0");
break; break;
...@@ -3898,20 +3898,7 @@ rs6000_trampoline_template (file) ...@@ -3898,20 +3898,7 @@ rs6000_trampoline_template (file)
if (STATIC_CHAIN_REGNUM == 0 || !TARGET_NEW_MNEMONICS) if (STATIC_CHAIN_REGNUM == 0 || !TARGET_NEW_MNEMONICS)
abort (); abort ();
if (TARGET_64BIT) if (TARGET_32BIT)
{
fprintf (file, "\tmflr %s\n", r0); /* offset 0 */
fprintf (file, "\tbl .LTRAMP1\n"); /* offset 4 */
fprintf (file, "\t.long 0,0,0,0\n"); /* offset 8 */
fprintf (file, ".LTRAMP1:\n");
fprintf (file, "\tmflr %s\n", sc); /* offset 28 */
fprintf (file, "\tmtlr %s\n", r0); /* offset 32 */
fprintf (file, "\tld %s,0(%s)\n", r0, sc); /* offset 36 */
fprintf (file, "\tld %s,8(%s)\n", sc, sc); /* offset 40 */
fprintf (file, "\tmtctr %s\n", r0); /* offset 44 */
fprintf (file, "\tbctr\n"); /* offset 48 */
}
else
{ {
fprintf (file, "\tmflr %s\n", r0); /* offset 0 */ fprintf (file, "\tmflr %s\n", r0); /* offset 0 */
fprintf (file, "\tbl .LTRAMP1\n"); /* offset 4 */ fprintf (file, "\tbl .LTRAMP1\n"); /* offset 4 */
...@@ -3924,6 +3911,19 @@ rs6000_trampoline_template (file) ...@@ -3924,6 +3911,19 @@ rs6000_trampoline_template (file)
fprintf (file, "\tmtctr %s\n", r0); /* offset 36 */ fprintf (file, "\tmtctr %s\n", r0); /* offset 36 */
fprintf (file, "\tbctr\n"); /* offset 40 */ fprintf (file, "\tbctr\n"); /* offset 40 */
} }
else
{
fprintf (file, "\tmflr %s\n", r0); /* offset 0 */
fprintf (file, "\tbl .LTRAMP1\n"); /* offset 4 */
fprintf (file, "\t.long 0,0,0,0\n"); /* offset 8 */
fprintf (file, ".LTRAMP1:\n");
fprintf (file, "\tmflr %s\n", sc); /* offset 28 */
fprintf (file, "\tmtlr %s\n", r0); /* offset 32 */
fprintf (file, "\tld %s,0(%s)\n", r0, sc); /* offset 36 */
fprintf (file, "\tld %s,8(%s)\n", sc, sc); /* offset 40 */
fprintf (file, "\tmtctr %s\n", r0); /* offset 44 */
fprintf (file, "\tbctr\n"); /* offset 48 */
}
break; break;
/* NT function pointers point to a two word area (real address, TOC) /* NT function pointers point to a two word area (real address, TOC)
...@@ -3964,12 +3964,12 @@ rs6000_trampoline_size () ...@@ -3964,12 +3964,12 @@ rs6000_trampoline_size ()
abort (); abort ();
case ABI_AIX: case ABI_AIX:
ret = (TARGET_64BIT) ? 24 : 12; ret = (TARGET_32BIT) ? 12 : 24;
break; break;
case ABI_V4: case ABI_V4:
case ABI_AIX_NODESC: case ABI_AIX_NODESC:
ret = (TARGET_64BIT ? 48 : 40); ret = (TARGET_32BIT ? 40 : 48);
break; break;
case ABI_NT: case ABI_NT:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment