rem: sHeapAreaSize = kInitialHeapSize;    sHeapBase = (void*)0x30000000;
add: sHeapBase = (void *)0x18000000; status_t status = _kern_init_heap_address_range((addr_t)sHeapBase, 0x48000000);
context: __init_heap(void){	hoardHeap::initNumProcs();	sHeapAreaSize = kInitialHeapSize;	// ToDo: add a VM call that instructs other areas to avoid the space after the heap when possible	//	(and if not, create it at the end of that range, so that the heap can grow as much as possible)	//	Then, move the heap back to 256 or 512 MB	sHeapBase = (void*)0x30000000;		// let the heap start at 3*256 MB for now	sHeapArea = create_area("heap", (void **)&sHeapBase, B_BASE_ADDRESS,		sHeapAreaSize, B_NO_LOCK, B_READ_AREA | B_WRITE_AREA);	if (sHeapArea < B_OK)		return sHeapArea;	sFreeHeapBase = (addr_t)sHeapBase;	sHeapLock = create_sem(1, "heap");	if (sHeapLock < B_OK)		return sHeapLock;	atfork(&init_after_fork);		// Note: Needs malloc(). Hence we need to be fully initialized.		// ToDo: We should actually also install a hook that is called before		// fork() is being executed. In a multithreaded app it would need to		// acquire *all* allocator locks, so that we don't fork() an		// inconsistent state.	return B_OK;}