linux/arch/powerpc/platforms/iseries/exception.h
<<
>>
Prefs
   1#ifndef _ASM_POWERPC_ISERIES_EXCEPTION_H
   2#define _ASM_POWERPC_ISERIES_EXCEPTION_H
   3/*
   4 * Extracted from head_64.S
   5 *
   6 *  PowerPC version
   7 *    Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
   8 *
   9 *  Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP
  10 *    Copyright (C) 1996 Cort Dougan <cort@cs.nmt.edu>
  11 *  Adapted for Power Macintosh by Paul Mackerras.
  12 *  Low-level exception handlers and MMU support
  13 *  rewritten by Paul Mackerras.
  14 *    Copyright (C) 1996 Paul Mackerras.
  15 *
  16 *  Adapted for 64bit PowerPC by Dave Engebretsen, Peter Bergner, and
  17 *    Mike Corrigan {engebret|bergner|mikejc}@us.ibm.com
  18 *
  19 *  This file contains the low-level support and setup for the
  20 *  PowerPC-64 platform, including trap and interrupt dispatch.
  21 *
  22 *  This program is free software; you can redistribute it and/or
  23 *  modify it under the terms of the GNU General Public License
  24 *  as published by the Free Software Foundation; either version
  25 *  2 of the License, or (at your option) any later version.
  26 */
  27#include <asm/exception-64s.h>
  28
  29#define EXCEPTION_PROLOG_ISERIES_1                                      \
  30        mfmsr   r10;                                                    \
  31        ld      r12,PACALPPACAPTR(r13);                                 \
  32        ld      r11,LPPACASRR0(r12);                                    \
  33        ld      r12,LPPACASRR1(r12);                                    \
  34        ori     r10,r10,MSR_RI;                                         \
  35        mtmsrd  r10,1
  36
  37#define STD_EXCEPTION_ISERIES(label, area)                              \
  38        .globl label##_iSeries;                                         \
  39label##_iSeries:                                                        \
  40        HMT_MEDIUM;                                                     \
  41        mtspr   SPRN_SPRG_SCRATCH0,r13; /* save r13 */                  \
  42        EXCEPTION_PROLOG_1(area, NOTEST, 0);                            \
  43        EXCEPTION_PROLOG_ISERIES_1;                                     \
  44        b       label##_common
  45
  46#define MASKABLE_EXCEPTION_ISERIES(label)                               \
  47        .globl label##_iSeries;                                         \
  48label##_iSeries:                                                        \
  49        HMT_MEDIUM;                                                     \
  50        mtspr   SPRN_SPRG_SCRATCH0,r13; /* save r13 */                  \
  51        EXCEPTION_PROLOG_1(PACA_EXGEN, NOTEST, 0);                      \
  52        lbz     r10,PACASOFTIRQEN(r13);                                 \
  53        cmpwi   0,r10,0;                                                \
  54        beq-    label##_iSeries_masked;                                 \
  55        EXCEPTION_PROLOG_ISERIES_1;                                     \
  56        b       label##_common;                                         \
  57
  58#endif  /* _ASM_POWERPC_ISERIES_EXCEPTION_H */
  59