Commit 6f334f44 by Doug Evans

sparc.h (FUNCTION_PROFILER): Save/restore %g2 around call to mcount.

	* sparc/sparc.h (FUNCTION_PROFILER): Save/restore %g2 around call
	to mcount.

From-SVN: r11644
parent 0a78e862
...@@ -1657,10 +1657,17 @@ extern int leaf_function; ...@@ -1657,10 +1657,17 @@ extern int leaf_function;
: output_function_prologue (FILE, SIZE, leaf_function)) : output_function_prologue (FILE, SIZE, leaf_function))
/* Output assembler code to FILE to increment profiler label # LABELNO /* Output assembler code to FILE to increment profiler label # LABELNO
for profiling a function entry. */ for profiling a function entry.
32 bit sparc uses %g2 as the STATIC_CHAIN_REGNUM which gets clobbered
during profiling so we need to save/restore it around the call to mcount.
We're guaranteed that a save has just been done, and we use the space
allocated for intreg/fpreg value passing. */
#define FUNCTION_PROFILER(FILE, LABELNO) \ #define FUNCTION_PROFILER(FILE, LABELNO) \
do { \ do { \
if (! TARGET_ARCH64) \
fputs ("\tst %g2,[%fp-4]\n", FILE); \
fputs ("\tsethi %hi(", (FILE)); \ fputs ("\tsethi %hi(", (FILE)); \
ASM_OUTPUT_INTERNAL_LABELREF (FILE, "LP", LABELNO); \ ASM_OUTPUT_INTERNAL_LABELREF (FILE, "LP", LABELNO); \
fputs ("),%o0\n", (FILE)); \ fputs ("),%o0\n", (FILE)); \
...@@ -1670,9 +1677,10 @@ extern int leaf_function; ...@@ -1670,9 +1677,10 @@ extern int leaf_function;
fputs ("\tcall mcount\n\tadd %lo(", (FILE)); \ fputs ("\tcall mcount\n\tadd %lo(", (FILE)); \
ASM_OUTPUT_INTERNAL_LABELREF (FILE, "LP", LABELNO); \ ASM_OUTPUT_INTERNAL_LABELREF (FILE, "LP", LABELNO); \
fputs ("),%o0,%o0\n", (FILE)); \ fputs ("),%o0,%o0\n", (FILE)); \
if (! TARGET_ARCH64) \
fputs ("\tld [%fp-4],%g2\n", FILE); \
} while (0) } while (0)
/* There are three profiling modes for basic blocks available. /* There are three profiling modes for basic blocks available.
The modes are selected at compile time by using the options The modes are selected at compile time by using the options
-a or -ax of the gnu compiler. -a or -ax of the gnu compiler.
......
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