X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FMBlock.h;h=4fac8674f55922ae2474662a5214d46a5079af86;hb=4acbbe8a286a8c040c335aec7518bb142fd22505;hp=1615f7048cb2bc667b06a674320f35cdb6bc10a6;hpb=7f309f1c021e7583f724cce599ce2dd3c439361b;p=ghc-hetmet.git diff --git a/ghc/rts/MBlock.h b/ghc/rts/MBlock.h index 1615f70..4fac867 100644 --- a/ghc/rts/MBlock.h +++ b/ghc/rts/MBlock.h @@ -1,13 +1,68 @@ /* ----------------------------------------------------------------------------- - * $Id: MBlock.h,v 1.4 1999/02/05 16:02:45 simonm Exp $ + * $Id: MBlock.h,v 1.13 2002/02/14 17:21:50 sof Exp $ * * (c) The GHC Team, 1998-1999 * * MegaBlock Allocator interface. * * ---------------------------------------------------------------------------*/ - +#ifndef __MBLOCK_H__ +#define __MBLOCK_H__ extern lnat mblocks_allocated; +#if defined(mingw32_TARGET_OS) +extern int is_heap_alloced(const void* p); +#endif + extern void * getMBlock(void); extern void * getMBlocks(nat n); + +#if freebsd2_TARGET_OS || freebsd_TARGET_OS +/* Executable is loaded from 0x0 + * Shared libraries are loaded at 0x2000000 + * Stack is at the top of the address space. The kernel probably owns + * 0x8000000 onwards, so we'll pick 0x5000000. + */ +#define HEAP_BASE 0x50000000 + +#elif netbsd_TARGET_OS +/* NetBSD i386 shared libs are at 0x40000000 + */ +#define HEAP_BASE 0x50000000 +#elif openbsd_TARGET_OS +#define HEAP_BASE 0x50000000 +#elif linux_TARGET_OS +/* Any ideas? + */ +#define HEAP_BASE 0x50000000 + +#elif solaris2_TARGET_OS +/* guess */ +#define HEAP_BASE 0x50000000 + +#elif osf3_TARGET_OS +/* 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 darwin_TARGET_OS +/* guess */ +#define HEAP_BASE 0x50000000 + +#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