| 1 |
|
| 2 | |
| 3 | * Trap handling definitions.
|
| 4 | *
|
| 5 | * Copyright (C) 2002, 2003 Maciej W. Rozycki
|
| 6 |
|
| 7 | #ifndef _ASM_TRAPS_H
|
| 8 | #define _ASM_TRAPS_H
|
| 9 |
|
| 10 | |
| 11 | * Possible status responses for a board_be_handler backend.
|
| 12 |
|
| 13 | #define MIPS_BE_DISCARD 0
|
| 14 | #define MIPS_BE_FIXUP 1
|
| 15 | #define MIPS_BE_FATAL 2
|
| 16 |
|
| 17 | extern void (*board_be_init)(void);
|
| 18 | void mips_set_be_handler(int (*handler)(struct pt_regs *reg, int is_fixup));
|
| 19 |
|
| 20 | extern void (*board_nmi_handler_setup)(void);
|
| 21 | extern void (*board_ejtag_handler_setup)(void);
|
| 22 | extern void (*board_bind_eic_interrupt)(int irq, int regset);
|
| 23 | extern void (*board_ebase_setup)(void);
|
| 24 | extern void (*board_cache_error_setup)(void);
|
| 25 |
|
| 26 | extern int register_nmi_notifier(struct notifier_block *nb);
|
| 27 | extern void reserve_exception_space(phys_addr_t addr, unsigned long size);
|
| 28 | extern char except_vec_nmi[];
|
| 29 |
|
| 30 | #define VECTORSPACING 0x100
|
| 31 |
|
| 32 | #define nmi_notifier(fn, pri) \
|
| 33 | ({ \
|
| 34 | static struct notifier_block fn##_nb = { \
|
| 35 | .notifier_call = fn, \
|
| 36 | .priority = pri \
|
| 37 | }; \
|
| 38 | \
|
| 39 | register_nmi_notifier(&fn##_nb); \
|
| 40 | })
|
| 41 |
|
| 42 | asmlinkage void do_ade(struct pt_regs *regs);
|
| 43 | asmlinkage void do_be(struct pt_regs *regs);
|
| 44 | asmlinkage void do_ov(struct pt_regs *regs);
|
| 45 | asmlinkage void do_fpe(struct pt_regs *regs, unsigned long fcr31);
|
| 46 | asmlinkage void do_bp(struct pt_regs *regs);
|
| 47 | asmlinkage void do_tr(struct pt_regs *regs);
|
| 48 | asmlinkage void do_ri(struct pt_regs *regs);
|
| 49 | asmlinkage void do_cpu(struct pt_regs *regs);
|
| 50 | asmlinkage void do_msa_fpe(struct pt_regs *regs, unsigned int msacsr);
|
| 51 | asmlinkage void do_msa(struct pt_regs *regs);
|
| 52 | asmlinkage void do_mdmx(struct pt_regs *regs);
|
| 53 | asmlinkage void do_watch(struct pt_regs *regs);
|
| 54 | asmlinkage void do_mcheck(struct pt_regs *regs);
|
| 55 | asmlinkage void do_mt(struct pt_regs *regs);
|
| 56 | asmlinkage void do_dsp(struct pt_regs *regs);
|
| 57 | asmlinkage void do_reserved(struct pt_regs *regs);
|
| 58 | asmlinkage void do_ftlb(void);
|
| 59 | asmlinkage void do_gsexc(struct pt_regs *regs, u32 diag1);
|
| 60 | asmlinkage void do_daddi_ov(struct pt_regs *regs);
|
| 61 | asmlinkage void do_page_fault(struct pt_regs *regs,
|
| 62 | unsigned long write, unsigned long address);
|
| 63 |
|
| 64 | asmlinkage void cache_parity_error(void);
|
| 65 | asmlinkage void ejtag_exception_handler(struct pt_regs *regs);
|
| 66 | asmlinkage void __noreturn nmi_exception_handler(struct pt_regs *regs);
|
| 67 |
|
| 68 | #endif
|