X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FMBlock.h;h=40461a0ef6fdd688a7825677e64a3a24d889ea5c;hb=9b4d74c78cd4bf34c361d6647e14833e7f59c117;hp=18fe05297d041735d9cdf6dc5cc0682b69340802;hpb=11313835d7894e9fa7c6fda511e9d983a72d1487;p=ghc-hetmet.git diff --git a/ghc/rts/MBlock.h b/ghc/rts/MBlock.h index 18fe052..40461a0 100644 --- a/ghc/rts/MBlock.h +++ b/ghc/rts/MBlock.h @@ -1,15 +1,16 @@ /* ----------------------------------------------------------------------------- - * $Id: MBlock.h,v 1.8 2001/01/16 11:53:32 simonmar Exp $ + * $Id: MBlock.h,v 1.14 2002/05/14 08:15:49 matthewc Exp $ * * (c) The GHC Team, 1998-1999 * * MegaBlock Allocator interface. * * ---------------------------------------------------------------------------*/ - +#ifndef __MBLOCK_H__ +#define __MBLOCK_H__ extern lnat mblocks_allocated; -#ifdef ENABLE_WIN32_DLL_SUPPORT +#if defined(mingw32_TARGET_OS) extern int is_heap_alloced(const void* p); #endif @@ -30,31 +31,46 @@ 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 */ #define HEAP_BASE 0x50000000 #elif osf3_TARGET_OS -/* guess */ -#define HEAP_BASE 0x50000000 +/* ToDo: Perhaps by adjusting this value we can make linking without + * -static work (i.e., not generate a core-dumping executable)? */ +#if SIZEOF_VOID_P == 8 +#define HEAP_BASE 0x180000000L +#else +#error I have no idea where to begin the heap on a non-64-bit osf3 machine. +#endif #elif hpux_TARGET_OS /* guess */ #define HEAP_BASE 0x50000000 -#elif macosx_TARGET_OS +#elif darwin_TARGET_OS /* guess */ #define HEAP_BASE 0x50000000 -#elif _WIN32 +#elif defined(mingw32_TARGET_OS) || defined(cygwin32_TARGET_OS) /* doesn't matter, we use a reserve/commit algorithm */ #else #error Dont know where to get memory from on this architecture /* ToDo: memory locations on other architectures */ #endif + +#endif