exceptions-64e.S (ec208491936d6adb8a70c3dd4a517cdfe54e823d) | exceptions-64e.S (89c81797d4a0779a957f4ea1f0c676cda203615b) |
---|---|
1/* 2 * Boot code and exception vectors for Book3E processors 3 * 4 * Copyright (C) 2007 Ben. Herrenschmidt (benh@kernel.crashing.org), IBM Corp. 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version --- 232 unchanged lines hidden (view full) --- 241 EXCEPTION_STUB(0x100, fp_unavailable) /* 0x0800 */ 242 EXCEPTION_STUB(0x120, system_call) /* 0x0c00 */ 243 EXCEPTION_STUB(0x140, ap_unavailable) /* 0x0f20 */ 244 EXCEPTION_STUB(0x160, decrementer) /* 0x0900 */ 245 EXCEPTION_STUB(0x180, fixed_interval) /* 0x0980 */ 246 EXCEPTION_STUB(0x1a0, watchdog) /* 0x09f0 */ 247 EXCEPTION_STUB(0x1c0, data_tlb_miss) 248 EXCEPTION_STUB(0x1e0, instruction_tlb_miss) | 1/* 2 * Boot code and exception vectors for Book3E processors 3 * 4 * Copyright (C) 2007 Ben. Herrenschmidt (benh@kernel.crashing.org), IBM Corp. 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version --- 232 unchanged lines hidden (view full) --- 241 EXCEPTION_STUB(0x100, fp_unavailable) /* 0x0800 */ 242 EXCEPTION_STUB(0x120, system_call) /* 0x0c00 */ 243 EXCEPTION_STUB(0x140, ap_unavailable) /* 0x0f20 */ 244 EXCEPTION_STUB(0x160, decrementer) /* 0x0900 */ 245 EXCEPTION_STUB(0x180, fixed_interval) /* 0x0980 */ 246 EXCEPTION_STUB(0x1a0, watchdog) /* 0x09f0 */ 247 EXCEPTION_STUB(0x1c0, data_tlb_miss) 248 EXCEPTION_STUB(0x1e0, instruction_tlb_miss) |
249 EXCEPTION_STUB(0x280, doorbell) 250 EXCEPTION_STUB(0x2a0, doorbell_crit) |
|
249 | 251 |
250#if 0 251 EXCEPTION_STUB(0x280, processor_doorbell) 252 EXCEPTION_STUB(0x220, processor_doorbell_crit) 253#endif | |
254 .globl interrupt_end_book3e 255interrupt_end_book3e: 256 257/* Critical Input Interrupt */ 258 START_EXCEPTION(critical_input); 259 CRIT_EXCEPTION_PROLOG(0x100, PROLOG_ADDITION_NONE) 260// EXCEPTION_COMMON(0x100, PACA_EXCRIT, INTS_DISABLE_ALL) 261// bl special_reg_save_crit --- 161 unchanged lines hidden (view full) --- 423 ld r15,PACA_EXCRIT+EX_R15(r13) 424 bl .save_nvgprs 425 bl .DebugException 426 b .ret_from_except 427 428kernel_dbg_exc: 429 b . /* NYI */ 430 | 252 .globl interrupt_end_book3e 253interrupt_end_book3e: 254 255/* Critical Input Interrupt */ 256 START_EXCEPTION(critical_input); 257 CRIT_EXCEPTION_PROLOG(0x100, PROLOG_ADDITION_NONE) 258// EXCEPTION_COMMON(0x100, PACA_EXCRIT, INTS_DISABLE_ALL) 259// bl special_reg_save_crit --- 161 unchanged lines hidden (view full) --- 421 ld r15,PACA_EXCRIT+EX_R15(r13) 422 bl .save_nvgprs 423 bl .DebugException 424 b .ret_from_except 425 426kernel_dbg_exc: 427 b . /* NYI */ 428 |
429/* Doorbell interrupt */ 430 MASKABLE_EXCEPTION(0x2070, doorbell, .doorbell_exception, ACK_NONE) |
|
431 | 431 |
432/* Doorbell critical Interrupt */ 433 START_EXCEPTION(doorbell_crit); 434 CRIT_EXCEPTION_PROLOG(0x2080, PROLOG_ADDITION_NONE) 435// EXCEPTION_COMMON(0x2080, PACA_EXCRIT, INTS_DISABLE_ALL) 436// bl special_reg_save_crit 437// addi r3,r1,STACK_FRAME_OVERHEAD 438// bl .doorbell_critical_exception 439// b ret_from_crit_except 440 b . 441 442 |
|
432/* 433 * An interrupt came in while soft-disabled; clear EE in SRR1, 434 * clear paca->hard_enabled and return. 435 */ 436masked_interrupt_book3e: 437 mtcr r10 438 stb r11,PACAHARDIRQEN(r13) 439 mfspr r10,SPRN_SRR1 --- 118 unchanged lines hidden (view full) --- 558BAD_STACK_TRAMPOLINE(0x9f0) 559BAD_STACK_TRAMPOLINE(0xa00) 560BAD_STACK_TRAMPOLINE(0xb00) 561BAD_STACK_TRAMPOLINE(0xc00) 562BAD_STACK_TRAMPOLINE(0xd00) 563BAD_STACK_TRAMPOLINE(0xe00) 564BAD_STACK_TRAMPOLINE(0xf00) 565BAD_STACK_TRAMPOLINE(0xf20) | 443/* 444 * An interrupt came in while soft-disabled; clear EE in SRR1, 445 * clear paca->hard_enabled and return. 446 */ 447masked_interrupt_book3e: 448 mtcr r10 449 stb r11,PACAHARDIRQEN(r13) 450 mfspr r10,SPRN_SRR1 --- 118 unchanged lines hidden (view full) --- 569BAD_STACK_TRAMPOLINE(0x9f0) 570BAD_STACK_TRAMPOLINE(0xa00) 571BAD_STACK_TRAMPOLINE(0xb00) 572BAD_STACK_TRAMPOLINE(0xc00) 573BAD_STACK_TRAMPOLINE(0xd00) 574BAD_STACK_TRAMPOLINE(0xe00) 575BAD_STACK_TRAMPOLINE(0xf00) 576BAD_STACK_TRAMPOLINE(0xf20) |
577BAD_STACK_TRAMPOLINE(0x2070) 578BAD_STACK_TRAMPOLINE(0x2080) |
|
566 567 .globl bad_stack_book3e 568bad_stack_book3e: 569 /* XXX: Needs to make SPRN_SPRG_GEN depend on exception type */ 570 mfspr r10,SPRN_SRR0; /* read SRR0 before touching stack */ 571 ld r1,PACAEMERGSP(r13) 572 subi r1,r1,64+INT_FRAME_SIZE 573 std r10,_NIP(r1) --- 427 unchanged lines hidden --- | 579 580 .globl bad_stack_book3e 581bad_stack_book3e: 582 /* XXX: Needs to make SPRN_SPRG_GEN depend on exception type */ 583 mfspr r10,SPRN_SRR0; /* read SRR0 before touching stack */ 584 ld r1,PACAEMERGSP(r13) 585 subi r1,r1,64+INT_FRAME_SIZE 586 std r10,_NIP(r1) --- 427 unchanged lines hidden --- |