blob: 3d2a666a5dd536f95239f2637c1ee87c4bb48376 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef __ASM_X8664_BUG_H
2#define __ASM_X8664_BUG_H 1
3
4#include <linux/stringify.h>
5
6/*
7 * Tell the user there is some problem. The exception handler decodes
8 * this frame.
9 */
10struct bug_frame {
11 unsigned char ud2[2];
12 /* should use 32bit offset instead, but the assembler doesn't
13 like it */
14 char *filename;
15 unsigned short line;
16} __attribute__((packed));
17
Matt Mackallc8538a72005-05-01 08:59:01 -070018#ifdef CONFIG_BUG
Linus Torvalds1da177e2005-04-16 15:20:36 -070019#define HAVE_ARCH_BUG
20#define BUG() \
21 asm volatile("ud2 ; .quad %c1 ; .short %c0" :: \
Andi Kleenf18de452005-04-16 15:24:51 -070022 "i"(__LINE__), "i" (__stringify(__FILE__)))
Linus Torvalds1da177e2005-04-16 15:20:36 -070023void out_of_line_bug(void);
Alexander Nyberg4f60fdf2005-05-25 12:31:28 -070024#else
25static inline void out_of_line_bug(void) { }
Matt Mackallc8538a72005-05-01 08:59:01 -070026#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070027
Matt Mackallc8538a72005-05-01 08:59:01 -070028#include <asm-generic/bug.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070029#endif