mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-05 21:27:26 +08:00
Remove assembler dialect dependencies.
From-SVN: r26776
This commit is contained in:
parent
9ba051d33e
commit
afef3d7a1b
@ -1,3 +1,13 @@
|
||||
Wed May 5 07:40:02 1999 Nick Clifton <nickc@cygnus.com>
|
||||
|
||||
Patch from: Nick Burrett <nick.burrett@btinternet.com>
|
||||
* config/arm/arm.h (ARM_MCOUNT_NAME): Define.
|
||||
(FUNCTION_PROFILER): Remove assembler dialect dependency and use
|
||||
ARM_MCOUNT_NAME.
|
||||
(TRAMPOLINE_TEMPLATE): Remove assembler dialect dependency.
|
||||
|
||||
* config/arm/aof.h (ARM_MCOUNT_NAME): Define.
|
||||
|
||||
1999-05-05 09:58 -0400 Zack Weinberg <zack@rabi.columbia.edu>
|
||||
|
||||
* gcc.c (default_compilers): Fix brace nesting bug.
|
||||
|
@ -420,6 +420,9 @@ do { \
|
||||
#define USER_LABEL_PREFIX ""
|
||||
#define LOCAL_LABEL_PREFIX ""
|
||||
|
||||
/* AOF does not prefix user function names with an underscore. */
|
||||
#define ARM_MCOUNT_NAME "_mcount"
|
||||
|
||||
/* Output of Dispatch Tables */
|
||||
|
||||
#define ASM_OUTPUT_ADDR_DIFF_ELT(STREAM,BODY,VALUE,REL) \
|
||||
|
@ -1133,15 +1133,42 @@ do { \
|
||||
#define FUNCTION_PROLOGUE(STREAM, SIZE) \
|
||||
output_func_prologue ((STREAM), (SIZE))
|
||||
|
||||
/* Call the function profiler with a given profile label. The Acorn compiler
|
||||
puts this BEFORE the prolog but gcc puts it afterwards. The ``mov ip,lr''
|
||||
seems like a good idea to stick with cc convention. ``prof'' doesn't seem
|
||||
to mind about this! */
|
||||
/* If your target environment doesn't prefix user functions with an
|
||||
underscore, you may wish to re-define this to prevent any conflicts.
|
||||
e.g. AOF may prefix mcount with an underscore. */
|
||||
#ifndef ARM_MCOUNT_NAME
|
||||
#define ARM_MCOUNT_NAME "*mcount"
|
||||
#endif
|
||||
|
||||
/* Call the function profiler with a given profile label. The Acorn
|
||||
compiler puts this BEFORE the prolog but gcc puts it afterwards.
|
||||
On the ARM the full profile code will look like:
|
||||
.data
|
||||
LP1
|
||||
.word 0
|
||||
.text
|
||||
mov ip, lr
|
||||
bl mcount
|
||||
.word LP1
|
||||
|
||||
profile_function() in final.c outputs the .data section, FUNCTION_PROFILER
|
||||
will output the .text section.
|
||||
|
||||
The ``mov ip,lr'' seems like a good idea to stick with cc convention.
|
||||
``prof'' doesn't seem to mind about this! */
|
||||
#define FUNCTION_PROFILER(STREAM,LABELNO) \
|
||||
{ \
|
||||
fprintf(STREAM, "\tmov\t%sip, %slr\n", REGISTER_PREFIX, REGISTER_PREFIX); \
|
||||
fprintf(STREAM, "\tbl\tmcount\n"); \
|
||||
fprintf(STREAM, "\t.word\tLP%d\n", (LABELNO)); \
|
||||
char temp[20]; \
|
||||
rtx sym; \
|
||||
\
|
||||
fprintf ((STREAM), "\tmov\t%s%s, %s%s\n\tbl\t", \
|
||||
REGISTER_PREFIX, reg_names[12] /* ip */, \
|
||||
REGISTER_PREFIX, reg_names[14] /* lr */); \
|
||||
assemble_name ((STREAM), ARM_MCOUNT_NAME); \
|
||||
fputc ('\n', (STREAM)); \
|
||||
ASM_GENERATE_INTERNAL_LABEL (temp, "LP", (LABELNO)); \
|
||||
sym = gen_rtx (SYMBOL_REF, Pmode, temp); \
|
||||
ASM_OUTPUT_INT ((STREAM), sym); \
|
||||
}
|
||||
|
||||
/* EXIT_IGNORE_STACK should be nonzero if, when returning from a function,
|
||||
@ -1243,12 +1270,14 @@ do { \
|
||||
??? FIXME: When the trampoline returns, r8 will be clobbered. */
|
||||
#define TRAMPOLINE_TEMPLATE(FILE) \
|
||||
{ \
|
||||
fprintf ((FILE), "\tldr\t%sr8, [%spc, #0]\n", \
|
||||
REGISTER_PREFIX, REGISTER_PREFIX); \
|
||||
fprintf ((FILE), "\tldr\t%spc, [%spc, #0]\n", \
|
||||
REGISTER_PREFIX, REGISTER_PREFIX); \
|
||||
fprintf ((FILE), "\t.word\t0\n"); \
|
||||
fprintf ((FILE), "\t.word\t0\n"); \
|
||||
fprintf ((FILE), "\tldr\t%s%s, [%s%s, #0]\n", \
|
||||
REGISTER_PREFIX, reg_names[STATIC_CHAIN_REGNUM], \
|
||||
REGISTER_PREFIX, reg_names[PC_REGNUM]); \
|
||||
fprintf ((FILE), "\tldr\t%s%s, [%s%s, #0]\n", \
|
||||
REGISTER_PREFIX, reg_names[PC_REGNUM], \
|
||||
REGISTER_PREFIX, reg_names[PC_REGNUM]); \
|
||||
ASM_OUTPUT_INT ((FILE), const0_rtx); \
|
||||
ASM_OUTPUT_INT ((FILE), const0_rtx); \
|
||||
}
|
||||
|
||||
/* Length in units of the trampoline for entering a nested function. */
|
||||
|
Loading…
Reference in New Issue
Block a user