/*** 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
/* 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]); \
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); \