blob: fa7f097ba54aeafc8d842269e4c331c4923d4201 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
$NetBSD: patch-bl,v 1.1.1.1 2003/04/11 00:31:45 uebayasi Exp $
--- ./src/m/sparc.h.orig Sat Sep 6 11:51:04 1997
+++ ./src/m/sparc.h Tue Sep 26 12:36:05 2000
@@ -117,3 +117,35 @@
#define A_TEXT_SEEK(HDR) (N_TXTOFF (hdr) + sizeof (hdr))
#endif /* not __NetBSD__ and not __linux__ and not __OpenBSD__ */
+
+#ifdef __arch64__ /* GCC, 64-bit ABI. */
+#define EMACS_INT long
+#define BITS_PER_LONG 64
+#define BITS_PER_EMACS_INT BITS_PER_LONG
+#define EMACS_UINT unsigned long
+#define SPECIAL_EMACS_INT
+
+/* 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)
+
+#define PNTR_COMPARISON_TYPE unsigned long
+#ifndef _LP64
+#define _LP64 /* Done on Alpha -- not sure if it
+ should be here. -- fx */
+#endif
+#endif
|