Changeset 5ac2e61 in mainline for arch/ia64/src/start.S


Ignore:
Timestamp:
2006-02-22T23:45:51Z (19 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ab46edb
Parents:
7d53ef4
Message:

Uaaaaaaa ;-) Itanium Paging !!!!!! ;-)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • arch/ia64/src/start.S

    r7d53ef4 r5ac2e61  
    2727#
    2828
     29
    2930#include <arch/register.h>
     31#include <arch/mm/page.h>
     32#include <arch/mm/asid.h>
     33#include <mm/asid.h>
     34
     35
     36#define RR_MASK (0xFFFFFFFF00000002)
     37#define RID_SHIFT 8
     38#define PS_SHIFT 2
     39
     40
     41#define KERNEL_TRANSLATION_I 0x0010000000000661
     42#define KERNEL_TRANSLATION_D 0x0010000000000661
     43
    3044
    3145.section K_TEXT_START
     
    3751        .auto
    3852
     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       
     63
     64        movl r8=(VRN_KERNEL<<VRN_SHIFT)
     65        mov r9=rr[r8]
     66        movl r10=(RR_MASK)
     67        and r9=r10,r9
     68        movl r10=((ASID2RID(ASID_KERNEL,VRN_KERNEL)<<RID_SHIFT)|(KERNEL_PAGE_WIDTH<<PS_SHIFT))
     69        or  r9=r10,r9
     70        mov rr[r8]=r9
     71
     72
     73        movl r8=(VRN_KERNEL<<VRN_SHIFT)
     74        mov cr.ifa=r8
     75        movl r10=(KERNEL_PAGE_WIDTH<<PS_SHIFT)
     76        mov cr.itir=r10
     77        movl r10=(KERNEL_TRANSLATION_I)
     78        itr.i itr[r0]=r10
     79
     80#       mov cr.ifa=r0
     81#       movl r10=(KERNEL_PAGE_WIDTH<<PS_SHIFT)
     82#       mov cr.itir=r10
     83        movl r10=(KERNEL_TRANSLATION_D)
     84        itr.d dtr[r0]=r10
     85
     86
     87
     88
     89
     90
     91
    3992        # initialize PSR
    4093        mov psr.l = r0
    4194        srlz.i
    4295        srlz.d
    43         ssm PSR_IC_MASK
     96        movl r10=(PSR_DT_MASK|PSR_RT_MASK|PSR_IT_MASK|PSR_IC_MASK)  /*Enable paging*/
     97        mov r9=psr
     98        or r10=r10,r9
     99        mov cr.ipsr=r10
     100        mov cr.ifs=r0
     101#       movl r8=(paging_start+VRN_KERNEL<<VRN_SHIFT)
     102        movl r8=paging_start
     103        mov cr.iip=r8
    44104        srlz.d
     105        srlz.i
     106.explicit
     107        {rfi;;}
     108        {nop 0;;}
     109        {nop 0;;}
     110        {nop 0;;}
     111        {nop 0;;}
     112        {nop 0;;}
     113        {nop 0;;}
     114        {nop 0;;}
     115        {nop 0;;}
     116        {nop 0;;}
     117        {nop 0;;}
     118        {nop 0;;}
     119        {nop 0;;}
     120        {nop 0;;}
     121        {nop 0;;}
     122        {nop 0;;}
     123        {nop 0;;}
     124
     125.global paging_start
     126paging_start:
     127
     128.auto
    45129       
    46130        # switch to register bank 1
     
    49133        # initialize register stack
    50134        mov ar.rsc = r0
    51         mov ar.bspstore = r0
     135        movl r8=(VRN_KERNEL<<VRN_SHIFT)
     136        mov ar.bspstore = r8
     137#       mov ar.bspstore = r0
    52138        loadrs
    53139
    54140        .explicit
    55141        # initialize memory stack to some sane value
    56         movl r12 = stack0       ;;
     142#       movl r12 = stack0       ;;
     143        movl r12 = stack0       + (VRN_KERNEL<<VRN_SHIFT);;
     144       
    57145        add r12 = - 16, r12     /* allocate a scratch area on the stack */
    58146
    59147        # initialize gp (Global Pointer) register
    60         movl r1 = _hardcoded_load_address
     148        movl r1 = _hardcoded_load_address       ;;
     149
     150#       movl r1 = _hardcoded_load_address + (VRN_KERNEL<<VRN_SHIFT) ;;
    61151       
    62         ;;
    63152
    64153        #
     
    72161        addl r19 = @gprel(hardcoded_load_address), gp
    73162        ;;
    74         st8 [r17] = r14
    75         st8 [r18] = r15
     163        st4 [r17] = r14
     164        st4 [r18] = r15
    76165        st8 [r19] = r16
     166
     167
     168.auto
    77169       
    78         br.call.sptk.many b0=main_bsp
     170        movl r18=main_bsp
     171        mov b1=r18
     172        br.call.sptk.many b0=b1
     173
     174#       br.call.sptk.many b0=main_bsp
    79175
    801760:
Note: See TracChangeset for help on using the changeset viewer.