Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 868 → Rev 869

/kernel/trunk/arch/ia64/include/faddr.h
45,11 → 45,30
__address faddr;
__asm__(
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"ld8 %0 = [%1]\n\t"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
"nop 0;;"
 
: "=r" (faddr)
: "r" (fptr)
);
 
/*faddr = *((__address *)(fptr));;*/
return faddr;
}
 
/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
/kernel/trunk/arch/ia64/include/register.h
38,6 → 38,12
#define PSR_I_MASK 0x4000
#define PSR_PK_MASK 0x8000
 
#define PSR_DT_MASK (1<<17)
#define PSR_RT_MASK (1<<27)
#define PSR_IT_MASK 0x0000001000000000
 
 
 
/** Application registers. */
#define AR_KR0 0
#define AR_KR1 1