HelenOS sources
#ifndef KERN_ia64_TLB_H_
#define KERN_ia64_TLB_H_
#include <arch/mm/page.h>
#include <arch/mm/asid.h>
#include <arch/interrupt.h>
#include <typedefs.h>
#define DTR_KERNEL 0
#define ITR_KERNEL 0
#define DTR_KSTACK1 4
#define DTR_KSTACK2 5
typedef union {
uint64_t word[2];
struct {
unsigned int p : 1;
unsigned int : 1;
unsigned int ma : 3;
unsigned int a : 1;
unsigned int d : 1;
unsigned int pl : 2;
unsigned int ar : 3;
unsigned long long ppn : 38;
unsigned int : 2;
unsigned int ed : 1;
unsigned int ig1 : 11;
unsigned int : 2;
unsigned int ps : 6;
unsigned int key : 24;
unsigned int : 32;
} __attribute__((packed));
} __attribute__((packed)) tlb_entry_t;
extern void tc_mapping_insert(uintptr_t va, asid_t asid, tlb_entry_t entry, bool dtc);
extern void dtc_mapping_insert(uintptr_t va, asid_t asid, tlb_entry_t entry);
extern void itc_mapping_insert(uintptr_t va, asid_t asid, tlb_entry_t entry);
extern void tr_mapping_insert(uintptr_t va, asid_t asid, tlb_entry_t entry, bool dtr, size_t tr);
extern void dtr_mapping_insert(uintptr_t va, asid_t asid, tlb_entry_t entry, size_t tr);
extern void itr_mapping_insert(uintptr_t va, asid_t asid, tlb_entry_t entry, size_t tr);
extern void dtlb_kernel_mapping_insert(uintptr_t page, uintptr_t frame, bool dtr, size_t tr);
extern void dtr_purge(uintptr_t page, size_t width);
extern void dtc_pte_copy(pte_t *t);
extern void itc_pte_copy(pte_t *t);
extern void alternate_instruction_tlb_fault(unsigned int, istate_t *);
extern void alternate_data_tlb_fault(unsigned int, istate_t *);
extern void data_nested_tlb_fault(unsigned int, istate_t *);
extern void data_dirty_bit_fault(unsigned int, istate_t *);
extern void instruction_access_bit_fault(unsigned int, istate_t *);
extern void data_access_bit_fault(unsigned int, istate_t *);
extern void data_access_rights_fault(unsigned int, istate_t *);
extern void page_not_present(unsigned int, istate_t *);
#endif
HelenOS homepage, sources at GitHub