1#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 2: .string file; \ 26 .popsection; \ 27 \ 28 .long 2b - 0b; \ 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 0: .long 1f - 0b; \ 40_BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ 41 .short flags; \ 42 .popsection; \ 43 1: 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 */ 55