1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Trap handling definitions. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Copyright (C) 2002, 2003 Maciej W. Rozycki 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun #ifndef _ASM_TRAPS_H 8*4882a593Smuzhiyun #define _ASM_TRAPS_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun /* 11*4882a593Smuzhiyun * Possible status responses for a board_be_handler backend. 12*4882a593Smuzhiyun */ 13*4882a593Smuzhiyun #define MIPS_BE_DISCARD 0 /* return with no action */ 14*4882a593Smuzhiyun #define MIPS_BE_FIXUP 1 /* return to the fixup code */ 15*4882a593Smuzhiyun #define MIPS_BE_FATAL 2 /* treat as an unrecoverable error */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun extern void (*board_be_init)(void); 18*4882a593Smuzhiyun extern int (*board_be_handler)(struct pt_regs *regs, int is_fixup); 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun extern void (*board_nmi_handler_setup)(void); 21*4882a593Smuzhiyun extern void (*board_ejtag_handler_setup)(void); 22*4882a593Smuzhiyun extern void (*board_bind_eic_interrupt)(int irq, int regset); 23*4882a593Smuzhiyun extern void (*board_ebase_setup)(void); 24*4882a593Smuzhiyun extern void (*board_cache_error_setup)(void); 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun extern int register_nmi_notifier(struct notifier_block *nb); 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define nmi_notifier(fn, pri) \ 29*4882a593Smuzhiyun ({ \ 30*4882a593Smuzhiyun static struct notifier_block fn##_nb = { \ 31*4882a593Smuzhiyun .notifier_call = fn, \ 32*4882a593Smuzhiyun .priority = pri \ 33*4882a593Smuzhiyun }; \ 34*4882a593Smuzhiyun \ 35*4882a593Smuzhiyun register_nmi_notifier(&fn##_nb); \ 36*4882a593Smuzhiyun }) 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun #endif /* _ASM_TRAPS_H */ 39