162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci#ifndef __ASM_EXCEPTION_H 362306a36Sopenharmony_ci#define __ASM_EXCEPTION_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_cistruct pt_regs; 662306a36Sopenharmony_cistruct exception_table_entry; 762306a36Sopenharmony_ci 862306a36Sopenharmony_ciextern void ia64_handle_exception(struct pt_regs *regs, 962306a36Sopenharmony_ci const struct exception_table_entry *e); 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#define ia64_done_with_exception(regs) \ 1262306a36Sopenharmony_ci({ \ 1362306a36Sopenharmony_ci int __ex_ret = 0; \ 1462306a36Sopenharmony_ci const struct exception_table_entry *e; \ 1562306a36Sopenharmony_ci e = search_exception_tables((regs)->cr_iip + ia64_psr(regs)->ri); \ 1662306a36Sopenharmony_ci if (e) { \ 1762306a36Sopenharmony_ci ia64_handle_exception(regs, e); \ 1862306a36Sopenharmony_ci __ex_ret = 1; \ 1962306a36Sopenharmony_ci } \ 2062306a36Sopenharmony_ci __ex_ret; \ 2162306a36Sopenharmony_ci}) 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci#endif /* __ASM_EXCEPTION_H */ 24