[project @ 2002-05-14 08:15:49 by matthewc]
authormatthewc <unknown>
Tue, 14 May 2002 08:15:49 +0000 (08:15 +0000)
committermatthewc <unknown>
Tue, 14 May 2002 08:15:49 +0000 (08:15 +0000)
IA64 only changes:
* Place HEAP_BASE in an appropriate place
* On IA64, use GCC "section" attribute to coax compiler into putting info
  tables in .text

ghc/includes/InfoTables.h
ghc/rts/MBlock.h

index e49ad33..1aff768 100644 (file)
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------------
- * $Id: InfoTables.h,v 1.26 2002/05/01 13:12:11 simonmar Exp $
+ * $Id: InfoTables.h,v 1.27 2002/05/14 08:15:49 matthewc Exp $
  * 
  * (c) The GHC Team, 1998-1999
  *
@@ -248,7 +248,12 @@ typedef struct _StgInfoTable {
  * stack.  We distinguish the two by checking whether the pointer is
  * into text-space or not.
  */
+
+#if ia64_TARGET_ARCH
+/* We need to give the compiler a gentle hint to put it in text-space */
+#define INFO_TBL_CONST  const __attribute__((section (".text")))
+#else
 #define INFO_TBL_CONST  const
+#endif
 
 #endif /* INFOTABLES_H */
index 4fac867..40461a0 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: MBlock.h,v 1.13 2002/02/14 17:21:50 sof Exp $
+ * $Id: MBlock.h,v 1.14 2002/05/14 08:15:49 matthewc Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -31,10 +31,18 @@ extern void * getMBlocks(nat n);
 #define HEAP_BASE 0x50000000
 #elif openbsd_TARGET_OS
 #define HEAP_BASE 0x50000000
+
 #elif linux_TARGET_OS
+#if ia64_TARGET_ARCH
+/* Shared libraries are in region 1, text in region 2, data in region 3.
+ * Stack is at the top of region 4.  We use the bottom.
+ */
+#define HEAP_BASE (4L<<61)
+#else
 /* Any ideas?
  */
 #define HEAP_BASE 0x50000000
+#endif
 
 #elif solaris2_TARGET_OS
 /* guess */