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 ---