powerpc/prom: convert PROM_BUG() to standard trap
Prior to commit 1bd98d7fbaf5 ("ppc64: Update BUG handling based on ppc32"), BUG() family was using BUG_ILLEGAL_INSTRUCTION which was an invalid instruction opcode to trap into program check exception. That commit converted them to using standard trap instructions, but prom/prom_init and their PROM_BUG() macro were left over. head_64.S and exception-64s.S were left aside as well. Convert them to using the standard BUG infrastructure. Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/cdaf4bbbb64c288a077845846f04b12683f8875a.1566817807.git.christophe.leroy@c-s.fr
This commit is contained in:
parent
405efc5980
commit
63ce271b5e
@ -5,14 +5,6 @@
|
|||||||
|
|
||||||
#include <asm/asm-compat.h>
|
#include <asm/asm-compat.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* Define an illegal instr to trap on the bug.
|
|
||||||
* We don't use 0 because that marks the end of a function
|
|
||||||
* in the ELF ABI. That's "Boo Boo" in case you wonder...
|
|
||||||
*/
|
|
||||||
#define BUG_OPCODE .long 0x00b00b00 /* For asm */
|
|
||||||
#define BUG_ILLEGAL_INSTR "0x00b00b00" /* For BUG macro */
|
|
||||||
|
|
||||||
#ifdef CONFIG_BUG
|
#ifdef CONFIG_BUG
|
||||||
|
|
||||||
#ifdef __ASSEMBLY__
|
#ifdef __ASSEMBLY__
|
||||||
|
@ -1467,7 +1467,8 @@ EXC_COMMON_BEGIN(fp_unavailable_common)
|
|||||||
RECONCILE_IRQ_STATE(r10, r11)
|
RECONCILE_IRQ_STATE(r10, r11)
|
||||||
addi r3,r1,STACK_FRAME_OVERHEAD
|
addi r3,r1,STACK_FRAME_OVERHEAD
|
||||||
bl kernel_fp_unavailable_exception
|
bl kernel_fp_unavailable_exception
|
||||||
BUG_OPCODE
|
0: trap
|
||||||
|
EMIT_BUG_ENTRY 0b, __FILE__, __LINE__, 0
|
||||||
1:
|
1:
|
||||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||||
BEGIN_FTR_SECTION
|
BEGIN_FTR_SECTION
|
||||||
|
@ -182,7 +182,8 @@ __secondary_hold:
|
|||||||
isync
|
isync
|
||||||
bctr
|
bctr
|
||||||
#else
|
#else
|
||||||
BUG_OPCODE
|
0: trap
|
||||||
|
EMIT_BUG_ENTRY 0b, __FILE__, __LINE__, 0
|
||||||
#endif
|
#endif
|
||||||
CLOSE_FIXED_SECTION(first_256B)
|
CLOSE_FIXED_SECTION(first_256B)
|
||||||
|
|
||||||
@ -998,7 +999,8 @@ start_here_common:
|
|||||||
bl start_kernel
|
bl start_kernel
|
||||||
|
|
||||||
/* Not reached */
|
/* Not reached */
|
||||||
BUG_OPCODE
|
trap
|
||||||
|
EMIT_BUG_ENTRY 0b, __FILE__, __LINE__, 0
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We put a few things here that have to be page-aligned.
|
* We put a few things here that have to be page-aligned.
|
||||||
|
@ -94,7 +94,7 @@ static int of_workarounds __prombss;
|
|||||||
#define PROM_BUG() do { \
|
#define PROM_BUG() do { \
|
||||||
prom_printf("kernel BUG at %s line 0x%x!\n", \
|
prom_printf("kernel BUG at %s line 0x%x!\n", \
|
||||||
__FILE__, __LINE__); \
|
__FILE__, __LINE__); \
|
||||||
__asm__ __volatile__(".long " BUG_ILLEGAL_INSTR); \
|
__builtin_trap(); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#ifdef DEBUG_PROM
|
#ifdef DEBUG_PROM
|
||||||
|
Loading…
Reference in New Issue
Block a user