29 |
|
|
30 |
*/ |
*/ |
31 |
|
|
|
#define BITS_PER_LONG 64 |
|
|
#define BITS_PER_EMACS_INT 64 |
|
32 |
#ifndef _LP64 |
#ifndef _LP64 |
33 |
#define _LP64 /* This doesn't appear to be necessary |
#define _LP64 /* This doesn't appear to be necessary |
34 |
on OSF 4/5 -- fx. */ |
on OSF 4/5 -- fx. */ |
54 |
|
|
55 |
/* Use type EMACS_INT rather than a union, to represent Lisp_Object */ |
/* Use type EMACS_INT rather than a union, to represent Lisp_Object */ |
56 |
/* This is desirable for most machines. */ |
/* This is desirable for most machines. */ |
|
|
|
57 |
#define NO_UNION_TYPE |
#define NO_UNION_TYPE |
58 |
|
|
|
/* Define the type to use. */ |
|
|
#define EMACS_INT long |
|
|
#define EMACS_UINT unsigned long |
|
|
#define SPECIAL_EMACS_INT |
|
|
|
|
59 |
/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend |
/* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend |
60 |
the 24-bit bit field into an int. In other words, if bit fields |
the 24-bit bit field into an int. In other words, if bit fields |
61 |
are always unsigned. |
are always unsigned. |
105 |
#ifdef __ELF__ |
#ifdef __ELF__ |
106 |
#undef UNEXEC |
#undef UNEXEC |
107 |
#define UNEXEC unexelf.o |
#define UNEXEC unexelf.o |
108 |
|
#define DATA_START 0x140000000 |
109 |
#endif |
#endif |
110 |
|
|
111 |
#ifndef __ELF__ |
#ifndef __ELF__ |
115 |
#define TEXT_START 0x120000000 |
#define TEXT_START 0x120000000 |
116 |
#define DATA_START 0x140000000 |
#define DATA_START 0x140000000 |
117 |
|
|
|
/* This is necessary for mem-limits.h, so that start_of_data gives |
|
|
the correct value */ |
|
|
|
|
|
#define DATA_SEG_BITS 0x140000000 |
|
|
|
|
118 |
/* The program to be used for unexec. */ |
/* The program to be used for unexec. */ |
119 |
|
|
120 |
#define UNEXEC unexalpha.o |
#define UNEXEC unexalpha.o |
153 |
#endif |
#endif |
154 |
|
|
155 |
|
|
|
#define PNTR_COMPARISON_TYPE unsigned long |
|
|
|
|
|
/* On the 64 bit architecture, we can use 60 bits for addresses */ |
|
|
|
|
|
#define VALBITS 60 |
|
|
|
|
|
|
|
|
/* This definition of MARKBIT is necessary because of the comparison of |
|
|
ARRAY_MARK_FLAG and MARKBIT in an #if in lisp.h, which cpp doesn't like. */ |
|
|
|
|
|
#define MARKBIT 0x8000000000000000L |
|
|
|
|
|
|
|
|
/* Define XINT and XUINT so that they can take arguments of type int */ |
|
|
|
|
|
#define XINT(a) (((long) (a) << (BITS_PER_LONG - VALBITS)) >> (BITS_PER_LONG - VALBITS)) |
|
|
#define XUINT(a) ((long) (a) & VALMASK) |
|
|
|
|
|
/* Define XPNTR to avoid or'ing with DATA_SEG_BITS */ |
|
|
|
|
|
#define XPNTR(a) XUINT (a) |
|
|
|
|
156 |
#ifndef NOT_C_CODE |
#ifndef NOT_C_CODE |
157 |
/* We need these because pointers are larger than the default ints. */ |
/* We need these because pointers are larger than the default ints. */ |
158 |
#if !defined(__NetBSD__) && !defined(__OpenBSD__) |
#if !defined(__NetBSD__) && !defined(__OpenBSD__) |