Lines Matching +full:cpu +full:- +full:crit
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
12 #include <asm/asm-offsets.h>
17 #include <asm/exception-64e.h>
21 #include <asm/ppc-opcode.h>
26 #include <asm/feature-fixups.h>
32 * special interrupts from within a non-standard level will probably
53 /* must be even to keep 16-byte stack alignment */
57 #define SPECIAL_EXC_FRAME_OFFS (INT_FRAME_SIZE - 288)
156 * Wipe all non-bolted entries to be safe.
287 bge- cr1,exc_##n##_bad_stack;/* bad stack (TODO: out of line) */ \
290 /* Exception type-specific macros */
346 EXCEPTION_PROLOG(n, intnum, CRIT, addition##_CRIT(n))
366 lbz r10,PACAIRQSOFTMASK(r13); /* are irqs soft-masked? */ \
367 andi. r10,r10,IRQS_DISABLED; /* yes -> go out of line */ \
395 SAVE_4GPRS(3, r1); /* save r3 - r6 in stackframe */ \
426 std r12,STACK_FRAME_OVERHEAD-16(r1); /* mark the frame */ \
428 std r0,RESULT(r1); /* clear regs->result */
440 * This is meant for exceptions that don't immediately hard-enable. We
441 * set a bit in paca->irq_happened to ensure that a subsequent call to
442 * arch_local_irq_restore() will properly hard-enable and avoid the
443 * fast-path, and then reconcile irq state.
452 * XXX In the long run, we may want to open-code it in order to separate the
639 beq- 1f
658 beq- 1f
738 * If there is a single step or branch-taken exception in an
746 mfspr r14,SPRN_DBSR /* check single-step/branch taken */
810 * If there is a single step or branch-taken exception in an
818 mfspr r14,SPRN_DBSR /* check single-step/branch taken */
960 * An interrupt came in while soft-disabled; We mark paca->irq_happened
1020 bne- 1f
1053 * Disable interrupts so that current_thread_info()->flags
1067 /* Check current_thread_info()->flags */
1080 li r10, -1
1132 bne- 0b
1149 * sure we are soft-disabled first and reconcile irq state.
1166 * are about to re-enable interrupts
1178 * We are about to soft-enable interrupts (we are hard disabled
1184 bne- .Lrestore_check_irq_replay
1187 * Get here when nothing happened while soft-disabled, just
1188 * soft-enable and move-on. We will hard-enable as a side
1263 * Something did happen, check if a re-emit is needed
1264 * (this also clears paca->irq_happened)
1279 * We need to re-emit an interrupt. We do so by re-using our
1298 * still soft-disabled and we keep them that way.
1330 * index around, etc... to handle crit & mcheck
1370 ld r10,PACA_EXGEN+EX_R1(r13) /* FIXME for crit & mcheck */
1371 lwz r11,PACA_EXGEN+EX_CR(r13) /* FIXME for crit & mcheck */
1380 SAVE_4GPRS(3, r1); /* save r3 - r6 in stackframe */ \
1497 andi. r7,r5,0x1 /* Find an entry not used and is non-zero */
1517 addi r6,r6,(2f - 1b)
1565 li r5,-1
1577 addi r6,r6,(2f - 1b)
1612 * This code is called as an ordinary function on the boot CPU. But to
1660 addi r10,r10,-1 /* Get inner loop mask */
1711 * Main entry (boot CPU, thread 0)
1719 * - Kernel loaded at 0 physical
1720 * - A good lump of memory mapped 0:0 by UTLB entry 0
1721 * - MSR:IS & MSR:DS set to 0
1740 /* Init per-thread bits */
1782 /* Init per-thread bits */
1867 SET_IVOR(37, 0x2a0) /* Processor Doorbell Crit */
1874 SET_IVOR(39, 0x2e0) /* Guest Processor Doorbell Crit/MC */