OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [config/] [ia64/] [vms.h] - Blame information for rev 867

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 709 jeremybenn
/* Definitions of target machine GNU compiler. IA64-VMS version.
2
   Copyright (C) 2003-2011 Free Software Foundation, Inc.
3
   Contributed by Douglas B Rupp (rupp@gnat.com).
4
 
5
This file is part of GCC.
6
 
7
GCC is free software; you can redistribute it and/or modify
8
it under the terms of the GNU General Public License as published by
9
the Free Software Foundation; either version 3, or (at your option)
10
any later version.
11
 
12
GCC is distributed in the hope that it will be useful,
13
but WITHOUT ANY WARRANTY; without even the implied warranty of
14
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
GNU General Public License for more details.
16
 
17
You should have received a copy of the GNU General Public License
18
along with GCC; see the file COPYING3.  If not see
19
<http://www.gnu.org/licenses/>.  */
20
 
21
#define OBJECT_FORMAT_ELF
22
 
23
#define SUBTARGET_OS_CPP_BUILTINS()             \
24
    do {                                        \
25
        builtin_define ("__IA64");              \
26
        builtin_define ("__IEEE_FLOAT");        \
27
    } while (0)
28
 
29
/* Need .debug_line info generated from gcc and gas.  */
30
#undef TARGET_DEFAULT
31
#if POINTER_SIZE == 64
32
#define TARGET_DEFAULT (MASK_DWARF2_ASM | MASK_GNU_AS | MASK_MALLOC64)
33
#else
34
#define TARGET_DEFAULT (MASK_DWARF2_ASM | MASK_GNU_AS)
35
#endif
36
 
37
#define VMS_DEBUG_MAIN_POINTER "TRANSFER$BREAK$GO"
38
 
39
#undef MAX_OFILE_ALIGNMENT
40
#define MAX_OFILE_ALIGNMENT 524288  /* 8 x 2^16 by DEC Ada Test CD40VRA */
41
 
42
/* Widest floating-point type efficiently supported by hardware and OS.  */
43
#undef WIDEST_HARDWARE_FP_SIZE
44
#define WIDEST_HARDWARE_FP_SIZE 64
45
 
46
/* The structure return address arrives as an "argument" on VMS.  */
47
#undef PCC_STATIC_STRUCT_RETURN
48
 
49
/* Turn on VMS specific Dwarf2 features.  */
50
#define VMS_DEBUGGING_INFO 1
51
 
52
#define ASM_OUTPUT_DWARF_VMS_DELTA(FILE,SIZE,LABEL1,LABEL2) \
53
do {                                          \
54
  fprintf (FILE, "\tdata4.ua\t@slotcount(");  \
55
  assemble_name (FILE, LABEL1);               \
56
  fprintf (FILE, "-");                        \
57
  assemble_name (FILE, LABEL2);               \
58
  fprintf (FILE, ")");                        \
59
} while (0)
60
 
61
#undef STARTFILE_SPEC
62
#define STARTFILE_SPEC \
63
"%{!shared:%{mvms-return-codes:vcrt0.o%s} %{!mvms-return-codes:pcrt0.o%s} \
64
    crtbegin.o%s} \
65
 %{!static:%{shared:crtinitS.o%s crtbeginS.o%s}}"
66
 
67
#undef ENDFILE_SPEC
68
#define ENDFILE_SPEC \
69
"%{!shared:crtend.o%s} %{!static:%{shared:crtendS.o%s}}"
70
 
71
#define LINK_GCC_C_SEQUENCE_SPEC "%G"
72
 
73
#undef LINK_SPEC
74
#define LINK_SPEC "%{g*} %{map} %{save-temps} %{shared} %{v}"
75
 
76
#undef LIB_SPEC
77
#define LIB_SPEC ""
78
 
79
#undef ASM_SPEC
80
#define ASM_SPEC \
81
"%{mno-gnu-as:-N so -N vms_upcase -W DVLoc_off} %{mconstant-gp:-M const_gp} \
82
 %{mauto-pic:-M no_plabel} %{source-listing:-ahdl=%b.lis}"
83
 
84
#undef ASM_OUTPUT_EXTERNAL_LIBCALL
85
#define ASM_OUTPUT_EXTERNAL_LIBCALL(FILE, FUN)                  \
86
do {                                                            \
87
  (*targetm.asm_out.globalize_label) (FILE, XSTR (FUN, 0));      \
88
  ASM_OUTPUT_TYPE_DIRECTIVE (FILE, XSTR (FUN, 0), "function");   \
89
} while (0)
90
 
91
/* Set the function to change the names of the division and modulus
92
   functions.   */
93
#undef TARGET_INIT_LIBFUNCS
94
#define TARGET_INIT_LIBFUNCS ia64_vms_init_libfuncs
95
 
96
#define NAME__MAIN "__gccmain"
97
#define SYMBOL__MAIN __gccmain
98
 
99
#define CTOR_LIST_BEGIN asm (".global\tLIB$INITIALIZE#\n");                  \
100
STATIC func_ptr __CTOR_LIST__[1]                                             \
101
  __attribute__ ((__unused__, section(".ctors"), aligned(sizeof(func_ptr)))) \
102
  = { (func_ptr) (-1) };
103
 
104
#undef INIT_SECTION_ASM_OP
105
#define INIT_SECTION_ASM_OP ".section\tLIB$INITIALIZE#,\"a\",@progbits"
106
 
107
#define CRT_CALL_STATIC_FUNCTION(SECTION_OP, FUNC)      \
108
  asm (SECTION_OP "\n\tdata4 @fptr(" #FUNC"#)\n");      \
109
  FORCE_CODE_SECTION_ALIGN                            \
110
  asm (TEXT_SECTION_ASM_OP);
111
 
112
#undef FINI_SECTION_ASM_OP
113
 
114
/* Maybe same as HPUX?  Needs to be checked.  */
115
#define JMP_BUF_SIZE  (8 * 76)
116
 
117
#undef SUBTARGET_OPTIMIZATION_OPTIONS
118
#define SUBTARGET_OPTIMIZATION_OPTIONS                  \
119
  { OPT_LEVELS_ALL, OPT_fmerge_constants, NULL, 0 }
120
 
121
/* Define this to be nonzero if static stack checking is supported.  */
122
#define STACK_CHECK_STATIC_BUILTIN 1
123
 
124
/* Minimum amount of stack required to recover from an anticipated stack
125
   overflow detection.  The default value conveys an estimate of the amount
126
   of stack required to propagate an exception.  */
127
#define STACK_CHECK_PROTECT (24 * 1024)
128
 
129
#undef ASM_OUTPUT_ALIGNED_DECL_COMMON
130
#define ASM_OUTPUT_ALIGNED_DECL_COMMON(FILE, DECL, NAME, SIZE, ALIGN) \
131
  ia64_vms_output_aligned_decl_common (FILE, DECL, NAME, SIZE, ALIGN)
132
 
133
#undef TARGET_VALID_POINTER_MODE
134
#define TARGET_VALID_POINTER_MODE ia64_vms_valid_pointer_mode
135
 
136
#undef TARGET_ASM_NAMED_SECTION
137
#define TARGET_ASM_NAMED_SECTION ia64_vms_elf_asm_named_section
138
 
139
/* Define this macro if it is advisable to hold scalars in registers
140
   in a wider mode than that declared by the program.  In such cases,
141
   the value is constrained to be within the bounds of the declared
142
   type, but kept valid in the wider mode.  The signedness of the
143
   extension may differ from that of the type.
144
 
145
   For ia64, we always store objects in a full register.  32-bit integers
146
   are always sign-extended, but smaller objects retain their signedness.  */
147
 
148
#undef PROMOTE_MODE
149
#define PROMOTE_MODE(MODE,UNSIGNEDP,TYPE)                       \
150
  if (GET_MODE_CLASS (MODE) == MODE_INT                         \
151
      && GET_MODE_SIZE (MODE) < UNITS_PER_WORD)                 \
152
    {                                                           \
153
      if ((MODE) == SImode)                                     \
154
        (UNSIGNEDP) = 0;                                 \
155
      (MODE) = DImode;                                          \
156
    }
157
 
158
#undef TARGET_PROMOTE_FUNCTION_MODE
159
#define TARGET_PROMOTE_FUNCTION_MODE default_promote_function_mode_always_promote
160
 
161
/* IA64 VMS doesn't fully support COMDAT sections.  */
162
 
163
#define SUPPORTS_ONE_ONLY 0

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.