Changeset 085434a in mainline


Ignore:
Timestamp:
2006-02-25T19:14:48Z (19 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
13c1a0c
Parents:
578aebf7
Message:

Itanium kernel page extended to maximum (256M) repaired RR manipulation functions, paging setuping function and added some comments.

Location:
arch/ia64
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/include/mm/page.h

    r578aebf7 r085434a  
    4646#define PAGE_SIZE       FRAME_SIZE
    4747#define PAGE_WIDTH      FRAME_WIDTH
    48 #define KERNEL_PAGE_WIDTH       26
     48#define KERNEL_PAGE_WIDTH       28
    4949
    5050
     
    230230{
    231231        __u64 ret;
    232        
    233232        ASSERT(i < REGION_REGISTERS);
     233        i=i<<VRN_SHIFT;
    234234        __asm__ volatile ("mov %0 = rr[%1]\n" : "=r" (ret) : "r" (i));
    235235       
     
    246246{
    247247        ASSERT(i < REGION_REGISTERS);
     248        i=i<<VRN_SHIFT;
    248249        __asm__ volatile (
    249250        "mov rr[%0] = %1;;\n"
  • arch/ia64/src/mm/page.c

    r578aebf7 r085434a  
    5757{
    5858
    59 //#ifdef NEVERDEFINED   
    6059        region_register rr;
    6160        pta_register pta;       
     
    6463        /*
    6564         * First set up kernel region register.
     65         * This action is redundand (see start.S) but I would to keep it to make sure that
     66         *no unexpected changes will be made.
    6667         */
    6768        rr.word = rr_read(VRN_KERNEL);
    6869        rr.map.ve = 0;                  /* disable VHPT walker */
    6970        rr.map.ps = PAGE_WIDTH;
    70         rr.map.rid = ASID_KERNEL;
     71        rr.map.rid = ASID2RID(ASID_KERNEL,VRN_KERNEL); 
    7172        rr_write(VRN_KERNEL, rr.word);
    7273        srlz_i();
     
    8384                rr.word == rr_read(i);
    8485                rr.map.ve = 0;          /* disable VHPT walker */
    85                 rr.map.rid = ASID_INVALID;
     86                rr.map.rid = ASID2RID(ASID_INVALID,i);
    8687                rr_write(i, rr.word);
    8788                srlz_i();
     
    101102        srlz_d();
    102103       
    103 //#endif
    104104
    105105        return ;       
  • arch/ia64/src/start.S

    r578aebf7 r085434a  
    5151        .auto
    5252
    53         #Fill TR.i and TR.d and enable paging
    54 
    55         mov r9=rr[r0]
    56         movl r10=(RR_MASK)
    57         and r9=r10,r9
    58         movl r10=((ASID2RID(ASID_KERNEL,VRN_KERNEL)<<RID_SHIFT)|(KERNEL_PAGE_WIDTH<<PS_SHIFT))
    59         or  r9=r10,r9
    60         mov rr[r0]=r9
    61 
    62        
     53        #Fill TR.i and TR.d using Region Register #VRN_KERNEL
    6354
    6455        movl r8=(VRN_KERNEL<<VRN_SHIFT)
     
    8273
    8374
    84 
    85 
    86 
    87 
    88 
    8975        # initialize PSR
    9076        mov psr.l = r0
     
    10187        srlz.i
    10288.explicit
     89
     90        /*Return from interupt is only the way how to fill upper half word of PSR*/
    10391        {rfi;;}
    104         {nop 0;;}
    105         {nop 0;;}
    106         {nop 0;;}
    107         {nop 0;;}
    108         {nop 0;;}
    109         {nop 0;;}
    110         {nop 0;;}
    111         {nop 0;;}
    11292        {nop 0;;}
    11393        {nop 0;;}
     
    120100
    121101.global paging_start
     102        /*Now we are paging*/
    122103paging_start:
     104        {nop 0;;}
     105        {nop 0;;}
     106        {nop 0;;}
     107        {nop 0;;}
     108        {nop 0;;}
     109        {nop 0;;}
     110        {nop 0;;}
     111        {nop 0;;}
    123112
    124113.auto
Note: See TracChangeset for help on using the changeset viewer.