Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 868 → Rev 869

/kernel/trunk/arch/ia64/include/mm/page.h
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
 
 
/kernel/trunk/arch/ia64/include/mm/asid.h
29,6 → 29,8
#ifndef __ia64_ASID_H__
#define __ia64_ASID_H__
 
#ifndef __ASM__
 
#include <arch/types.h>
 
typedef __u16 asid_t;
38,6 → 40,8
* Note that some architectures may support more bits,
* but those extra bits are not used by the kernel.
*/
#endif
#define RIDS_PER_ASID 7
#define RID_MAX 262143 /* 2^18 - 1 */
 
44,8 → 48,13
#define ASID2RID(asid, vrn) (((asid)*RIDS_PER_ASID)+(vrn))
#define RID2ASID(rid) ((rid)/RIDS_PER_ASID)
 
#ifndef __ASM__
 
 
typedef __u32 rid_t;
 
#endif
 
#define ASID_MAX_ARCH (RID_MAX/RIDS_PER_ASID)
 
#endif