GNU Linux-libre 4.19.286-gnu1
[releases.git] / arch / ia64 / include / asm / exception.h
1 /*
2  * This program is free software; you can redistribute it and/or modify
3  * it under the terms of the GNU General Public License version 2 as
4  * published by the Free Software Foundation.
5  *
6  * This program is distributed in the hope that it will be useful,
7  * but WITHOUT ANY WARRANTY; without even the implied warranty of
8  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
9  * GNU General Public License for more details.
10  *
11  * You should have received a copy of the GNU General Public License
12  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
13  */
14 #ifndef __ASM_EXCEPTION_H
15 #define __ASM_EXCEPTION_H
16
17 struct pt_regs;
18 struct exception_table_entry;
19
20 extern void ia64_handle_exception(struct pt_regs *regs,
21                                   const struct exception_table_entry *e);
22
23 #define ia64_done_with_exception(regs)                                    \
24 ({                                                                        \
25         int __ex_ret = 0;                                                 \
26         const struct exception_table_entry *e;                            \
27         e = search_exception_tables((regs)->cr_iip + ia64_psr(regs)->ri); \
28         if (e) {                                                          \
29                 ia64_handle_exception(regs, e);                           \
30                 __ex_ret = 1;                                             \
31         }                                                                 \
32         __ex_ret;                                                         \
33 })
34
35 #endif  /* __ASM_EXCEPTION_H */