Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 900 → Rev 901

/kernel/trunk/arch/ia64/include/mm/page.h
30,25 → 30,12
#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>
#include <typedefs.h>
#include <debug.h>
 
#endif
 
#define PAGE_SIZE FRAME_SIZE
#define PAGE_WIDTH FRAME_WIDTH
#define KERNEL_PAGE_WIDTH 28
 
/** Bit width of the TLB-locked portion of kernel address space. */
#define KERNEL_PAGE_WIDTH 28 /* 256M */
 
 
#define SET_PTL0_ADDRESS_ARCH(x) /**< To be removed as situation permits. */
 
#define PPN_SHIFT 12
55,6 → 42,7
 
#define VRN_SHIFT 61
#define VRN_MASK (7LL << VRN_SHIFT)
#define VA2VRN(va) ((va)>>VRN_SHIFT)
 
#ifdef __ASM__
#define VRN_KERNEL 7
67,7 → 55,6
#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 */
87,13 → 74,16
#define AR_EXECUTE 0x1
#define AR_WRITE 0x2
 
#ifndef __ASM__
 
#define VA_REGION_INDEX 61
#include <arch/mm/frame.h>
#include <arch/barrier.h>
#include <genarch/mm/page_ht.h>
#include <arch/mm/asid.h>
#include <arch/types.h>
#include <typedefs.h>
#include <debug.h>
 
#define VA_REGION(va) (va>>VA_REGION_INDEX)
 
#ifndef __ASM__
 
struct vhpt_tag_info {
unsigned long long tag : 63;
unsigned ti : 1;
155,8 → 145,6
__u64 word[4];
} vhpt_entry_t;
 
typedef vhpt_entry_t tlb_entry_t;
 
struct region_register_map {
unsigned ve : 1;
unsigned : 1;
230,13 → 218,10
{
__u64 ret;
ASSERT(i < REGION_REGISTERS);
i=i<<VRN_SHIFT;
__asm__ volatile ("mov %0 = rr[%1]\n" : "=r" (ret) : "r" (i));
__asm__ volatile ("mov %0 = rr[%1]\n" : "=r" (ret) : "r" (i << VRN_SHIFT));
return ret;
}
 
 
/** Write Region Register.
*
* @param i Region register index.
245,11 → 230,11
static inline void rr_write(index_t i, __u64 v)
{
ASSERT(i < REGION_REGISTERS);
i=i<<VRN_SHIFT;
__asm__ volatile (
"mov rr[%0] = %1;;\n"
:
: "r" (i), "r" (v));
"mov rr[%0] = %1\n"
:
: "r" (i << VRN_SHIFT), "r" (v)
);
}
/** Read Page Table Register.
280,10 → 265,6
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);
 
 
 
#endif
 
#endif