Commit | Line | Data |
---|---|---|
867e359b CM |
1 | /* |
2 | * Copyright 2010 Tilera Corporation. All Rights Reserved. | |
3 | * | |
4 | * This program is free software; you can redistribute it and/or | |
5 | * modify it under the terms of the GNU General Public License | |
6 | * as published by the Free Software Foundation, version 2. | |
7 | * | |
8 | * This program is distributed in the hope that it will be useful, but | |
9 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | |
11 | * NON INFRINGEMENT. See the GNU General Public License for | |
12 | * more details. | |
13 | */ | |
14 | ||
15 | #ifndef _ASM_TILE_TRAPS_H | |
16 | #define _ASM_TILE_TRAPS_H | |
17 | ||
2f9ac29e | 18 | #ifndef __ASSEMBLY__ |
313ce674 CM |
19 | #include <arch/chip.h> |
20 | ||
867e359b CM |
21 | /* mm/fault.c */ |
22 | void do_page_fault(struct pt_regs *, int fault_num, | |
23 | unsigned long address, unsigned long write); | |
d7c96611 | 24 | #if CHIP_HAS_TILE_DMA() |
0707ad30 | 25 | void do_async_page_fault(struct pt_regs *); |
313ce674 | 26 | #endif |
0707ad30 CM |
27 | |
28 | #ifndef __tilegx__ | |
29 | /* | |
30 | * We return this structure in registers to avoid having to write | |
31 | * additional save/restore code in the intvec.S caller. | |
32 | */ | |
33 | struct intvec_state { | |
34 | void *handler; | |
35 | unsigned long vecnum; | |
36 | unsigned long fault_num; | |
37 | unsigned long info; | |
38 | unsigned long retval; | |
39 | }; | |
40 | struct intvec_state do_page_fault_ics(struct pt_regs *regs, int fault_num, | |
41 | unsigned long address, | |
42 | unsigned long info); | |
43 | #endif | |
867e359b CM |
44 | |
45 | /* kernel/traps.c */ | |
46 | void do_trap(struct pt_regs *, int fault_num, unsigned long reason); | |
0707ad30 | 47 | void kernel_double_fault(int dummy, ulong pc, ulong lr, ulong sp, ulong r52); |
867e359b CM |
48 | |
49 | /* kernel/time.c */ | |
50 | void do_timer_interrupt(struct pt_regs *, int fault_num); | |
51 | ||
52 | /* kernel/messaging.c */ | |
53 | void hv_message_intr(struct pt_regs *, int intnum); | |
54 | ||
e5701b74 CM |
55 | #define TILE_NMI_DUMP_STACK 1 /* Dump stack for sysrq+'l' */ |
56 | ||
57 | /* kernel/process.c */ | |
58 | void do_nmi_dump_stack(struct pt_regs *regs); | |
59 | ||
60 | /* kernel/traps.c */ | |
61 | void do_nmi(struct pt_regs *, int fault_num, unsigned long reason); | |
62 | ||
867e359b CM |
63 | /* kernel/irq.c */ |
64 | void tile_dev_intr(struct pt_regs *, int intnum); | |
65 | ||
0707ad30 CM |
66 | #ifdef CONFIG_HARDWALL |
67 | /* kernel/hardwall.c */ | |
68 | void do_hardwall_trap(struct pt_regs *, int fault_num); | |
69 | #endif | |
70 | ||
71 | /* kernel/ptrace.c */ | |
72 | void do_breakpoint(struct pt_regs *, int fault_num); | |
867e359b CM |
73 | |
74 | ||
233325b9 | 75 | #ifdef __tilegx__ |
e1723538 | 76 | /* kernel/single_step.c */ |
233325b9 | 77 | void gx_singlestep_handle(struct pt_regs *, int fault_num); |
e1723538 CM |
78 | |
79 | /* kernel/intvec_64.S */ | |
80 | void fill_ra_stack(void); | |
2f9ac29e CM |
81 | |
82 | /* Handle unalign data fixup. */ | |
83 | extern void do_unaligned(struct pt_regs *regs, int vecnum); | |
84 | #endif | |
85 | ||
86 | #endif /* __ASSEMBLY__ */ | |
87 | ||
88 | #ifdef __tilegx__ | |
89 | /* 128 byte JIT per unalign fixup. */ | |
90 | #define UNALIGN_JIT_SHIFT 7 | |
233325b9 CM |
91 | #endif |
92 | ||
e1723538 | 93 | #endif /* _ASM_TILE_TRAPS_H */ |