⛏️ index : haiku.git

/*
 * Copyright 2021, Haiku, Inc.
 * Distributed under the terms of the MIT License.
 */


#ifndef MMU_H
#define MMU_H


#include <SupportDefs.h>

#include <boot/platform.h>
#include <util/FixedWidthPointer.h>


extern uint8* gMemBase;
extern size_t gTotalMem;


void mmu_init();
void mmu_init_for_kernel(addr_t& satp);


inline addr_t
fix_address(addr_t address)
{
	addr_t result;
	if (platform_bootloader_address_to_kernel_address((void *)address, &result)
		!= B_OK)
		return address;

	return result;
}


template<typename Type>
inline void
fix_address(FixedWidthPointer<Type>& p)
{
	if (p != NULL)
		p.SetTo(fix_address(p.Get()));
}


#endif	/* MMU_H */