Changeset 9bda3af6 in mainline


Ignore:
Timestamp:
2006-03-13T10:17:27Z (19 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0967877
Parents:
d3dfa42
Message:

Better purge page selection.

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/src/mm/tlb.c

    rd3dfa42 r9bda3af6  
    9595
    9696
    97 void tlb_invalidate_pages(asid_t asid, __address va, count_t cnt)
     97void tlb_invalidate_pages(asid_t asid, __address page, count_t cnt)
    9898{
    9999
     
    103103        int b=0;
    104104        int c=cnt;
    105         int i;
     105
     106        __address va;
     107        va=page;
    106108
    107109        rr.word = rr_read(VA2VRN(va));
     
    133135                case 1: /*cnt 4-15*/
    134136                {
    135                         cnt=(cnt/4)+1;
     137                        /*cnt=((cnt-1)/4)+1;*/
    136138                        ps=PAGE_WIDTH+2;
    137139                        va&=~((1<<ps)-1);
     
    140142                case 2: /*cnt 16-63*/
    141143                {
    142                         cnt=(cnt/16)+1;
     144                        /*cnt=((cnt-1)/16)+1;*/
    143145                        ps=PAGE_WIDTH+4;
    144146                        va&=~((1<<ps)-1);
     
    147149                case 3: /*cnt 64-255*/
    148150                {
    149                         cnt=(cnt/64)+1;
     151                        /*cnt=((cnt-1)/64)+1;*/
    150152                        ps=PAGE_WIDTH+6;
    151153                        va&=~((1<<ps)-1);
     
    154156                case 4: /*cnt 256-1023*/
    155157                {
    156                         cnt=(cnt/256)+1;
     158                        /*cnt=((cnt-1)/256)+1;*/
    157159                        ps=PAGE_WIDTH+8;
    158160                        va&=~((1<<ps)-1);
     
    161163                case 5: /*cnt 1024-4095*/
    162164                {
    163                         cnt=(cnt/1024)+1;
     165                        /*cnt=((cnt-1)/1024)+1;*/
    164166                        ps=PAGE_WIDTH+10;
    165167                        va&=~((1<<ps)-1);
     
    168170                case 6: /*cnt 4096-16383*/
    169171                {
    170                         cnt=(cnt/4096)+1;
     172                        /*cnt=((cnt-1)/4096)+1;*/
    171173                        ps=PAGE_WIDTH+12;
    172174                        va&=~((1<<ps)-1);
     
    176178                case 8: /*cnt 65536-(256K-1)*/
    177179                {
    178                         cnt=(cnt/16384)+1;
     180                        /*cnt=((cnt-1)/16384)+1;*/
    179181                        ps=PAGE_WIDTH+14;
    180182                        va&=~((1<<ps)-1);
     
    183185                default:
    184186                {
    185                         cnt=(cnt/(16384*16))+1;
     187                        /*cnt=((cnt-1)/(16384*16))+1;*/
    186188                        ps=PAGE_WIDTH+18;
    187189                        va&=~((1<<ps)-1);
    188190                        break;
    189191                }
    190                        
    191         }
    192         for(i=0;i<cnt;i++)      {
    193         __asm__ volatile
    194         (
    195                 "ptc.l %0,%1;;"
    196                 :
    197                 : "r"(va), "r"(ps<<2)
    198         );
    199         va+=(1<<ps);
     192        }
     193        /*cnt+=(page!=va);*/
     194        for(;va<(page+cnt*(PAGE_SIZE));va+=(1<<ps))     {
     195                __asm__ volatile
     196                (
     197                        "ptc.l %0,%1;;"
     198                        :
     199                        : "r"(va), "r"(ps<<2)
     200                );
    200201        }
    201202        srlz_d();
  • test/mm/purge1/test.c

    rd3dfa42 r9bda3af6  
    7979       
    8080
    81         tlb_invalidate_pages(8,0x18000,13);
     81        tlb_invalidate_pages(8,0x0c000,14);
    8282       
    8383        /*tlb_invalidate_all();*/
Note: See TracChangeset for help on using the changeset viewer.