Index: libc/arch/amd64/_link.ld.in
===================================================================
--- libc/arch/amd64/_link.ld.in	(revision 8bc924ed72f35757c48f7229aecd34949ee8d961)
+++ libc/arch/amd64/_link.ld.in	(revision 07d960a2b9ef20ab87c0d6809d67083c4fa64298)
@@ -35,8 +35,9 @@
 		*(COMMON);
 		*(.bss);
-		_heap = .;
-		QUAD(0xdeadbeef);
 	} :data
 
+	. = ALIGN(0x1000);
+	_heap = .;
+	
 	/DISCARD/ : {
 		*(*);
Index: libc/arch/ia32/_link.ld.in
===================================================================
--- libc/arch/ia32/_link.ld.in	(revision 8bc924ed72f35757c48f7229aecd34949ee8d961)
+++ libc/arch/ia32/_link.ld.in	(revision 07d960a2b9ef20ab87c0d6809d67083c4fa64298)
@@ -34,7 +34,8 @@
                 *(COMMON);
                 *(.bss);
-		_heap = .;
-		LONG(0xdeadbeef);
 	} :data
+	
+	. = ALIGN(0x1000);
+	_heap = .;
 	
 	/DISCARD/ : {
Index: libc/arch/ia64/_link.ld.in
===================================================================
--- libc/arch/ia64/_link.ld.in	(revision 8bc924ed72f35757c48f7229aecd34949ee8d961)
+++ libc/arch/ia64/_link.ld.in	(revision 07d960a2b9ef20ab87c0d6809d67083c4fa64298)
@@ -42,7 +42,8 @@
 		*(COMMON);
 		*(.bss);
-		_heap = .;
-		QUAD(0xdeadbeef);
 	} :data
+
+	. = ALIGN(0x4000);
+	_heap = .;
  
 	/DISCARD/ : {
Index: libc/arch/mips32/_link.ld.in
===================================================================
--- libc/arch/mips32/_link.ld.in	(revision 8bc924ed72f35757c48f7229aecd34949ee8d961)
+++ libc/arch/mips32/_link.ld.in	(revision 07d960a2b9ef20ab87c0d6809d67083c4fa64298)
@@ -46,7 +46,8 @@
 		*(.bss);
 		*(COMMON);
-		_heap = .;
-		LONG(0xdeadbeef);
 	} :data
+
+	. = ALIGN(0x4000);
+	_heap = .;
 
 	/DISCARD/ : {
Index: libc/arch/ppc32/_link.ld.in
===================================================================
--- libc/arch/ppc32/_link.ld.in	(revision 8bc924ed72f35757c48f7229aecd34949ee8d961)
+++ libc/arch/ppc32/_link.ld.in	(revision 07d960a2b9ef20ab87c0d6809d67083c4fa64298)
@@ -36,7 +36,8 @@
 		*(COMMON);
 		*(.bss);
-		_heap = .;
-		LONG(0xdeadbeef);
 	} :data
+
+	. = ALIGN(0x1000);
+	_heap = .;
 	
 	/DISCARD/ : {
Index: libc/arch/ppc64/_link.ld.in
===================================================================
--- libc/arch/ppc64/_link.ld.in	(revision 8bc924ed72f35757c48f7229aecd34949ee8d961)
+++ libc/arch/ppc64/_link.ld.in	(revision 07d960a2b9ef20ab87c0d6809d67083c4fa64298)
@@ -38,7 +38,8 @@
 		*(COMMON);
 		*(.bss);
-		_heap = .;
-		LONG(0xdeadbeef);
 	} :data
+
+	. = ALIGN(0x1000);
+	_heap = .;
 	
 	/DISCARD/ : {
Index: libc/generic/libc.c
===================================================================
--- libc/generic/libc.c	(revision 8bc924ed72f35757c48f7229aecd34949ee8d961)
+++ libc/generic/libc.c	(revision 07d960a2b9ef20ab87c0d6809d67083c4fa64298)
@@ -35,4 +35,7 @@
 #include <ipc/ipc.h>
 #include <async.h>
+#include <as.h>
+
+extern char _heap;
 
 void _exit(int status) {
@@ -43,4 +46,5 @@
 	psthread_data_t *pt;
 
+	(void) as_area_create(&_heap, 1, AS_AREA_WRITE | AS_AREA_READ);
 	_async_init();
 	pt = psthread_setup();
