Update years in copyright notice; nfc.
[bpt/emacs.git] / src / m / alpha.h
CommitLineData
b061d5f1 1/* machine description file For the alpha chip.
b908093d 2 Copyright (C) 1994, 1997, 1999, 2002, 2003, 2004,
aaef169d 3 2005, 2006 Free Software Foundation, Inc.
b061d5f1
RS
4
5This file is part of GNU Emacs.
6
7GNU Emacs 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 Emacs 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 Emacs; see the file COPYING. If not, write to
364c38d3
LK
19the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20Boston, MA 02110-1301, USA. */
b061d5f1
RS
21
22
177c0ea7 23/* The following line tells the configuration script what sort of
b061d5f1
RS
24 operating system this machine is likely to run.
25 USUAL-OPSYS="note"
26
27NOTE-START
28Use -opsystem=osf1
29NOTE-END
30
31*/
32
2eca7f4d 33#ifndef _LP64
3347875f
DL
34#define _LP64 /* This doesn't appear to be necessary
35 on OSF 4/5 -- fx. */
2eca7f4d 36#endif
b061d5f1 37
74d3f806
KH
38/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word
39 is the most significant byte. */
40
41#undef WORDS_BIG_ENDIAN
42
b061d5f1
RS
43/* Define NO_ARG_ARRAY if you cannot take the address of the first of a
44 * group of arguments and treat it as an array of the arguments. */
45
46#define NO_ARG_ARRAY
47
b061d5f1
RS
48/* Now define a symbol for the cpu type, if your compiler
49 does not define it automatically:
50 Ones defined so far include vax, m68000, ns16000, pyramid,
51 orion, tahoe, APOLLO and many others */
52
53/* __alpha defined automatically */
54
55
56/* Use type EMACS_INT rather than a union, to represent Lisp_Object */
57/* This is desirable for most machines. */
b061d5f1
RS
58#define NO_UNION_TYPE
59
b061d5f1
RS
60/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
61 the 24-bit bit field into an int. In other words, if bit fields
62 are always unsigned.
63
64 If you use NO_UNION_TYPE, this flag does not matter. */
65
66#define EXPLICIT_SIGN_EXTEND
67
68/* Data type of load average, as read out of kmem. */
69
70#define LOAD_AVE_TYPE long
71
72/* Convert that into an integer that is 100 for a load average of 1.0 */
73
74#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE)
75
b061d5f1 76/* GNU malloc and the relocating allocator do not work together
352c01a5
KH
77 with X. [Who wrote that?] */
78
79/* May 1995: reportedly [Rainer Schoepf <schoepf@uni-mainz.de>] both the
80 system and the gnu malloc system work with "alpha-dec-osf3.0" and
81 "alpha-dec-osf3.2". */
82
83/* May 1995: it seems to me [Morten Welinder <terra@diku.dk>] that both
84 mallocs work with "alpha-dec-osf2.0", but I daren't break anything
85 right now. Feel free to play if you want. */
b061d5f1 86
76869384 87/* #define SYSTEM_MALLOC */
b061d5f1 88
821f376d
RS
89#ifdef __ELF__
90/* With ELF, make sure that all common symbols get allocated to in the
91 data section. Otherwise, the dump of temacs may miss variables in
92 the shared library that have been initialized. For example, with
93 GNU libc, __malloc_initialized would normally be resolved to the
94 shared library's .bss section, which is fatal. */
95# ifdef __GNUC__
96# define C_SWITCH_MACHINE -fno-common
97# else
98# error What gives? Fix me if DEC Unix supports ELF now.
99# endif
100#endif
101
2eca7f4d 102#if defined(__OpenBSD__)
6c73d346
RS
103#define ORDINARY_LINK
104#endif
105
bcd4fb44
RS
106#ifdef __ELF__
107#undef UNEXEC
1a9bd6bd 108#define UNEXEC unexelf.o
685f8511 109#ifndef LINUX
d5e406c3 110#define DATA_START 0x140000000
bcd4fb44 111#endif
685f8511 112#endif
bcd4fb44 113
821f376d
RS
114#ifndef __ELF__
115
b061d5f1
RS
116/* Describe layout of the address space in an executing process. */
117
118#define TEXT_START 0x120000000
119#define DATA_START 0x140000000
120
821f376d
RS
121/* The program to be used for unexec. */
122
123#define UNEXEC unexalpha.o
124
125#endif /* notdef __ELF__ */
126
821f376d 127#if defined (LINUX) && __GNU_LIBRARY__ - 0 < 6
629aa3cb
RS
128/* This controls a conditional in main. */
129#define LINUX_SBRK_BUG
130#endif
b061d5f1 131
821f376d
RS
132/* On the Alpha it's best to avoid including TERMIO since struct
133 termio and struct termios are mutually incompatible. */
ee803128
RS
134#define NO_TERMIO
135
62d9f4b0 136#if defined (LINUX) || defined (__NetBSD__) || defined (__OpenBSD__)
821f376d
RS
137# define TEXT_END ({ extern int _etext; &_etext; })
138# ifndef __ELF__
139# define COFF
140# define DATA_END ({ extern int _EDATA; &_EDATA; })
141# endif /* notdef __ELF__ */
ee803128 142#endif
62d9f4b0
RS
143
144#if (defined (__NetBSD__) || defined (__OpenBSD__)) && defined (__ELF__)
145#define HAVE_TEXT_START
146#endif
13d603a9
PE
147
148/* Many Alpha implementations (e.g. gas 2.8) can't handle DBL_MIN:
149 they generate code that uses a signaling NaN instead of DBL_MIN.
150 Define DBL_MIN_REPLACEMENT to be the next value larger than DBL_MIN:
151 this avoids the assembler bug. */
152#define DBL_MIN_REPLACEMENT 2.2250738585072019e-308
ab5796a9
MB
153
154/* arch-tag: 978cb578-1e25-4a60-819b-adae0972aa78
155 (do not change this comment) */