Changeset e84439a in mainline for arch/mips/src/start.S
- Timestamp:
- 2005-09-06T08:51:22Z (20 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e949fd6
- Parents:
- 39ae77b
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/mips/src/start.S
r39ae77b re84439a 1 # 1 2 2 # Copyright (C) 2001-2004 Jakub Jermar 3 3 # All rights reserved. … … 27 27 # 28 28 29 #include <arch/asm/macro.h> 30 31 #define STACK_SPACE 128 32 29 #define __ASM__ 30 31 #include <arch/asm/regname.h> 32 #include <arch/mm/page.h> 33 #include <arch/asm/boot.h> 34 #include <arch/context.h> 35 33 36 .text 34 37 … … 42 45 .global exception_entry 43 46 47 .macro REGISTERS_STORE r 48 sw $at,EOFFSET_AT(\r) 49 sw $v0,EOFFSET_V0(\r) 50 sw $v1,EOFFSET_V1(\r) 51 sw $a0,EOFFSET_A0(\r) 52 sw $a1,EOFFSET_A1(\r) 53 sw $a2,EOFFSET_A2(\r) 54 sw $a3,EOFFSET_A3(\r) 55 sw $t0,EOFFSET_A4(\r) 56 sw $t1,EOFFSET_T1(\r) 57 sw $t2,EOFFSET_T2(\r) 58 sw $t3,EOFFSET_T3(\r) 59 sw $t4,EOFFSET_T4(\r) 60 sw $t5,EOFFSET_T5(\r) 61 sw $t6,EOFFSET_T6(\r) 62 sw $t7,EOFFSET_T7(\r) 63 sw $t8,EOFFSET_T8(\r) 64 sw $t9,EOFFSET_T9(\r) 65 sw $s0,EOFFSET_S0(\r) 66 sw $s1,EOFFSET_S1(\r) 67 sw $s2,EOFFSET_S2(\r) 68 sw $s3,EOFFSET_S3(\r) 69 sw $s4,EOFFSET_S4(\r) 70 sw $s5,EOFFSET_S5(\r) 71 sw $s6,EOFFSET_S6(\r) 72 sw $s7,EOFFSET_S7(\r) 73 sw $s8,EOFFSET_S8(\r) 74 sw $gp,EOFFSET_GP(\r) 75 sw $ra,EOFFSET_RA(\r) 76 mflo $k0 77 mfhi $k1 78 sw $k0,EOFFSET_LO(\r) 79 sw $k1,EOFFSET_HI(\r) 80 .endm 81 82 .macro REGISTERS_LOAD r 83 lw $at,EOFFSET_AT(\r) 84 lw $v0,EOFFSET_V0(\r) 85 lw $v1,EOFFSET_V1(\r) 86 lw $a0,EOFFSET_A0(\r) 87 lw $a1,EOFFSET_A1(\r) 88 lw $a2,EOFFSET_A2(\r) 89 lw $a3,EOFFSET_A3(\r) 90 lw $t0,EOFFSET_A4(\r) 91 lw $t1,EOFFSET_T1(\r) 92 lw $t2,EOFFSET_T2(\r) 93 lw $t3,EOFFSET_T3(\r) 94 lw $t4,EOFFSET_T4(\r) 95 lw $t5,EOFFSET_T5(\r) 96 lw $t6,EOFFSET_T6(\r) 97 lw $t7,EOFFSET_T7(\r) 98 lw $t8,EOFFSET_T8(\r) 99 lw $t9,EOFFSET_T9(\r) 100 lw $s0,EOFFSET_S0(\r) 101 lw $s1,EOFFSET_S1(\r) 102 lw $s2,EOFFSET_S2(\r) 103 lw $s3,EOFFSET_S3(\r) 104 lw $s4,EOFFSET_S4(\r) 105 lw $s5,EOFFSET_S5(\r) 106 lw $s6,EOFFSET_S6(\r) 107 lw $s7,EOFFSET_S7(\r) 108 lw $s8,EOFFSET_S8(\r) 109 lw $gp,EOFFSET_GP(\r) 110 lw $ra,EOFFSET_RA(\r) 111 112 lw $k0,EOFFSET_LO(\r) 113 lw $k1,EOFFSET_HI(\r) 114 mtlo $k0 115 mthi $k1 116 .endm 117 118 44 119 .org 0x0 45 kernel_image_start:46 120 tlb_refill_entry: 47 121 j tlb_refill_handler … … 56 130 exception_entry: 57 131 exception_handler: 58 sub $ 29, STACK_SPACE59 REGISTERS_STORE $ 29132 sub $sp, REGISTER_SPACE 133 REGISTERS_STORE $sp 60 134 61 135 jal exception 62 136 nop 63 137 64 REGISTERS_LOAD $ 2965 add $ 29, STACK_SPACE138 REGISTERS_LOAD $sp 139 add $sp, REGISTER_SPACE 66 140 67 141 eret 142 nop 68 143 144 .org KA2PA(0x80000300) 145 kernel_image_start: 146 /* Load temporary stack */ 147 lui $sp, (TEMP_STACK_START + TEMP_STACK_SIZE) >> 16 148 ori $sp, (TEMP_STACK_START + TEMP_STACK_SIZE) & 0xffff 149 150 /* Not sure about this, but might be needed for PIC code???? */ 151 lui $gp, 0x8000 152 153 jal main_bsp 154 nop 155 156 .org KA2PA(TEMP_STACK_START) 157 .space TEMP_STACK_SIZE 158 69 159 tlb_refill_handler: 70 sub $ 29, STACK_SPACE71 REGISTERS_STORE $ 29160 sub $sp, REGISTER_SPACE 161 REGISTERS_STORE $sp 72 162 73 163 jal tlb_refill 74 164 nop 75 165 76 REGISTERS_LOAD $ 2977 add $ 29, STACK_SPACE166 REGISTERS_LOAD $sp 167 add $sp, REGISTER_SPACE 78 168 79 169 eret 170 nop 80 171 81 172 cache_error_handler: 82 sub $ 29, STACK_SPACE83 REGISTERS_STORE $ 29173 sub $sp, REGISTER_SPACE 174 REGISTERS_STORE $sp 84 175 85 176 jal cache_error 86 177 nop 87 178 88 REGISTERS_LOAD $ 2989 add $ 29, STACK_SPACE179 REGISTERS_LOAD $sp 180 add $sp, REGISTER_SPACE 90 181 91 182 eret 183 nop
Note:
See TracChangeset
for help on using the changeset viewer.