source: trunk/third/gcc/config/m68k/atari.h @ 8834

Revision 8834, 3.8 KB checked in by ghudson, 28 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r8833, which included commits to RCS files with non-trunk default branches.
Line 
1/* Definitions of target machine for GNU compiler.
2   Atari TT ASV version.
3   Copyright (C) 1994, 1995 Free Software Foundation, Inc.
4
5This file is part of GNU CC.
6
7GNU CC is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 1, or (at your option)
10any later version.
11
12GNU CC is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with GNU CC; see the file COPYING.  If not, write to
19the Free Software Foundation, 59 Temple Place - Suite 330,
20Boston, MA 02111-1307, USA.  */
21
22#include "m68k/m68kv4.h"
23
24/* Dollars and dots in labels are not allowed. */
25
26#define NO_DOLLAR_IN_LABEL
27#define NO_DOT_IN_LABEL
28
29/* Alter assembler syntax for fsgldiv and fsglmul.
30   It is highly likely that this is a generic SGS m68k assembler dependency.
31   If so, it should eventually be handled in the m68k/sgs.h ASM_OUTPUT_OPCODE
32   macro, like the other SGS assembler quirks.  -fnf */
33
34#define FSGLDIV_USE_S           /* Use fsgldiv.s, not fsgldiv.x */
35#define FSGLMUL_USE_S           /* Use fsglmul.s, not fsglmul.x */
36
37/* At end of a switch table, define LDnnn iff the symbol LInnn was defined.
38   Some SGS assemblers have a bug such that "Lnnn-LInnn-2.b(pc,d0.l*2)"
39   fails to assemble.  Luckily "Lnnn(pc,d0.l*2)" produces the results
40   we want.  This difference can be accommodated by making the assembler
41   define such "LDnnn" to be either "Lnnn-LInnn-2.b", "Lnnn", or any other
42   string, as necessary.  This is accomplished via the ASM_OUTPUT_CASE_END
43   macro. (the Amiga assembler has this bug) */
44
45#undef ASM_OUTPUT_CASE_END
46#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE)                             \
47do {                                                                    \
48  if (switch_table_difference_label_flag)                               \
49    asm_fprintf ((FILE), "\t%s %LLD%d,%LL%d\n", SET_ASM_OP, (NUM), (NUM));\
50  switch_table_difference_label_flag = 0;                               \
51} while (0)
52
53int switch_table_difference_label_flag;
54
55/* This definition of ASM_OUTPUT_ASCII is the same as the one in m68k/sgs.h,
56   which has been overridden by the one in svr4.h.  However, we can't use
57   the one in svr4.h because the ASV assembler croaks on some of the
58   strings that it emits (such as .string "\"%s\"\n"). */
59
60#undef ASM_OUTPUT_ASCII
61#define ASM_OUTPUT_ASCII(FILE,PTR,LEN)                          \
62{                                                               \
63  register int sp = 0, lp = 0, ch;                              \
64  fprintf ((FILE), "\t%s ", BYTE_ASM_OP);                               \
65  do {                                                          \
66    ch = (PTR)[sp];                                             \
67    if (ch > ' ' && ! (ch & 0x80) && ch != '\\')                \
68      {                                                         \
69        fprintf ((FILE), "'%c", ch);                            \
70      }                                                         \
71    else                                                        \
72      {                                                         \
73        fprintf ((FILE), "0x%x", ch);                           \
74      }                                                         \
75    if (++sp < (LEN))                                           \
76      {                                                         \
77        if ((sp % 10) == 0)                                     \
78          {                                                     \
79            fprintf ((FILE), "\n\t%s ", BYTE_ASM_OP);           \
80          }                                                     \
81        else                                                    \
82          {                                                     \
83            putc (',', (FILE));                                 \
84          }                                                     \
85      }                                                         \
86  } while (sp < (LEN));                                         \
87  putc ('\n', (FILE));                                          \
88}
89
90/* Override these for the sake of an assembler bug: the ASV
91   assembler can't handle .LC0@GOT syntax.  This pollutes the final
92   table for shared librarys but what's a poor soul to do; sigh... RFH */
93
94#undef ASM_GENERATE_INTERNAL_LABEL
95#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM)   \
96  if (flag_pic && !strcmp(PREFIX,"LC"))                 \
97    sprintf (LABEL, "*%s%%%d", PREFIX, NUM);            \
98  else                                                  \
99    sprintf (LABEL, "*%s%s%d", LOCAL_LABEL_PREFIX, PREFIX, NUM)
100
101#undef ASM_OUTPUT_INTERNAL_LABEL
102#define ASM_OUTPUT_INTERNAL_LABEL(FILE,PREFIX,NUM)      \
103  if (flag_pic && !strcmp(PREFIX,"LC"))                 \
104    asm_fprintf (FILE, "%s%%%d:\n", PREFIX, NUM);       \
105  else                                                  \
106    asm_fprintf (FILE, "%0L%s%d:\n", PREFIX, NUM)
Note: See TracBrowser for help on using the repository browser.