Linux 3.11-rc3
[cris-mirror.git] / arch / mn10300 / kernel / mn10300-watchdog-low.S
blobf2f5c9cfaabd803e02b95fad30267e1cde8a35c3
1 ###############################################################################
3 # MN10300 Watchdog interrupt handler
5 # Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
6 # Written by David Howells (dhowells@redhat.com)
8 # This program is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU General Public Licence
10 # as published by the Free Software Foundation; either version
11 # 2 of the Licence, or (at your option) any later version.
13 ###############################################################################
14 #include <linux/sys.h>
15 #include <linux/linkage.h>
16 #include <asm/intctl-regs.h>
17 #include <asm/timer-regs.h>
18 #include <asm/frame.inc>
19 #include <linux/threads.h>
21         .text
23 ###############################################################################
25 # Watchdog handler entry point
26 # - special non-maskable interrupt
28 ###############################################################################
29         .globl  watchdog_handler
30         .type   watchdog_handler,@function
31 watchdog_handler:
32         add     -4,sp
33         SAVE_ALL
35         mov     0xffffffff,d0
36         mov     d0,(REG_ORIG_D0,fp)
38         mov     fp,d0
39         lsr     2,d1
40         call    watchdog_interrupt[],0          # watchdog_interrupt(regs,irq)
42         jmp     ret_from_intr
44         .size   watchdog_handler,.-watchdog_handler
46 ###############################################################################
48 # Watchdog touch entry point
49 # - kept to absolute minimum (unfortunately, it's prototyped in linux/nmi.h so
50 #   we can't inline it)
52 ###############################################################################
53         .globl  touch_nmi_watchdog
54         .type   touch_nmi_watchdog,@function
55 touch_nmi_watchdog:
56         clr     d0
57         clr     d1
58         mov     watchdog_alert_counter, a0
59         setlb
60         mov     d0, (a0+)
61         inc     d1
62         cmp     NR_CPUS, d1
63         lne
64         ret     [],0
66         .size   touch_nmi_watchdog,.-touch_nmi_watchdog