Changeset 5ac2e61 in mainline for arch/ia64/src/start.S
- Timestamp:
- 2006-02-22T23:45:51Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ab46edb
- Parents:
- 7d53ef4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ia64/src/start.S
r7d53ef4 r5ac2e61 27 27 # 28 28 29 29 30 #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 30 44 31 45 .section K_TEXT_START … … 37 51 .auto 38 52 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 39 92 # initialize PSR 40 93 mov psr.l = r0 41 94 srlz.i 42 95 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 44 104 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 126 paging_start: 127 128 .auto 45 129 46 130 # switch to register bank 1 … … 49 133 # initialize register stack 50 134 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 52 138 loadrs 53 139 54 140 .explicit 55 141 # initialize memory stack to some sane value 56 movl r12 = stack0 ;; 142 # movl r12 = stack0 ;; 143 movl r12 = stack0 + (VRN_KERNEL<<VRN_SHIFT);; 144 57 145 add r12 = - 16, r12 /* allocate a scratch area on the stack */ 58 146 59 147 # 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) ;; 61 151 62 ;;63 152 64 153 # … … 72 161 addl r19 = @gprel(hardcoded_load_address), gp 73 162 ;; 74 st 8[r17] = r1475 st 8[r18] = r15163 st4 [r17] = r14 164 st4 [r18] = r15 76 165 st8 [r19] = r16 166 167 168 .auto 77 169 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 79 175 80 176 0:
Note:
See TracChangeset
for help on using the changeset viewer.