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, ...@@ -1183,6 +1183,10 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
/*** Trampolines for Nested Functions ***/ /*** Trampolines for Nested Functions ***/
/* Output assembler code for a block containing the constant parts /* 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. of a trampoline, leaving space for the variable parts.
This block is placed on the stack and filled in. It is aligned 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, ...@@ -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). */ \ /* 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]); \ fprintf (FILE, "\tor\t %s,%s,0\n", reg_names[11], reg_names[1]); \
/* Locate this block; transfer to the next instruction. */ \ /* 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. */ \ /* 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, "\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]); \ 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, ...@@ -1927,7 +1932,7 @@ enum reg_class { NO_REGS, AP_REG, XRF_REGS, GENERAL_REGS, AGRF_REGS,
if (!flag_inhibit_size_directive) \ if (!flag_inhibit_size_directive) \
{ \ { \
char label[256]; \ char label[256]; \
static int labelno; \ static int labelno = 0; \
labelno++; \ labelno++; \
ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \ ASM_GENERATE_INTERNAL_LABEL (label, "Lfe", labelno); \
ASM_OUTPUT_INTERNAL_LABEL (FILE, "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