38static void vm_invalidate_tlb(
uint32_t ea)
40 asm volatile (
"tlbiel %0,1"::
"r"(ea));
41 asm volatile (
"ptesync");
42 asm volatile (
"eieio");
45static int vm_common_check_get_idx(
uint32_t virt_addr,
int size)
49 assert(virt_addr>=0x30000000 && virt_addr<0x80000000);
58 int page_idx=vm_common_check_get_idx(virt_addr,
size);
59 int page_addr=phys_addr | wimg;
65 vm_invalidate_tlb(virt_addr);
76 int page_idx=vm_common_check_get_idx(virt_addr,
size);
82 vm_invalidate_tlb(virt_addr);
92 int page_idx=vm_common_check_get_idx(virt_addr,
size);
101 vm_invalidate_tlb(virt_addr);
unsigned int __mf_uintptr_t __attribute__((__mode__(__pointer__)))
void vm_set_user_mapping_flags(uint32_t virt_addr, int size, int wimg)
void vm_set_user_mapping_segfault_handler(vm_segfault_handler_t handler)
void vm_destroy_user_mapping(uint32_t virt_addr, int size)
uint32_t userpagetable[1280 *1024 *1024/VM_USER_PAGE_SIZE]
void vm_create_user_mapping(uint32_t virt_addr, uint64_t phys_addr, int size, int wimg)
vm_segfault_handler_t vm_segfault_handler
#define VM_USER_PAGE_BITS
#define VM_USER_PAGE_SIZE
#define VM_USER_PAGE_MASK
void *(* vm_segfault_handler_t)(int, void *, void *, int)