blob: b3552c4a405f28a2c2791d30190bdc7540bcd2ab [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001#ifndef __ASM_ASM_BUG_H
2/*
3 * Copyright (C) 2017 ARM Limited
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17#define __ASM_ASM_BUG_H
18
19#include <asm/brk-imm.h>
20
21#ifdef CONFIG_DEBUG_BUGVERBOSE
22#define _BUGVERBOSE_LOCATION(file, line) __BUGVERBOSE_LOCATION(file, line)
23#define __BUGVERBOSE_LOCATION(file, line) \
24 .pushsection .rodata.str,"aMS",@progbits,1; \
25 14472: .string file; \
26 .popsection; \
27 \
28 .long 14472b - 14470b; \
29 .short line;
30#else
31#define _BUGVERBOSE_LOCATION(file, line)
32#endif
33
34#ifdef CONFIG_GENERIC_BUG
35
36#define __BUG_ENTRY(flags) \
37 .pushsection __bug_table,"aw"; \
38 .align 2; \
39 14470: .long 14471f - 14470b; \
40_BUGVERBOSE_LOCATION(__FILE__, __LINE__) \
41 .short flags; \
42 .popsection; \
43 14471:
44#else
45#define __BUG_ENTRY(flags)
46#endif
47
48#define ASM_BUG_FLAGS(flags) \
49 __BUG_ENTRY(flags) \
50 brk BUG_BRK_IMM
51
52#define ASM_BUG() ASM_BUG_FLAGS(0)
53
54#endif /* __ASM_ASM_BUG_H */