1/* machine description file for hp9000 series 800 machines. 2 Copyright (C) 1987, 2001, 2002, 2003, 2004, 2005, 3 2006, 2007 Free Software Foundation, Inc. 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 2, 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 19the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 20Boston, MA 02110-1301, USA. */ 21 22 23/* The following line tells the configuration script what sort of 24 operating system this machine is likely to run. 25 USUAL-OPSYS="hpux" */ 26 27/* Define WORDS_BIG_ENDIAN iff lowest-numbered byte in a word 28 is the most significant byte. */ 29 30#define WORDS_BIG_ENDIAN 31 32/* Define NO_ARG_ARRAY if you cannot take the address of the first of a 33 * group of arguments and treat it as an array of the arguments. */ 34 35#define NO_ARG_ARRAY 36 37/* Define WORD_MACHINE if addresses and such have 38 * to be corrected before they can be used as byte counts. */ 39 40#undef WORD_MACHINE 41 42/* Now define a symbol for the cpu type, if your compiler 43 does not define it automatically: 44 Ones defined so far include vax, m68000, ns16000, pyramid, 45 orion, tahoe, APOLLO and many others */ 46#ifndef hp9000s800 47# define hp9000s800 48#endif 49 50/* Use type int rather than a union, to represent Lisp_Object */ 51/* This is desirable for most machines. */ 52 53#define NO_UNION_TYPE 54 55/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend 56 the bit field into an int. In other words, if bit fields 57 are always unsigned. 58 59 If you use NO_UNION_TYPE, this flag does not matter. */ 60 61#define EXPLICIT_SIGN_EXTEND 62 63/* The standard definitions of these macros would work ok, 64 but these are faster because the constants are short. */ 65 66 67#define XUINT(a) (((unsigned)(a) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS) 68 69#define XSET(var, type, ptr) \ 70 ((var) = ((int)(type) << VALBITS) + (((unsigned) (ptr) << BITS_PER_INT-VALBITS) >> BITS_PER_INT-VALBITS)) 71 72/* Common definitions for HPUX and GNU/Linux. */ 73 74#if defined (__hpux) || defined (GNU_LINUX) 75/* Now define a symbol for the cpu type, if your compiler 76 does not define it automatically: 77 Ones defined so far include vax, m68000, ns16000, pyramid, 78 orion, tahoe, APOLLO and many others */ 79#ifndef hp9000s800 80# define hp9000s800 81#endif 82 83/* Define CANNOT_DUMP on machines where unexec does not work. 84 Then the function dump-emacs will not be defined 85 and temacs will do (load "loadup") automatically unless told otherwise. */ 86 87#undef CANNOT_DUMP 88 89/* Define NO_REMAP if memory segmentation makes it not work well 90 to change the boundary between the text section and data section 91 when Emacs is dumped. If you define this, the preloaded Lisp 92 code will not be sharable; but that's better than failing completely. */ 93 94#define NO_REMAP 95 96#endif /* __hpux or GNU_LINUX */ 97 98/* Stuff for just GNU/Linux. */ 99 100#ifdef GNU_LINUX 101 102/* Data type of load average, as read out of kmem. */ 103 104#define LOAD_AVE_TYPE long 105 106/* Convert that into an integer that is 100 for a load average of 1.0 */ 107 108#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / FSCALE) 109 110#endif /* GNU_LINUX */ 111 112/* Stuff for just HPUX. */ 113 114#ifdef __hpux 115 116/* Define VIRT_ADDR_VARIES if the virtual addresses of 117 pure and impure space as loaded can vary, and even their 118 relative order cannot be relied on. 119 120 Otherwise Emacs assumes that text space precedes data space, 121 numerically. */ 122 123#define VIRT_ADDR_VARIES 124 125/* the data segment on this machine always starts at address 0x40000000. */ 126 127#define DATA_SEG_BITS 0x40000000 128 129#define DATA_START 0x40000000 130#define TEXT_START 0x00000000 131 132/* This machine requires completely different unexec code 133 which lives in a separate file. Specify the file name. */ 134 135#define UNEXEC unexhp9k800.o 136 137#define LIBS_MACHINE 138#define LIBS_DEBUG 139 140/* Include the file bsdtty.h, since this machine has job control. */ 141#define NEED_BSDTTY 142 143/* Data type of load average, as read out of kmem. */ 144 145#define LOAD_AVE_TYPE double 146 147/* Convert that into an integer that is 100 for a load average of 1.0 */ 148 149#define LOAD_AVE_CVT(x) ((int) (x * 100.0)) 150 151/* The symbol in the kernel where the load average is found 152 is named _avenrun. At this time there are two major flavors 153 of hp-ux (there is the s800 and s300 (s200) flavors). The 154 differences are thusly moved to the corresponding machine description file. 155*/ 156 157/* no underscore please */ 158#define LDAV_SYMBOL "avenrun" 159 160#if 0 /* Supposedly no longer true. */ 161/* In hpux, for unknown reasons, S_IFLNK is defined even though 162 symbolic links do not exist. 163 Make sure our conditionals based on S_IFLNK are not confused. 164 165 Here we assume that stat.h is included before config.h 166 so that we can override it here. */ 167 168#undef S_IFLNK 169#endif 170 171/* On USG systems these have different names. */ 172 173#define index strchr 174#define rindex strrchr 175 176#endif /* __hpux */ 177 178/* Systems with GCC don't need to lose. */ 179#ifdef __NetBSD__ 180# ifdef __GNUC__ 181# define alloca __builtin_alloca 182# define HAVE_ALLOCA 183# endif /* __GNUC__ */ 184#endif /* __NetBSD__ */ 185 186/* arch-tag: 809436e6-1645-4b92-b40d-2de5d6e7227c 187 (do not change this comment) */ 188