XEmacs 21.2.4
[chise/xemacs-chise.git.1] / src / m / arm.h
1 /* Machine description file for digital/intel arm/strongarm
2    Copyright (C) 1987 Free Software Foundation, Inc.
3
4 This file is part of GNU Emacs.
5
6 GNU Emacs is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2, or (at your option)
9 any later version.
10
11 GNU Emacs is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with XEmacs; see the file COPYING.  If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA.  */
20
21 /* Synched up with: FSF 19.31. */
22
23 /* Define WORD_MACHINE if addresses and such have
24  * to be corrected before they can be used as byte counts.  */
25
26 #undef WORD_MACHINE
27
28 /* Now define a symbol for the cpu type, if your compiler
29    does not define it automatically:
30    Ones defined so far include vax, m68000, ns16000, pyramid,
31    orion, tahoe, APOLLO and many others */
32
33 #ifndef arm
34 #define arm
35 #endif
36
37 /* crt0.c, if it is used, should use the i386-bsd style of entry.
38    with no extra dummy args.  On USG and XENIX,
39    NO_REMAP says this isn't used. */
40
41 /* Mly 16-Jan-96 16:38:32: this is part of a prototype -- same bug present in 
42    other m*.h files */
43 #define CRT0_DUMMIES int bogus_fp,
44
45 /* crt0.c should define a symbol `start' and do .globl with a dot.  */
46
47 #define DOT_GLOBAL_START
48
49 #ifdef USG5_4 /* Older USG systems do not support the load average.  */
50 /* Data type of load average, as read out of kmem.  */
51
52 #define LOAD_AVE_TYPE long
53
54 /* Convert that into an integer that is 100 for a load average of 1.0  */
55 /* This is totally uncalibrated. */
56
57
58 /* FSHIFT and FSCALE are defined in param.h, but are required by
59    LOAD_AVE_CVT, so they need to be defined here.  */
60
61 #ifndef FSHIFT
62 #define FSHIFT  8       /* bits to right of fixed binary point */
63 #endif
64
65 #ifndef FSCALE
66 #define FSCALE  (1<<FSHIFT)
67 #endif
68
69 #define LOAD_AVE_CVT(x) ((int) (((double) (x)) * 100.0 / FSCALE))
70 #endif
71
72
73 /* Define CANNOT_DUMP on machines where unexec does not work.
74    Then the function dump-emacs will not be defined
75    and temacs will do (load "loadup") automatically unless told otherwise.  */
76
77 #undef CANNOT_DUMP
78
79 /* Define VIRT_ADDR_VARIES if the virtual addresses of
80    pure and impure space as loaded can vary, and even their
81    relative order cannot be relied on.
82
83    Otherwise Emacs assumes that text space precedes data space,
84    numerically.  */
85
86 #undef VIRT_ADDR_VARIES
87
88
89 /* this brings in alloca() if we're using cc */
90 #ifdef USG
91 #define NO_REMAP 
92 #define TEXT_START 0
93 #endif /* USG */
94
95
96 #ifdef USG5_4
97 #define DATA_SEG_BITS 0x08000000
98 #endif
99
100 #ifdef MSDOS
101 #define NO_REMAP
102 #endif
103
104 #ifdef WINDOWSNT
105 #define VIRT_ADDR_VARIES
106 #define DATA_END        get_data_end ()
107 #define DATA_START      get_data_start ()
108 #define HAVE_ALLOCA
109 #endif
110
111 #ifdef linux
112 /* libc-linux/sysdeps/linux/i386/ulimit.c says that due to shared library, */
113 /* we cannot get the maximum address for brk */
114 #define ULIMIT_BREAK_VALUE (32*1024*1024)
115
116 #define SEGMENT_MASK ((SEGMENT_SIZE)-1)
117 #endif
118
119 #if 0
120 #ifdef __GNUC__
121 /* GCC's alloca() is semi-broken.  See lisp.h.
122
123    This brokenness has been confirmed under both Linux and NetBSD.
124    It may also exist on non-Intel architectures. */
125 #define BROKEN_ALLOCA_IN_FUNCTION_CALLS
126 #endif
127 #endif
128
129
130 /* XEmacs change: John Hughes <john@AtlanTech.COM> says using vfork
131    under i386-unknown-sysv4.2 makes C-g sometimes cause a SIGSEGV
132    in TTY mode; the problem goes away if you use fork */
133 #ifdef USG5_4_2
134 #define vfork fork
135 #endif