30,7 → 30,11 |
#ifndef __ia64_PAGE_H__ |
#define __ia64_PAGE_H__ |
|
#ifndef __ASM__ |
|
|
#include <arch/mm/frame.h> |
#include <arch/barrier.h> |
#include <genarch/mm/page_ht.h> |
#include <arch/mm/asid.h> |
#include <arch/types.h> |
37,12 → 41,14 |
#include <typedefs.h> |
#include <debug.h> |
|
#endif |
|
#define PAGE_SIZE FRAME_SIZE |
#define PAGE_WIDTH FRAME_WIDTH |
#define KERNEL_PAGE_WIDTH 26 |
|
#define KA2PA(x) ((__address) (x)) |
#define PA2KA(x) ((__address) (x)) |
|
|
#define SET_PTL0_ADDRESS_ARCH(x) /**< To be removed as situation permits. */ |
|
#define PPN_SHIFT 12 |
49,9 → 55,19 |
|
#define VRN_SHIFT 61 |
#define VRN_MASK (7LL << VRN_SHIFT) |
#define VRN_KERNEL 0 |
|
#ifdef __ASM__ |
#define VRN_KERNEL 7 |
#else |
#define VRN_KERNEL 7LL |
#endif |
|
#define REGION_REGISTERS 8 |
|
#define KA2PA(x) ((__address) (x-(VRN_KERNEL<<VRN_SHIFT))) |
#define PA2KA(x) ((__address) (x+(VRN_KERNEL<<VRN_SHIFT))) |
|
|
#define VHPT_WIDTH 20 /* 1M */ |
#define VHPT_SIZE (1 << VHPT_WIDTH) |
#define VHPT_BASE 0 /* Must be aligned to VHPT_SIZE */ |
76,8 → 92,8 |
|
#define VA_REGION(va) (va>>VA_REGION_INDEX) |
|
#ifndef __ASM__ |
|
|
struct vhpt_tag_info { |
unsigned long long tag : 63; |
unsigned ti : 1; |
263,4 → 279,19 |
extern bool vhpt_compare(__address page, asid_t asid, vhpt_entry_t *v); |
extern void vhpt_set_record(vhpt_entry_t *v, __address page, asid_t asid, __address frame, int flags); |
|
|
static inline void pokus(void) |
{ |
region_register rr; |
rr.word=rr_read(0); |
srlz_d(); |
rr_write(0,rr.word); |
srlz_d(); |
|
} |
|
#endif |
|
#endif |
|
|