#include "m68k/m68k.h"
-/* SGS specific assembler pseudo ops. */
+/* SGS specific assembler pseudo ops. */
#define BYTE_ASM_OP "\t.byte "
#define WORD_ASM_OP "\t.short "
#define REGISTER_PREFIX "%"
/* The prefix for local (compiler generated) labels.
- These labels will not appear in the symbol table. */
+ These labels will not appear in the symbol table. */
#undef LOCAL_LABEL_PREFIX
#define LOCAL_LABEL_PREFIX "."
-/* The prefix to add to user-visible assembler symbols. */
+/* The prefix to add to user-visible assembler symbols. */
#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX ""
#endif /* defined SUPPORT_SUN_FPA */
-/* When using an SGS assembler, modify the name of the artificial label which
- identifies this file as having been compiled with gcc, and the macro that
- emits such a label in the assembly output, to use '%' rather than '.' */
-
-#define ASM_IDENTIFY_GCC(FILE) \
- { fprintf ((FILE), "%s:\n", "gcc2_compiled%"); }
-
/* This is how to output an assembler line defining an `int' constant. */
-/* The SGS assembler doesn't understand ".word". */
+/* The SGS assembler doesn't understand ".word". */
#undef ASM_OUTPUT_SHORT
#define ASM_OUTPUT_SHORT(FILE,VALUE) \
-( fprintf ((FILE), "\t%s ", WORD_ASM_OP), \
+( fprintf ((FILE), "%s", WORD_ASM_OP), \
output_addr_const ((FILE), (VALUE)), \
fprintf ((FILE), "\n"))
#define ASM_OUTPUT_LONG_DOUBLE(FILE,VALUE) \
do { long l[3]; \
REAL_VALUE_TO_TARGET_LONG_DOUBLE (VALUE, l); \
- fprintf ((FILE), "\t%s 0x%x,0x%x,0x%x\n", LONG_ASM_OP, \
+ fprintf ((FILE), "%s0x%lx,0x%lx,0x%lx\n", LONG_ASM_OP, \
l[0], l[1], l[2]); \
} while (0)
#define ASM_OUTPUT_DOUBLE(FILE,VALUE) \
do { long l[2]; \
REAL_VALUE_TO_TARGET_DOUBLE (VALUE, l); \
- fprintf ((FILE), "\t%s 0x%x,0x%x\n", LONG_ASM_OP, \
+ fprintf ((FILE), "%s0x%lx,0x%lx\n", LONG_ASM_OP, \
l[0], l[1]); \
} while (0)
#define ASM_OUTPUT_FLOAT(FILE,VALUE) \
do { long l; \
REAL_VALUE_TO_TARGET_SINGLE (VALUE, l); \
- fprintf ((FILE), "\t%s 0x%x\n", LONG_ASM_OP, l); \
+ fprintf ((FILE), "%s0x%lx\n", LONG_ASM_OP, l); \
} while (0)
/* This is how to output an assembler line that says to advance the
#undef ASM_OUTPUT_ALIGN
#define ASM_OUTPUT_ALIGN(FILE,LOG) \
if ((LOG) > 0) \
- fprintf ((FILE), "\t%s \t%u\n", ALIGN_ASM_OP, 1 << (LOG)); \
+ fprintf ((FILE), "%s%u\n", ALIGN_ASM_OP, 1 << (LOG)); \
else if ((LOG) > 31) \
abort ();
1023 bytes. There is no "partial string op" which works like ".string"
but doesn't append a null byte, so we can't chop the input string up
into small pieces and use that. Our only remaining alternative is to
- output the string one byte at a time. */
+ output the string one byte at a time. */
#define ASM_OUTPUT_ASCII(FILE,PTR,LEN) \
do { \
- register int sp = 0, lp = 0, ch; \
- fprintf ((FILE), "\t%s ", BYTE_ASM_OP); \
+ register int sp = 0, ch; \
+ fprintf ((FILE), "%s", BYTE_ASM_OP); \
do { \
ch = (PTR)[sp]; \
if (ch > ' ' && ! (ch & 0x80) && ch != '\\') \
{ \
if ((sp % 10) == 0) \
{ \
- fprintf ((FILE), "\n\t%s ", BYTE_ASM_OP); \
+ fprintf ((FILE), "\n%s", BYTE_ASM_OP); \
} \
else \
{ \
/* SGS based assemblers don't understand #NO_APP and #APP, so just don't
- bother emitting them. */
+ bother emitting them. */
#undef ASM_APP_ON
#define ASM_APP_ON ""
#define ASM_OUTPUT_FLOAT_OPERAND(CODE,FILE,VALUE) \
do { long l; \
REAL_VALUE_TO_TARGET_SINGLE (VALUE, l); \
- asm_fprintf ((FILE), "%I0x%x", l); \
+ asm_fprintf ((FILE), "%I0x%lx", l); \
} while (0)
#undef ASM_OUTPUT_DOUBLE_OPERAND
#define ASM_OUTPUT_DOUBLE_OPERAND(FILE,VALUE) \
do { long l[2]; \
REAL_VALUE_TO_TARGET_DOUBLE (VALUE, l); \
- asm_fprintf ((FILE), "%I0x%x%08x", l[0], l[1]); \
+ asm_fprintf ((FILE), "%I0x%lx%08lx", l[0], l[1]);\
} while (0)
/* How to output a block of SIZE zero bytes. Note that the `space' pseudo,
when used in the text segment, causes SGS assemblers to output nop insns
- rather than 0s, so we set ASM_NO_SKIP_IN_TEXT to prevent this. */
+ rather than 0s, so we set ASM_NO_SKIP_IN_TEXT to prevent this. */
#define ASM_NO_SKIP_IN_TEXT 1
#undef ASM_OUTPUT_SKIP
#define ASM_OUTPUT_SKIP(FILE,SIZE) \
- fprintf (FILE, "\t%s %u\n", SPACE_ASM_OP, (SIZE))
+ fprintf (FILE, "%s%u\n", SPACE_ASM_OP, (SIZE))
\f
/* Translate Motorola opcodes such as `jbeq' into SGS opcodes such
as `beq.w'.
/* This macro outputs the label at the start of a switch table. The
".swbeg <N>" is an assembler directive that causes the switch table
size to be inserted into the object code so that disassemblers, for
- example, can identify that it is the start of a switch table. */
+ example, can identify that it is the start of a switch table. */
#define ASM_OUTPUT_BEFORE_CASE_LABEL(FILE,PREFIX,NUM,TABLE) \
- fprintf ((FILE), "\t%s &%d\n", SWBEG_ASM_OP, XVECLEN (PATTERN (TABLE), 1));
+ fprintf ((FILE), "%s&%d\n", SWBEG_ASM_OP, XVECLEN (PATTERN (TABLE), 1));
#define ASM_OUTPUT_CASE_LABEL(FILE,PREFIX,NUM,TABLE) \
do { \
we want. This difference can be accommodated by making the assembler
define such "LDnnn" to be either "Lnnn-LInnn-2.b", "Lnnn", or any other
string, as necessary. This is accomplished via the ASM_OUTPUT_CASE_END
- macro. */
+ macro. */
#undef ASM_OUTPUT_CASE_END
#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE) \
{ if (switch_table_difference_label_flag) \
- asm_fprintf (FILE, "\t%s %LLD%d,%LL%d-%LLI%d-2.b\n",\
+ asm_fprintf (FILE, "%s%LLD%d,%LL%d-%LLI%d-2.b\n",\
SET_ASM_OP, (NUM), (NUM), (NUM)); \
switch_table_difference_label_flag = 0; }
#undef ASM_OUTPUT_ADDR_DIFF_ELT
#define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL) \
- asm_fprintf (FILE, "\t%s %LL%d-%LL%d\n", WORD_ASM_OP, VALUE, REL)
+ asm_fprintf (FILE, "%s%LL%d-%LL%d\n", WORD_ASM_OP, VALUE, REL)
/* Currently, JUMP_TABLES_IN_TEXT_SECTION must be defined in order to
- keep switch tables in the text section. */
+ keep switch tables in the text section. */
#define JUMP_TABLES_IN_TEXT_SECTION 1