kernel/arch/vm: implement for riscv64

Change-Id: I0b463f3d2bca9f31b0aabacbf70a9774493d3467
Reviewed-on: https://review.haiku-os.org/c/haiku/+/4051
Reviewed-by: Alex von Gluck IV <[email protected]>
This commit is contained in:
X512
2021-08-06 14:47:32 +00:00
committed by Alex von Gluck IV
parent 7e6b3c0787
commit 7ef006297e
7 changed files with 1438 additions and 32 deletions
@@ -7,20 +7,23 @@
#include <arch/vm_translation_map.h>
#ifdef __cplusplus
extern "C" {
#endif
void riscv64_translation_map_change_asid(VMTranslationMap *map);
//gVirtFromPhysOffset = virtAdr - physAdr;
extern ssize_t gVirtFromPhysOffset;
status_t riscv64_map_address_range(addr_t virtualAddress,
phys_addr_t physicalAddress, size_t size);
void riscv64_unmap_address_range(addr_t virtualAddress, size_t size);
status_t riscv64_remap_address_range(addr_t *virtualAddress, size_t size,
bool unmap);
#ifdef __cplusplus
static inline void*
VirtFromPhys(phys_addr_t physAdr)
{
return (void*)(physAdr + gVirtFromPhysOffset);
}
#endif
static inline phys_addr_t
PhysFromVirt(void* virtAdr)
{
return (phys_addr_t)virtAdr - gVirtFromPhysOffset;
}
#endif /* _KERNEL_ARCH_RISCV64_VM_TRANSLATION_MAP_H */