linux/drivers/watchdog/octeon-wdt-nmi.S
<<
>>
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) 2007 Cavium Networks
   7 */
   8#include <asm/asm.h>
   9#include <asm/regdef.h>
  10
  11#define SAVE_REG(r)     sd $r, -32768+6912-(32-r)*8($0)
  12
  13        NESTED(octeon_wdt_nmi_stage2, 0, sp)
  14        .set    push
  15        .set    noreorder
  16        .set    noat
  17        /* Save all registers to the top CVMSEG. This shouldn't
  18         * corrupt any state used by the kernel. Also all registers
  19         * should have the value right before the NMI. */
  20        SAVE_REG(0)
  21        SAVE_REG(1)
  22        SAVE_REG(2)
  23        SAVE_REG(3)
  24        SAVE_REG(4)
  25        SAVE_REG(5)
  26        SAVE_REG(6)
  27        SAVE_REG(7)
  28        SAVE_REG(8)
  29        SAVE_REG(9)
  30        SAVE_REG(10)
  31        SAVE_REG(11)
  32        SAVE_REG(12)
  33        SAVE_REG(13)
  34        SAVE_REG(14)
  35        SAVE_REG(15)
  36        SAVE_REG(16)
  37        SAVE_REG(17)
  38        SAVE_REG(18)
  39        SAVE_REG(19)
  40        SAVE_REG(20)
  41        SAVE_REG(21)
  42        SAVE_REG(22)
  43        SAVE_REG(23)
  44        SAVE_REG(24)
  45        SAVE_REG(25)
  46        SAVE_REG(26)
  47        SAVE_REG(27)
  48        SAVE_REG(28)
  49        SAVE_REG(29)
  50        SAVE_REG(30)
  51        SAVE_REG(31)
  52        /* Set the stack to begin right below the registers */
  53        li      sp, -32768+6912-32*8
  54        /* Load the address of the third stage handler */
  55        dla     a0, octeon_wdt_nmi_stage3
  56        /* Call the third stage handler */
  57        jal     a0
  58        /* a0 is the address of the saved registers */
  59         move   a0, sp
  60        /* Loop forvever if we get here. */
  611:      b       1b
  62        nop
  63        .set pop
  64        END(octeon_wdt_nmi_stage2)
  65
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.