Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 878 → Rev 879

/kernel/trunk/arch/ia64/include/mm/page.h
45,7 → 45,7
 
#define PAGE_SIZE FRAME_SIZE
#define PAGE_WIDTH FRAME_WIDTH
#define KERNEL_PAGE_WIDTH 26
#define KERNEL_PAGE_WIDTH 28
 
 
 
229,8 → 229,8
static inline __u64 rr_read(index_t i)
{
__u64 ret;
ASSERT(i < REGION_REGISTERS);
i=i<<VRN_SHIFT;
__asm__ volatile ("mov %0 = rr[%1]\n" : "=r" (ret) : "r" (i));
return ret;
245,6 → 245,7
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"
:
/kernel/trunk/arch/ia64/src/mm/page.c
56,7 → 56,6
void set_environment(void)
{
 
//#ifdef NEVERDEFINED
region_register rr;
pta_register pta;
int i;
63,11 → 62,13
 
/*
* First set up kernel region register.
* This action is redundand (see start.S) but I would to keep it to make sure that
*no unexpected changes will be made.
*/
rr.word = rr_read(VRN_KERNEL);
rr.map.ve = 0; /* disable VHPT walker */
rr.map.ps = PAGE_WIDTH;
rr.map.rid = ASID_KERNEL;
rr.map.rid = ASID2RID(ASID_KERNEL,VRN_KERNEL);
rr_write(VRN_KERNEL, rr.word);
srlz_i();
srlz_d();
82,7 → 83,7
rr.word == rr_read(i);
rr.map.ve = 0; /* disable VHPT walker */
rr.map.rid = ASID_INVALID;
rr.map.rid = ASID2RID(ASID_INVALID,i);
rr_write(i, rr.word);
srlz_i();
srlz_d();
100,7 → 101,6
srlz_i();
srlz_d();
//#endif
 
return ;
/kernel/trunk/arch/ia64/src/start.S
50,17 → 50,8
kernel_image_start:
.auto
 
#Fill TR.i and TR.d and enable paging
#Fill TR.i and TR.d using Region Register #VRN_KERNEL
 
mov r9=rr[r0]
movl r10=(RR_MASK)
and r9=r10,r9
movl r10=((ASID2RID(ASID_KERNEL,VRN_KERNEL)<<RID_SHIFT)|(KERNEL_PAGE_WIDTH<<PS_SHIFT))
or r9=r10,r9
mov rr[r0]=r9
 
 
movl r8=(VRN_KERNEL<<VRN_SHIFT)
mov r9=rr[r8]
movl r10=(RR_MASK)
81,11 → 72,6
itr.d dtr[r0]=r10
 
 
 
 
 
 
 
# initialize PSR
mov psr.l = r0
srlz.i
100,6 → 86,8
srlz.d
srlz.i
.explicit
 
/*Return from interupt is only the way how to fill upper half word of PSR*/
{rfi;;}
{nop 0;;}
{nop 0;;}
109,6 → 97,10
{nop 0;;}
{nop 0;;}
{nop 0;;}
 
.global paging_start
/*Now we are paging*/
paging_start:
{nop 0;;}
{nop 0;;}
{nop 0;;}
118,9 → 110,6
{nop 0;;}
{nop 0;;}
 
.global paging_start
paging_start:
 
.auto
# switch to register bank 1