Commit 2b4f149b by Richard Henderson Committed by Richard Henderson

ia64.h (FUNCTION_PROFILER): Move implementation ...

	* config/ia64/ia64.h (FUNCTION_PROFILER): Move implementation ...
        * config/ia64/ia64.c (ia64_output_function_profiler): ... here; add
        unwind markup.
        * config/ia64/ia64-protos.h (ia64_output_function_profiler): Declare.

From-SVN: r100774
parent fdeeef7f
2005-06-08 Richard Henderson <rth@redhat.com>
* config/ia64/ia64.h (FUNCTION_PROFILER): Move implementation ...
* config/ia64/ia64.c (ia64_output_function_profiler): ... here; add
unwind markup.
* config/ia64/ia64-protos.h (ia64_output_function_profiler): Declare.
2005-06-08 Joseph S. Myers <joseph@codesourcery.com> 2005-06-08 Joseph S. Myers <joseph@codesourcery.com>
* config/sol2-c.c (cmn_err_char_table): Allow width for %b * config/sol2-c.c (cmn_err_char_table): Allow width for %b
......
...@@ -113,3 +113,4 @@ extern enum direction ia64_hpux_function_arg_padding (enum machine_mode, tree); ...@@ -113,3 +113,4 @@ extern enum direction ia64_hpux_function_arg_padding (enum machine_mode, tree);
#endif /* ARGS_SIZE_RTX */ #endif /* ARGS_SIZE_RTX */
extern void ia64_hpux_handle_builtin_pragma (struct cpp_reader *); extern void ia64_hpux_handle_builtin_pragma (struct cpp_reader *);
extern void ia64_output_function_profiler (FILE *, int);
...@@ -8551,4 +8551,31 @@ ia64_vector_mode_supported_p (enum machine_mode mode) ...@@ -8551,4 +8551,31 @@ ia64_vector_mode_supported_p (enum machine_mode mode)
} }
} }
void
ia64_output_function_profiler (FILE *file, int labelno)
{
char buf[20];
ASM_GENERATE_INTERNAL_LABEL (buf, "LP", labelno);
if (TARGET_GNU_AS)
fputs ("\t.prologue 4, r40\n", file);
else
fputs ("\t.prologue\n\t.save ar.pfs, r40\n", file);
fputs ("\talloc out0 = ar.pfs, 8, 0, 4, 0\n", file);
fputs ("\t.save rp, r42\n", file);
fputs ("\tmov out2 = b0\n\t;;\n", file);
fputs ("\t.body\n", file);
if (TARGET_AUTO_PIC)
fputs ("\tmovl out3 = @gprel(", file);
else
fputs ("\taddl out3 = @ltoff(", file);
assemble_name (file, buf);
if (TARGET_AUTO_PIC)
fputs (")\n", file);
else
fputs ("), r1\n", file);
fputs ("\tmov out1 = r1\n", file);
fputs ("\tbr.call.sptk.many b0 = _mcount\n\t;;\n", file);
}
#include "gt-ia64.h" #include "gt-ia64.h"
...@@ -1265,24 +1265,8 @@ do { \ ...@@ -1265,24 +1265,8 @@ do { \
call the profiling subroutine `mcount'. */ call the profiling subroutine `mcount'. */
#undef FUNCTION_PROFILER #undef FUNCTION_PROFILER
#define FUNCTION_PROFILER(FILE, LABELNO) \ #define FUNCTION_PROFILER(FILE, LABELNO) \
do { \ ia64_output_function_profiler(FILE, LABELNO)
char buf[20]; \
ASM_GENERATE_INTERNAL_LABEL (buf, "LP", LABELNO); \
fputs ("\talloc out0 = ar.pfs, 8, 0, 4, 0\n", FILE); \
if (TARGET_AUTO_PIC) \
fputs ("\tmovl out3 = @gprel(", FILE); \
else \
fputs ("\taddl out3 = @ltoff(", FILE); \
assemble_name (FILE, buf); \
if (TARGET_AUTO_PIC) \
fputs (");;\n", FILE); \
else \
fputs ("), r1;;\n", FILE); \
fputs ("\tmov out1 = r1\n", FILE); \
fputs ("\tmov out2 = b0\n", FILE); \
fputs ("\tbr.call.sptk.many b0 = _mcount;;\n", FILE); \
} while (0)
/* Trampolines for Nested Functions. */ /* Trampolines for Nested Functions. */
......
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