Changeset c782434 in mainline
- Timestamp:
- 2006-06-06T13:33:54Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e269c53
- Parents:
- 8333801
- Location:
- arch/ppc32
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/ppc32/include/interrupt.h
r8333801 rc782434 38 38 #define INT_OFFSET 16 39 39 40 #define int_register(it, name, handler) exc_register(((it) +INT_OFFSET),name,handler)40 #define int_register(it, name, handler) exc_register(((it) + INT_OFFSET), name, handler) 41 41 42 #define VECTOR_DECREMENTER 10 42 #define VECTOR_DATA_STORAGE 2 43 #define VECTOR_INSTRUCTION_STORAGE 3 44 #define VECTOR_EXTERNAL 4 45 #define VECTOR_DECREMENTER 8 43 46 44 47 extern void start_decrementer(void); -
arch/ppc32/include/mm/page.h
r8333801 rc782434 144 144 } phte_t; 145 145 146 extern void pht_refill( bool data, istate_t *istate);146 extern void pht_refill(int n, istate_t *istate); 147 147 extern void pht_init(void); 148 148 -
arch/ppc32/src/exception.S
r8333801 rc782434 152 152 .global exc_system_reset 153 153 exc_system_reset: 154 b exc_system_reset 154 CONTEXT_STORE 155 156 lis r12, exc_dispatch@ha 157 addi r12, r12, exc_dispatch@l 158 mtsrr0 r12 159 160 li r3, 0 161 b jump_to_kernel 155 162 156 163 .org 0x200 157 164 .global exc_machine_check 158 165 exc_machine_check: 159 b exc_machine_check 166 CONTEXT_STORE 167 168 lis r12, exc_dispatch@ha 169 addi r12, r12, exc_dispatch@l 170 mtsrr0 r12 171 172 li r3, 1 173 b jump_to_kernel 160 174 161 175 .org 0x300 … … 164 178 CONTEXT_STORE 165 179 166 lis r12, pht_refill@ha167 addi r12, r12, pht_refill@l168 mtsrr0 r12 169 170 li r3, 1180 lis r12, exc_dispatch@ha 181 addi r12, r12, exc_dispatch@l 182 mtsrr0 r12 183 184 li r3, 2 171 185 b jump_to_kernel 172 186 … … 176 190 CONTEXT_STORE 177 191 178 lis r12, pht_refill@ha179 addi r12, r12, pht_refill@l180 mtsrr0 r12 181 182 li r3, 0192 lis r12, exc_dispatch@ha 193 addi r12, r12, exc_dispatch@l 194 mtsrr0 r12 195 196 li r3, 3 183 197 b jump_to_kernel 184 198 … … 187 201 exc_external: 188 202 CONTEXT_STORE 189 190 lis r12, ex tint_handler@ha191 addi r12, r12, ex tint_handler@l192 mtsrr0 r12 193 194 li r3, 0203 204 lis r12, exc_dispatch@ha 205 addi r12, r12, exc_dispatch@l 206 mtsrr0 r12 207 208 li r3, 4 195 209 b jump_to_kernel 196 210 … … 198 212 .global exc_alignment 199 213 exc_alignment: 200 b exc_alignment 214 CONTEXT_STORE 215 216 lis r12, exc_dispatch@ha 217 addi r12, r12, exc_dispatch@l 218 mtsrr0 r12 219 220 li r3, 5 221 b jump_to_kernel 201 222 202 223 .org 0x700 203 224 .global exc_program 204 225 exc_program: 205 b exc_program 226 CONTEXT_STORE 227 228 lis r12, exc_dispatch@ha 229 addi r12, r12, exc_dispatch@l 230 mtsrr0 r12 231 232 li r3, 6 233 b jump_to_kernel 206 234 207 235 .org 0x800 208 236 .global exc_fp_unavailable 209 237 exc_fp_unavailable: 210 b exc_fp_unavailable 238 CONTEXT_STORE 239 240 lis r12, exc_dispatch@ha 241 addi r12, r12, exc_dispatch@l 242 mtsrr0 r12 243 244 li r3, 7 245 b jump_to_kernel 211 246 212 247 .org 0x900 … … 219 254 mtsrr0 r12 220 255 221 li r3, 10256 li r3, 8 222 257 b jump_to_kernel 223 258 … … 225 260 .global exc_reserved0 226 261 exc_reserved0: 227 b exc_reserved0 262 CONTEXT_STORE 263 264 lis r12, exc_dispatch@ha 265 addi r12, r12, exc_dispatch@l 266 mtsrr0 r12 267 268 li r3, 9 269 b jump_to_kernel 228 270 229 271 .org 0xb00 230 272 .global exc_reserved1 231 273 exc_reserved1: 232 b exc_reserved1 274 CONTEXT_STORE 275 276 lis r12, exc_dispatch@ha 277 addi r12, r12, exc_dispatch@l 278 mtsrr0 r12 279 280 li r3, 10 281 b jump_to_kernel 233 282 234 283 .org 0xc00 … … 242 291 .global exc_trace 243 292 exc_trace: 244 b exc_trace 293 CONTEXT_STORE 294 295 lis r12, exc_dispatch@ha 296 addi r12, r12, exc_dispatch@l 297 mtsrr0 r12 298 299 li r3, 12 300 b jump_to_kernel -
arch/ppc32/src/interrupt.c
r8333801 rc782434 46 46 47 47 48 /** Handler of external interrupts */ 49 static void exception_external(int n, istate_t *istate) 50 { 51 int inum; 52 53 while ((inum = pic_get_pending()) != -1) { 54 exc_dispatch(inum + INT_OFFSET, istate); 55 pic_ack_interrupt(inum); 56 } 57 } 58 59 48 60 static void exception_decrementer(int n, istate_t *istate) 49 61 { … … 56 68 void interrupt_init(void) 57 69 { 70 exc_register(VECTOR_DATA_STORAGE, "data_storage", pht_refill); 71 exc_register(VECTOR_INSTRUCTION_STORAGE, "instruction_storage", pht_refill); 72 exc_register(VECTOR_EXTERNAL, "external", exception_external); 58 73 exc_register(VECTOR_DECREMENTER, "timer", exception_decrementer); 74 } 75 76 77 static void ipc_int(int n, istate_t *istate) 78 { 79 ipc_irq_send_notif(n - INT_OFFSET); 59 80 } 60 81 … … 63 84 void irq_ipc_bind_arch(__native irq) 64 85 { 65 panic("not implemented\n"); 66 /* TODO */ 86 int_register(irq, "ipc_int", ipc_int); 67 87 } 68 69 /** Handler of externul interrupts */70 void extint_handler(int n, istate_t *istate)71 {72 int inum;73 74 while ((inum = pic_get_pending()) != -1) {75 exc_dispatch(inum+INT_OFFSET, istate);76 pic_ack_interrupt(inum);77 }78 } -
arch/ppc32/src/mm/page.c
r8333801 rc782434 31 31 #include <arch/mm/frame.h> 32 32 #include <arch/asm.h> 33 #include <arch/interrupt.h> 33 34 #include <mm/frame.h> 34 35 #include <mm/page.h> … … 188 189 * 189 190 */ 190 void pht_refill( bool data, istate_t *istate)191 void pht_refill(int n, istate_t *istate) 191 192 { 192 193 __address badvaddr; … … 204 205 } 205 206 206 if ( data) {207 if (n == VECTOR_DATA_STORAGE) { 207 208 asm volatile ( 208 209 "mfdar %0\n"
Note:
See TracChangeset
for help on using the changeset viewer.