Commit e6e1cf4c by John Hassey

(TRAMPOLINE_TEMPLATE): Fixed invalid bsr insn.

From-SVN: r4412
parent 600ceaa9
......@@ -1183,6 +1183,10 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
/*** Trampolines for Nested Functions ***/
/* Output assembler code for a block containing the constant parts
char buf[256]; \
static int labelno = 0; \
labelno++; \
ASM_GENERATE_INTERNAL_LABEL (buf, "LTRMP", labelno); \
of a trampoline, leaving space for the variable parts.
This block is placed on the stack and filled in. It is aligned
......@@ -1197,7 +1201,8 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
/* Save the return address (r1) in the static chain reg (r11). */ \
fprintf (FILE, "\tor\t %s,%s,0\n", reg_names[11], reg_names[1]); \
/* Locate this block; transfer to the next instruction. */ \
fprintf (FILE, "\tbsr\t 1\n"); \
fprintf (FILE, "\tbsr\t %s\n", &buf[1]); \
ASM_OUTPUT_INTERNAL_LABEL (FILE, "LTRMP", labelno); \
/* Save r10; use it as the relative pointer; restore r1. */ \
fprintf (FILE, "\tst\t %s,%s,24\n", reg_names[10], reg_names[1]); \
fprintf (FILE, "\tor\t %s,%s,0\n", reg_names[10], reg_names[1]); \
......@@ -1927,7 +1932,7 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
if (!flag_inhibit_size_directive) \
{ \
char label[256]; \
static int labelno; \
static int labelno = 0; \
labelno++; \
ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
ASM_OUTPUT_INTERNAL_LABEL (FILE, "Lfe", labelno); \
......
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