Changeset 7208b6c in mainline for kernel/arch/ia64/src/start.S


Ignore:
Timestamp:
2008-02-09T10:31:11Z (16 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a4884c70
Parents:
71eef11
Message:

Basic IA64 boot and kernel suport for real machines

File:
1 edited

Legend:

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

    r71eef11 r7208b6c  
    3636#define PS_SHIFT 2
    3737
    38 #define KERNEL_TRANSLATION_I 0x0010000000000661
    39 #define KERNEL_TRANSLATION_D 0x0010000000000661
     38#define KERNEL_TRANSLATION_I  0x0010000000000661
     39#define KERNEL_TRANSLATION_D  0x0010000000000661
     40#define KERNEL_TRANSLATION_VIO 0x0010000000000671
     41#define KERNEL_TRANSLATION_IO 0x00100FFFFC000671
     42#define VIO_OFFSET            0x0002000000000000
     43
     44#define IO_OFFSET             0x0001000000000000
     45
     46
    4047
    4148.section K_TEXT_START, "ax"
     
    4754        .auto
    4855
     56        mov psr.l = r0
     57        srlz.i
     58        srlz.d
     59
    4960        # Fill TR.i and TR.d using Region Register #VRN_KERNEL
     61
    5062
    5163        movl r8 = (VRN_KERNEL << VRN_SHIFT)
    5264        mov r9 = rr[r8]
     65
     66
    5367        movl r10 = (RR_MASK)
    5468        and r9 = r10, r9
    5569        movl r10 = ((RID_KERNEL << RID_SHIFT) | (KERNEL_PAGE_WIDTH << PS_SHIFT))
    5670        or  r9 = r10, r9
     71
     72
    5773        mov rr[r8] = r9
     74
     75
    5876
    5977        movl r8 = (VRN_KERNEL << VRN_SHIFT)
    6078        mov cr.ifa = r8
    61         movl r10 = (KERNEL_PAGE_WIDTH << PS_SHIFT)
    62         mov cr.itir = r10
     79
     80       
     81        mov r11 = cr.itir ;;
     82        movl r10 = (KERNEL_PAGE_WIDTH << PS_SHIFT);;
     83        or r10 =r10 , r11  ;;
     84        mov cr.itir = r10;;
     85
     86       
    6387        movl r10 = (KERNEL_TRANSLATION_I)
    6488        itr.i itr[r0] = r10
     89
     90       
    6591        movl r10 = (KERNEL_TRANSLATION_D)
    6692        itr.d dtr[r0] = r10
    6793
     94
     95        movl r7 = 1
     96        movl r8 = (VRN_KERNEL << VRN_SHIFT) | VIO_OFFSET
     97        mov cr.ifa = r8
     98        movl r10 = (KERNEL_TRANSLATION_VIO)
     99        itr.d dtr[r7] = r10
     100
     101
     102        mov r11 = cr.itir ;;
     103        movl r10 = ~0xfc;;
     104        and r10 =r10 , r11  ;;
     105        movl r11 = (IO_PAGE_WIDTH << PS_SHIFT);;
     106        or r10 =r10 , r11  ;;
     107        mov cr.itir = r10;;
     108
     109
     110        movl r7 = 2
     111        movl r8 = (VRN_KERNEL << VRN_SHIFT) | IO_OFFSET
     112        mov cr.ifa = r8
     113        movl r10 = (KERNEL_TRANSLATION_IO)
     114        itr.d dtr[r7] = r10
     115
     116
     117
     118
    68119        # initialize PSR
    69         mov psr.l = r0
    70         srlz.i
    71         srlz.d
    72120        movl r10 = (PSR_DT_MASK | PSR_RT_MASK | PSR_IT_MASK | PSR_IC_MASK)  /* Enable paging */
    73121        mov r9 = psr
Note: See TracChangeset for help on using the changeset viewer.