Index: generic/include/mm/heap.h
===================================================================
--- generic/include/mm/heap.h	(revision 4a5b2b0e821944b1ebbc89e16c5ac16be5881c04)
+++ generic/include/mm/heap.h	(revision 10e16a7258e74c3db1abf7fb13b527544a85950b)
@@ -32,7 +32,10 @@
 #include <arch/types.h>
 #include <typedefs.h>
+#include <mm/slab.h>
 
-#define malloc(size)		early_malloc(size)
-#define free(ptr)		early_free(ptr)
+//#define malloc(size)		early_malloc(size)
+//#define free(ptr)		early_free(ptr)
+#define malloc(size)		kalloc(size,0)
+#define free(ptr)		kfree(ptr)
 
 struct chunk {
Index: generic/include/mm/slab.h
===================================================================
--- generic/include/mm/slab.h	(revision 4a5b2b0e821944b1ebbc89e16c5ac16be5881c04)
+++ generic/include/mm/slab.h	(revision 10e16a7258e74c3db1abf7fb13b527544a85950b)
@@ -34,4 +34,10 @@
 #include <arch/atomic.h>
 
+/** Minimum size to be allocated by malloc */
+#define SLAB_MIN_MALLOC_W 3
+
+/** Maximum size to be allocated by malloc */
+#define SLAB_MAX_MALLOC_W 17
+
 /** Initial Magazine size (TODO: dynamically growing magazines) */
 #define SLAB_MAG_SIZE  4
@@ -41,5 +47,5 @@
 
 /** Maximum wasted space we allow for cache */
-#define SLAB_MAX_BADNESS(cache)   ((PAGE_SIZE << (cache)->order >> 2))
+#define SLAB_MAX_BADNESS(cache)   ((PAGE_SIZE << (cache)->order) >> 2)
 
 /* slab_reclaim constants */
@@ -110,3 +116,7 @@
 extern void slab_print_list(void);
 
+/* Malloc support */
+extern void * kalloc(unsigned int size, int flags);
+extern void kfree(void *obj);
+
 #endif
