1/* m- file for Mips machines. 2 Copyright (C) 1987, 1992, 1993, 1995, 2001, 2002, 2003, 2004, 3 2005, 2006, 2007 Free Software Foundation, Inc. 4 5 This file contains some changes for our SVR4 based SINIX-Mips 5.4. 6 I hope this is helpful to port the emacs to our RM?00 series and 7 maybe to the DC/OSx (Mips-based) machines of Pyramid Inc. 8 (Marco.Walther@mch.sni.de) 9 10This file is part of GNU Emacs. 11 12GNU Emacs is free software; you can redistribute it and/or modify 13it under the terms of the GNU General Public License as published by 14the Free Software Foundation; either version 2, or (at your option) 15any later version. 16 17GNU Emacs is distributed in the hope that it will be useful, 18but WITHOUT ANY WARRANTY; without even the implied warranty of 19MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 20GNU General Public License for more details. 21 22You should have received a copy of the GNU General Public License 23along with GNU Emacs; see the file COPYING. If not, write to 24the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 25Boston, MA 02110-1301, USA. */ 26 27 28/* The following line tells the configuration script what sort of 29 operating system this machine is likely to run. 30 USUAL-OPSYS="note" 31 32NOTE-START 33Use m-mips4.h for RISCOS version 4; use s-bsd4-3.h with the BSD world. 34Note that the proper m- file for the Decstation is m-pmax.h. 35This is the m- file for SNI RM*00 machines. Use s- sinix5-4.h file! 36With this the file mips-siemens.h is obsolete. 37NOTE-END */ 38 39/* Define BIG_ENDIAN iff lowest-numbered byte in a word 40 is the most significant byte. */ 41 42#define BIG_ENDIAN 43 44/* Define NO_ARG_ARRAY if you cannot take the address of the first of a 45 * group of arguments and treat it as an array of the arguments. */ 46 47#define NO_ARG_ARRAY 48 49/* Define WORD_MACHINE if addresses and such have 50 * to be corrected before they can be used as byte counts. */ 51 52#undef WORD_MACHINE 53 54/* Define how to take a char and sign-extend into an int. 55 On machines where char is signed, this is a no-op. */ 56 57#define SIGN_EXTEND_CHAR(c) ((signed char)(c)) 58 59/* Now define a symbol for the cpu type, if your compiler 60 does not define it automatically: 61 Ones defined so far include vax, m68000, ns16000, pyramid, 62 orion, tahoe, APOLLO and many others */ 63#ifndef mips 64# define mips 65#endif 66 67/* Use type int rather than a union, to represent Lisp_Object */ 68/* This is desirable for most machines. */ 69 70#define NO_UNION_TYPE 71 72/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend 73 the 24-bit bit field into an int. In other words, if bit fields 74 are always unsigned. 75 76 If you use NO_UNION_TYPE, this flag does not matter. */ 77 78#define EXPLICIT_SIGN_EXTEND 79 80/* Data type of load average, as read out of kmem. */ 81 82#define LOAD_AVE_TYPE long 83 84/* Convert that into an integer that is 100 for a load average of 1.0 */ 85 86#define LOAD_AVE_CVT(x) (int) (((double) (x)) * 100.0 / 256.0) 87 88/* CDC EP/IX 1.4.3 uses /unix */ 89 90#undef KERNEL_FILE 91#define KERNEL_FILE "/unix" 92 93/* Define CANNOT_DUMP on machines where unexec does not work. 94 Then the function dump-emacs will not be defined 95 and temacs will do (load "loadup") automatically unless told otherwise. */ 96 97#undef CANNOT_DUMP 98 99/* Define VIRT_ADDR_VARIES if the virtual addresses of 100 pure and impure space as loaded can vary, and even their 101 relative order cannot be relied on. 102 103 Otherwise Emacs assumes that text space precedes data space, 104 numerically. */ 105 106/* #define VIRT_ADDR_VARIES */ 107 108/* Define NO_REMAP if memory segmentation makes it not work well 109 to change the boundary between the text section and data section 110 when Emacs is dumped. If you define this, the preloaded Lisp 111 code will not be sharable; but that's better than failing completely. */ 112 113#define NO_REMAP 114 115/* Describe layout of the address space in an executing process. */ 116/* MARCO ??? 117*/ 118#define TEXT_START 0x400000 119/* 120#define DATA_START 0x10000000 121#define DATA_SEG_BITS 0x10000000 122*/ 123#ifdef UNEXEC 124#undef UNEXEC 125#endif 126#define UNEXEC unexsni.o 127 128#undef ORDINARY_LINK 129 130#undef LIBS_DEBUG 131 132/* Alter some of the options used when linking. */ 133 134#define LIBS_MACHINE -lmld 135#define START_FILES pre-crt0.o /usr/ccs/lib/crt1.o /usr/ccs/lib/crti.o /usr/ccs/lib/values-Xt.o 136 137#ifdef LIB_STANDARD 138#undef LIB_STANDARD 139#endif 140#define LIB_STANDARD -lc /usr/ccs/lib/crtn.o 141 142#ifdef __GNUC__ 143#define C_DEBUG_SWITCH 144#define LD_SWITCH_MACHINE 145#else 146#define C_DEBUG_SWITCH -DSYSV 147#define C_OPTIMIZE_SWITCH -DSYSV 148#define LD_SWITCH_MACHINE 149#endif 150 151 152/* The standard definitions of these macros would work ok, 153 but these are faster because the constants are short. */ 154 155#define XUINT(a) (((unsigned)(a) << (BITS_PER_INT-VALBITS)) >> (BITS_PER_INT-VALBITS)) 156 157#define XSET(var, type, ptr) \ 158 ((var) = \ 159 ((int)(type) << VALBITS) \ 160 + (((unsigned) (ptr) << (BITS_PER_INT-VALBITS)) >> (BITS_PER_INT-VALBITS))) 161 162/* arch-tag: a4f5c090-0bd5-48f0-9724-b7d531f9b6c8 163 (do not change this comment) */ 164