2007-08-21 23:48:37 -04:00
|
|
|
#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.
|
|
|
|
*/
|
2009-07-14 16:52:52 -04:00
|
|
|
#include <asm/exception-64s.h>
|
2007-08-21 23:48:37 -04:00
|
|
|
|
|
|
|
#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
|
|
|
|
|
2007-08-21 23:49:41 -04:00
|
|
|
#define STD_EXCEPTION_ISERIES(label, area) \
|
2007-08-21 23:48:37 -04:00
|
|
|
.globl label##_iSeries; \
|
|
|
|
label##_iSeries: \
|
|
|
|
HMT_MEDIUM; \
|
2009-07-14 16:52:54 -04:00
|
|
|
mtspr SPRN_SPRG_SCRATCH0,r13; /* save r13 */ \
|
2007-08-21 23:48:37 -04:00
|
|
|
EXCEPTION_PROLOG_1(area); \
|
|
|
|
EXCEPTION_PROLOG_ISERIES_1; \
|
|
|
|
b label##_common
|
|
|
|
|
2007-08-21 23:49:41 -04:00
|
|
|
#define MASKABLE_EXCEPTION_ISERIES(label) \
|
2007-08-21 23:48:37 -04:00
|
|
|
.globl label##_iSeries; \
|
|
|
|
label##_iSeries: \
|
|
|
|
HMT_MEDIUM; \
|
2009-07-14 16:52:54 -04:00
|
|
|
mtspr SPRN_SPRG_SCRATCH0,r13; /* save r13 */ \
|
2007-08-21 23:48:37 -04:00
|
|
|
EXCEPTION_PROLOG_1(PACA_EXGEN); \
|
|
|
|
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 */
|