Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 947 → Rev 946

/kernel/trunk/arch/ia64/src/mm/tlb.c
94,7 → 94,7
}
 
 
void tlb_invalidate_pages(asid_t asid, __address page, count_t cnt)
void tlb_invalidate_pages(asid_t asid, __address va, count_t cnt)
{
 
 
102,10 → 102,8
bool restore_rr = false;
int b=0;
int c=cnt;
int i;
 
__address va;
va=page;
 
rr.word = rr_read(VA2VRN(va));
if ((restore_rr = (rr.map.rid != ASID2RID(asid, VA2VRN(va))))) {
/*
134,7 → 132,7
}
case 1: /*cnt 4-15*/
{
/*cnt=((cnt-1)/4)+1;*/
cnt=(cnt/4)+1;
ps=PAGE_WIDTH+2;
va&=~((1<<ps)-1);
break;
141,7 → 139,7
}
case 2: /*cnt 16-63*/
{
/*cnt=((cnt-1)/16)+1;*/
cnt=(cnt/16)+1;
ps=PAGE_WIDTH+4;
va&=~((1<<ps)-1);
break;
148,7 → 146,7
}
case 3: /*cnt 64-255*/
{
/*cnt=((cnt-1)/64)+1;*/
cnt=(cnt/64)+1;
ps=PAGE_WIDTH+6;
va&=~((1<<ps)-1);
break;
155,7 → 153,7
}
case 4: /*cnt 256-1023*/
{
/*cnt=((cnt-1)/256)+1;*/
cnt=(cnt/256)+1;
ps=PAGE_WIDTH+8;
va&=~((1<<ps)-1);
break;
162,7 → 160,7
}
case 5: /*cnt 1024-4095*/
{
/*cnt=((cnt-1)/1024)+1;*/
cnt=(cnt/1024)+1;
ps=PAGE_WIDTH+10;
va&=~((1<<ps)-1);
break;
169,7 → 167,7
}
case 6: /*cnt 4096-16383*/
{
/*cnt=((cnt-1)/4096)+1;*/
cnt=(cnt/4096)+1;
ps=PAGE_WIDTH+12;
va&=~((1<<ps)-1);
break;
177,7 → 175,7
case 7: /*cnt 16384-65535*/
case 8: /*cnt 65536-(256K-1)*/
{
/*cnt=((cnt-1)/16384)+1;*/
cnt=(cnt/16384)+1;
ps=PAGE_WIDTH+14;
va&=~((1<<ps)-1);
break;
184,20 → 182,21
}
default:
{
/*cnt=((cnt-1)/(16384*16))+1;*/
cnt=(cnt/(16384*16))+1;
ps=PAGE_WIDTH+18;
va&=~((1<<ps)-1);
break;
}
}
/*cnt+=(page!=va);*/
for(;va<(page+cnt*(PAGE_SIZE));va+=(1<<ps)) {
__asm__ volatile
(
"ptc.l %0,%1;;"
:
: "r"(va), "r"(ps<<2)
);
for(i=0;i<cnt;i++) {
__asm__ volatile
(
"ptc.l %0,%1;;"
:
: "r"(va), "r"(ps<<2)
);
va+=(1<<ps);
}
srlz_d();
srlz_i();
/kernel/trunk/test/mm/purge1/test.c
78,7 → 78,7
}
 
tlb_invalidate_pages(8,0x0c000,14);
tlb_invalidate_pages(8,0x18000,13);
/*tlb_invalidate_all();*/