linux-old/include/asm-mips64/exception.h
<<
>>
Prefs
   1/*
   2 * This file is subject to the terms and conditions of the GNU General Public
   3 * License.  See the file "COPYING" in the main directory of this archive
   4 * for more details.
   5 *
   6 * Copyright (C) 1994 - 1999 by Ralf Baechle
   7 * Copyright (C) 1999 Silicon Graphics
   8 *
   9 * Low level exception handling
  10 */
  11#include <asm/asm.h>
  12#include <asm/regdef.h>
  13#include <asm/fpregdef.h>
  14#include <asm/mipsregs.h>
  15#include <asm/stackframe.h>
  16
  17        .macro  __build_clear_none
  18        .endm
  19
  20        .macro  __build_clear_sti
  21        STI
  22        .endm
  23
  24        .macro  __build_clear_cli
  25        CLI
  26        .endm
  27
  28        .macro  __build_clear_fpe
  29        cfc1    a1, fcr31
  30        li      a2, ~(0x3f << 12)
  31        and     a2, a1
  32        ctc1    a2, fcr31
  33        STI
  34        .endm
  35
  36        .macro  __build_clear_ade
  37        dmfc0   t0, CP0_BADVADDR
  38        sd      t0, PT_BVADDR(sp)
  39        KMODE
  40        .endm
  41
  42        .macro  __BUILD_silent exception
  43        .endm
  44
  45        /* Gas tries to parse the PRINT argument as a string containing
  46           string escapes and emits bogus warnings if it believes to
  47           recognize an unknown escape code.  So make the arguments
  48           start with an n and gas will believe \n is ok ...  */
  49        .macro  __BUILD_verbose nexception
  50        ld      a1, PT_EPC(sp)
  51        PRINT("Got \nexception at %016lx\012")
  52        .endm
  53
  54        .macro  __BUILD_count exception
  55        .set    reorder
  56        ld      t0,exception_count_\exception
  57        daddiu  t0, 1
  58        sd      t0,exception_count_\exception
  59        .set    noreorder
  60        .comm   exception_count\exception, 8, 8
  61        .endm
  62
  63        .macro  BUILD_HANDLER exception handler clear verbose
  64        .align  5
  65        NESTED(handle_\exception, PT_SIZE, sp)
  66        .set    noat
  67        SAVE_ALL
  68        __BUILD_clear_\clear
  69        .set    at
  70        __BUILD_\verbose \exception
  71        move    a0, sp
  72        jal     do_\handler
  73        j       ret_from_exception
  74         nop
  75        END(handle_\exception)
  76        .endm
  77
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.