Commit 9e535055 authored by Russell King's avatar Russell King Committed by Linus Torvalds

[PATCH] use <asm/bug.h> for BUG() defines

This patch moves BUG() and PAGE_BUG() from asm/page.h into asm/bug.h.

We also fix up linux/dcache.h, which included asm/page.h for the sole
purpose of getting the BUG() definition.

Since linux/kernel.h and linux/smp.h make use of BUG(), asm/bug.h is
included there as well.

In addition, linux/jbd.h did not contain a clear path with which to
obtain the archtecture BUG() definition, but did contain its own
definition.
parent fb5805fb
#ifndef _ALPHA_BUG_H
#define _ALPHA_BUG_H
#include <asm/pal.h>
/* ??? Would be nice to use .gprel32 here, but we can't be sure that the
function loaded the GP, so this could fail in modules. */
#define BUG() \
__asm__ __volatile__("call_pal %0 # bugchk\n\t"".long %1\n\t.8byte %2" \
: : "i" (PAL_bugchk), "i"(__LINE__), "i"(__FILE__))
#define PAGE_BUG(page) BUG()
#endif
...@@ -59,14 +59,6 @@ typedef unsigned long pgprot_t; ...@@ -59,14 +59,6 @@ typedef unsigned long pgprot_t;
#endif /* STRICT_MM_TYPECHECKS */ #endif /* STRICT_MM_TYPECHECKS */
/* ??? Would be nice to use .gprel32 here, but we can't be sure that the
function loaded the GP, so this could fail in modules. */
#define BUG() \
__asm__ __volatile__("call_pal %0 # bugchk\n\t"".long %1\n\t.8byte %2" \
: : "i" (PAL_bugchk), "i"(__LINE__), "i"(__FILE__))
#define PAGE_BUG(page) BUG()
/* Pure 2^n version of get_order */ /* Pure 2^n version of get_order */
extern __inline__ int get_order(unsigned long size) extern __inline__ int get_order(unsigned long size)
{ {
......
#ifndef _ASMARM_BUG_H
#define _ASMARM_BUG_H
#include <linux/config.h>
#ifdef CONFIG_DEBUG_BUGVERBOSE
extern volatile void __bug(const char *file, int line, void *data);
/* give file/line information */
#define BUG() __bug(__FILE__, __LINE__, NULL)
#define PAGE_BUG(page) __bug(__FILE__, __LINE__, page)
#else
/* these just cause an oops */
#define BUG() (*(int *)0 = 0)
#define PAGE_BUG(page) (*(int *)0 = 0)
#endif
...@@ -160,21 +160,6 @@ typedef unsigned long pgprot_t; ...@@ -160,21 +160,6 @@ typedef unsigned long pgprot_t;
#ifdef __KERNEL__ #ifdef __KERNEL__
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#ifdef CONFIG_DEBUG_BUGVERBOSE
extern void __bug(const char *file, int line, void *data);
/* give file/line information */
#define BUG() __bug(__FILE__, __LINE__, NULL)
#define PAGE_BUG(page) __bug(__FILE__, __LINE__, page)
#else
/* these just cause an oops */
#define BUG() (*(int *)0 = 0)
#define PAGE_BUG(page) (*(int *)0 = 0)
#endif
/* Pure 2^n version of get_order */ /* Pure 2^n version of get_order */
static inline int get_order(unsigned long size) static inline int get_order(unsigned long size)
{ {
......
#ifndef _CRIS_BUG_H
#define _CRIS_BUG_H
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif
...@@ -70,18 +70,6 @@ typedef unsigned long pgprot_t; ...@@ -70,18 +70,6 @@ typedef unsigned long pgprot_t;
#define PAGE_OFFSET KSEG_C /* kseg_c is mapped to physical ram */ #define PAGE_OFFSET KSEG_C /* kseg_c is mapped to physical ram */
#endif #endif
#ifndef __ASSEMBLY__
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif /* __ASSEMBLY__ */
/* macros to convert between really physical and virtual addresses /* macros to convert between really physical and virtual addresses
* by stripping a selected bit, we can convert between KSEG_x and 0x40000000 where * by stripping a selected bit, we can convert between KSEG_x and 0x40000000 where
* the DRAM really resides * the DRAM really resides
......
#ifndef _I386_BUG_H
#define _I386_BUG_H
#include <linux/config.h>
/*
* Tell the user there is some problem. Beep too, so we can
* see^H^H^Hhear bugs in early bootup as well!
* The offending file and line are encoded after the "officially
* undefined" opcode for parsing in the trap handler.
*/
#if 1 /* Set to zero for a slightly smaller kernel */
#define BUG() \
__asm__ __volatile__( "ud2\n" \
"\t.word %c0\n" \
"\t.long %c1\n" \
: : "i" (__LINE__), "i" (__FILE__))
#else
#define BUG() __asm__ __volatile__("ud2\n")
#endif
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif
...@@ -99,27 +99,6 @@ typedef struct { unsigned long pgprot; } pgprot_t; ...@@ -99,27 +99,6 @@ typedef struct { unsigned long pgprot; } pgprot_t;
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
/*
* Tell the user there is some problem. Beep too, so we can
* see^H^H^Hhear bugs in early bootup as well!
* The offending file and line are encoded after the "officially
* undefined" opcode for parsing in the trap handler.
*/
#if 1 /* Set to zero for a slightly smaller kernel */
#define BUG() \
__asm__ __volatile__( "ud2\n" \
"\t.word %c0\n" \
"\t.long %c1\n" \
: : "i" (__LINE__), "i" (__FILE__))
#else
#define BUG() __asm__ __volatile__("ud2\n")
#endif
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
/* Pure 2^n version of get_order */ /* Pure 2^n version of get_order */
static __inline__ int get_order(unsigned long size) static __inline__ int get_order(unsigned long size)
{ {
......
#ifndef _ASM_IA64_BUG_H
#define _ASM_IA64_BUG_H
#if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
# define ia64_abort() __builtin_trap()
#else
# define ia64_abort() (*(volatile int *) 0 = 0)
#endif
#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); ia64_abort(); } while (0)
#define PAGE_BUG(page) do { BUG(); } while (0)
#endif
...@@ -125,14 +125,6 @@ typedef union ia64_va { ...@@ -125,14 +125,6 @@ typedef union ia64_va {
# define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT) # define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
#endif #endif
#if (__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)
# define ia64_abort() __builtin_trap()
#else
# define ia64_abort() (*(volatile int *) 0 = 0)
#endif
#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); ia64_abort(); } while (0)
#define PAGE_BUG(page) do { BUG(); } while (0)
static __inline__ int static __inline__ int
get_order (unsigned long size) get_order (unsigned long size)
{ {
......
#ifndef _M68K_BUG_H
#define _M68K_BUG_H
#include <linux/config.h>
#ifdef CONFIG_DEBUG_BUGVERBOSE
#ifndef CONFIG_SUN3
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
asm volatile("illegal"); \
} while (0)
#else
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
panic("BUG!"); \
} while (0)
#endif
#else
#define BUG() do { \
asm volatile("illegal"); \
} while (0)
#endif
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif
...@@ -178,28 +178,6 @@ static inline void *__va(unsigned long x) ...@@ -178,28 +178,6 @@ static inline void *__va(unsigned long x)
#define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && (void *)(kaddr) < high_memory) #define virt_addr_valid(kaddr) ((void *)(kaddr) >= (void *)PAGE_OFFSET && (void *)(kaddr) < high_memory)
#define pfn_valid(pfn) virt_addr_valid(pfn_to_virt(pfn)) #define pfn_valid(pfn) virt_addr_valid(pfn_to_virt(pfn))
#ifdef CONFIG_DEBUG_BUGVERBOSE
#ifndef CONFIG_SUN3
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
asm volatile("illegal"); \
} while (0)
#else
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
panic("BUG!"); \
} while (0)
#endif
#else
#define BUG() do { \
asm volatile("illegal"); \
} while (0)
#endif
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \
......
/* $Id$ */
#ifndef __ASM_BUG_H
#define __ASM_BUG_H
#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
#define PAGE_BUG(page) do { BUG(); } while (0)
#endif
...@@ -20,9 +20,6 @@ ...@@ -20,9 +20,6 @@
#ifndef _LANGUAGE_ASSEMBLY #ifndef _LANGUAGE_ASSEMBLY
#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
#define PAGE_BUG(page) do { BUG(); } while (0)
extern void (*_clear_page)(void * page); extern void (*_clear_page)(void * page);
extern void (*_copy_page)(void * to, void * from); extern void (*_copy_page)(void * to, void * from);
......
#ifndef _ASM_BUG_H
#define _ASM_BUG_H
#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
#define PAGE_BUG(page) do { BUG(); } while (0)
#endif
...@@ -20,9 +20,6 @@ ...@@ -20,9 +20,6 @@
#ifndef _LANGUAGE_ASSEMBLY #ifndef _LANGUAGE_ASSEMBLY
#define BUG() do { printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; } while (0)
#define PAGE_BUG(page) do { BUG(); } while (0)
extern void (*_clear_page)(void * page); extern void (*_clear_page)(void * page);
extern void (*_copy_page)(void * to, void * from); extern void (*_copy_page)(void * to, void * from);
......
#ifndef _PARISC_BUG_H
#define _PARISC_BUG_H
/*
* Tell the user there is some problem. Beep too, so we can
* see^H^H^Hhear bugs in early bootup as well!
*
* We don't beep yet. prumpf
*/
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif
...@@ -86,20 +86,6 @@ extern int npmem_ranges; ...@@ -86,20 +86,6 @@ extern int npmem_ranges;
/* to align the pointer to the (next) page boundary */ /* to align the pointer to the (next) page boundary */
#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
/*
* Tell the user there is some problem. Beep too, so we can
* see^H^H^Hhear bugs in early bootup as well!
*
* We don't beep yet. prumpf
*/
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#define LINUX_GATEWAY_SPACE 0 #define LINUX_GATEWAY_SPACE 0
#define __PAGE_OFFSET (0x10000000) #define __PAGE_OFFSET (0x10000000)
......
#ifndef _PPC_BUG_H
#define _PPC_BUG_H
#include <linux/config.h>
#include <asm/system.h> /* for xmon definition */
#ifdef CONFIG_XMON
extern void xmon(struct pt_regs *);
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
xmon(0); \
} while (0)
#else
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
__asm__ __volatile__(".long 0x0"); \
} while (0)
#endif
#define PAGE_BUG(page) do { BUG(); } while (0)
#endif
...@@ -14,9 +14,6 @@ ...@@ -14,9 +14,6 @@
#define KERNELBASE PAGE_OFFSET #define KERNELBASE PAGE_OFFSET
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <asm/processor.h> /* for BUG definition */
#define PAGE_BUG(page) do { BUG(); } while (0)
#define STRICT_MM_TYPECHECKS #define STRICT_MM_TYPECHECKS
......
...@@ -718,19 +718,6 @@ extern inline void prefetchw(const void *x) ...@@ -718,19 +718,6 @@ extern inline void prefetchw(const void *x)
#define spin_lock_prefetch(x) prefetchw(x) #define spin_lock_prefetch(x) prefetchw(x)
#ifdef CONFIG_XMON
extern void xmon(struct pt_regs *);
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
xmon(0); \
} while (0)
#else
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
__asm__ __volatile__(".long 0x0"); \
} while (0)
#endif
#endif /* !__ASSEMBLY__ */ #endif /* !__ASSEMBLY__ */
#endif /* __ASM_PPC_PROCESSOR_H */ #endif /* __ASM_PPC_PROCESSOR_H */
......
#ifndef _S390_BUG_H
#define _S390_BUG_H
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
__asm__ __volatile__(".long 0"); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif
...@@ -62,15 +62,6 @@ static inline void copy_page(void *to, void *from) ...@@ -62,15 +62,6 @@ static inline void copy_page(void *to, void *from)
#define clear_user_page(page, vaddr, pg) clear_page(page) #define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
__asm__ __volatile__(".long 0"); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
/* Pure 2^n version of get_order */ /* Pure 2^n version of get_order */
extern __inline__ int get_order(unsigned long size) extern __inline__ int get_order(unsigned long size)
{ {
......
#ifndef _S390_BUG_H
#define _S390_BUG_H
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
__asm__ __volatile__(".long 0"); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif
...@@ -60,15 +60,6 @@ static inline void copy_page(void *to, void *from) ...@@ -60,15 +60,6 @@ static inline void copy_page(void *to, void *from)
#define clear_user_page(page, vaddr, pg) clear_page(page) #define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from) #define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
__asm__ __volatile__(".long 0"); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
/* Pure 2^n version of get_order */ /* Pure 2^n version of get_order */
extern __inline__ int get_order(unsigned long size) extern __inline__ int get_order(unsigned long size)
{ {
......
#ifndef __ASM_SH_BUG_H
#define __ASM_SH_BUG_H
/*
* Tell the user there is some problem.
*/
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
asm volatile("nop"); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
#endif
...@@ -90,18 +90,6 @@ typedef struct { unsigned long pgprot; } pgprot_t; ...@@ -90,18 +90,6 @@ typedef struct { unsigned long pgprot; } pgprot_t;
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
/*
* Tell the user there is some problem.
*/
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
asm volatile("nop"); \
} while (0)
#define PAGE_BUG(page) do { \
BUG(); \
} while (0)
/* Pure 2^n version of get_order */ /* Pure 2^n version of get_order */
static __inline__ int get_order(unsigned long size) static __inline__ int get_order(unsigned long size)
{ {
......
/* $Id$ */
#ifndef _SPARC_BUG_H
#define _SPARC_BUG_H
/*
* XXX I am hitting compiler bugs with __builtin_trap. This has
* hit me before and rusty was blaming his netfilter bugs on
* this so lets disable it. - Anton
*/
#if 0
/* We need the mb()'s so we don't trigger a compiler bug - Anton */
#define BUG() do { \
mb(); \
__builtin_trap(); \
mb(); \
} while(0)
#else
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; \
} while (0)
#endif
#define PAGE_BUG(page) BUG()
#endif
...@@ -29,26 +29,6 @@ ...@@ -29,26 +29,6 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
/*
* XXX I am hitting compiler bugs with __builtin_trap. This has
* hit me before and rusty was blaming his netfilter bugs on
* this so lets disable it. - Anton
*/
#if 0
/* We need the mb()'s so we don't trigger a compiler bug - Anton */
#define BUG() do { \
mb(); \
__builtin_trap(); \
mb(); \
} while(0)
#else
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); *(int *)0=0; \
} while (0)
#endif
#define PAGE_BUG(page) BUG()
#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE) #define clear_page(page) memset((void *)(page), 0, PAGE_SIZE)
#define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE) #define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE)
#define clear_user_page(addr, vaddr, page) clear_page(addr) #define clear_user_page(addr, vaddr, page) clear_page(addr)
......
/* $Id$ */
#ifndef _SPARC64_BUG_H
#define _SPARC64_BUG_H
#ifdef CONFIG_DEBUG_BUGVERBOSE
extern void do_BUG(const char *file, int line);
#define BUG() do { \
do_BUG(__FILE__, __LINE__); \
__builtin_trap(); \
} while (0)
#else
#define BUG() __builtin_trap()
#endif
#endif
...@@ -20,18 +20,6 @@ ...@@ -20,18 +20,6 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#ifdef CONFIG_DEBUG_BUGVERBOSE
extern void do_BUG(const char *file, int line);
#define BUG() do { \
do_BUG(__FILE__, __LINE__); \
__builtin_trap(); \
} while (0)
#else
#define BUG() __builtin_trap()
#endif
#define PAGE_BUG(page) BUG()
/* Sparc64 is slow at multiplication, we prefer to use some extra space. */ /* Sparc64 is slow at multiplication, we prefer to use some extra space. */
#define WANT_PAGE_VIRTUAL 1 #define WANT_PAGE_VIRTUAL 1
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include <linux/list.h> #include <linux/list.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/cache.h> #include <linux/cache.h>
#include <asm/page.h> /* for BUG() */ #include <asm/bug.h>
struct vfsmount; struct vfsmount;
......
...@@ -194,6 +194,7 @@ typedef struct journal_superblock_s ...@@ -194,6 +194,7 @@ typedef struct journal_superblock_s
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <asm/bug.h>
#define JBD_ASSERTIONS #define JBD_ASSERTIONS
#ifdef JBD_ASSERTIONS #ifdef JBD_ASSERTIONS
...@@ -779,14 +780,6 @@ static inline void journal_abort_handle(handle_t *handle) ...@@ -779,14 +780,6 @@ static inline void journal_abort_handle(handle_t *handle)
handle->h_aborted = 1; handle->h_aborted = 1;
} }
/* Not all architectures define BUG() */
#ifndef BUG
#define BUG() do { \
printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
* ((char *) 0) = 0; \
} while (0)
#endif /* BUG */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
/* Comparison functions for transaction IDs: perform comparisons using /* Comparison functions for transaction IDs: perform comparisons using
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/compiler.h> #include <linux/compiler.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
#include <asm/bug.h>
/* Optimization barrier */ /* Optimization barrier */
/* The "volatile" is due to gcc bugs */ /* The "volatile" is due to gcc bugs */
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/compiler.h> #include <linux/compiler.h>
#include <linux/threads.h> #include <linux/threads.h>
#include <asm/smp.h> #include <asm/smp.h>
#include <asm/bug.h>
/* /*
* main cross-CPU interfaces, handles INIT, TLB flush, STOP, etc. * main cross-CPU interfaces, handles INIT, TLB flush, STOP, etc.
...@@ -86,7 +87,6 @@ int cpu_up(unsigned int cpu); ...@@ -86,7 +87,6 @@ int cpu_up(unsigned int cpu);
void smp_prepare_boot_cpu(void); void smp_prepare_boot_cpu(void);
#else /* !SMP */ #else /* !SMP */
#include <asm/page.h> /* For BUG() */
/* /*
* These macros fold the SMP functionality into a single CPU system * These macros fold the SMP functionality into a single CPU system
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment