
Pass the register type to the prolog, also provides alternate "HV" version of hardware interrupt (0x500) and adjust LPES accordingly We tag those interrupts by setting bit 0x2 in the trap number Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
58 lines
1.9 KiB
C
58 lines
1.9 KiB
C
#ifndef _ASM_POWERPC_ISERIES_EXCEPTION_H
|
|
#define _ASM_POWERPC_ISERIES_EXCEPTION_H
|
|
/*
|
|
* Extracted from head_64.S
|
|
*
|
|
* PowerPC version
|
|
* Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
|
|
*
|
|
* Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP
|
|
* Copyright (C) 1996 Cort Dougan <cort@cs.nmt.edu>
|
|
* Adapted for Power Macintosh by Paul Mackerras.
|
|
* Low-level exception handlers and MMU support
|
|
* rewritten by Paul Mackerras.
|
|
* Copyright (C) 1996 Paul Mackerras.
|
|
*
|
|
* Adapted for 64bit PowerPC by Dave Engebretsen, Peter Bergner, and
|
|
* Mike Corrigan {engebret|bergner|mikejc}@us.ibm.com
|
|
*
|
|
* This file contains the low-level support and setup for the
|
|
* PowerPC-64 platform, including trap and interrupt dispatch.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
*/
|
|
#include <asm/exception-64s.h>
|
|
|
|
#define EXCEPTION_PROLOG_ISERIES_1 \
|
|
mfmsr r10; \
|
|
ld r12,PACALPPACAPTR(r13); \
|
|
ld r11,LPPACASRR0(r12); \
|
|
ld r12,LPPACASRR1(r12); \
|
|
ori r10,r10,MSR_RI; \
|
|
mtmsrd r10,1
|
|
|
|
#define STD_EXCEPTION_ISERIES(label, area) \
|
|
.globl label##_iSeries; \
|
|
label##_iSeries: \
|
|
HMT_MEDIUM; \
|
|
mtspr SPRN_SPRG_SCRATCH0,r13; /* save r13 */ \
|
|
EXCEPTION_PROLOG_1(area, EXC_STD); \
|
|
EXCEPTION_PROLOG_ISERIES_1; \
|
|
b label##_common
|
|
|
|
#define MASKABLE_EXCEPTION_ISERIES(label) \
|
|
.globl label##_iSeries; \
|
|
label##_iSeries: \
|
|
HMT_MEDIUM; \
|
|
mtspr SPRN_SPRG_SCRATCH0,r13; /* save r13 */ \
|
|
EXCEPTION_PROLOG_1(PACA_EXGEN, EXC_STD); \
|
|
lbz r10,PACASOFTIRQEN(r13); \
|
|
cmpwi 0,r10,0; \
|
|
beq- label##_iSeries_masked; \
|
|
EXCEPTION_PROLOG_ISERIES_1; \
|
|
b label##_common; \
|
|
|
|
#endif /* _ASM_POWERPC_ISERIES_EXCEPTION_H */
|