mirror of
https://github.com/torvalds/linux.git
synced 2026-09-22 12:44:03 +02:00
powerpc: Allow relative pointers in bug table entries
This enables GENERIC_BUG_RELATIVE_POINTERS on Power so that 32-bit offsets are stored in the bug entries rather than 64-bit pointers. While this doesn't save space for 32-bit machines, use it anyway so there is only one code path. Signed-off-by: Jordan Niethe <jniethe5@gmail.com> Reviewed-by: Christophe Leroy <christophe.leroy@csgroup.eu> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20201201005203.15210-1-jniethe5@gmail.com
This commit is contained in:
parent
f3e9040801
commit
1baa1f70ef
|
|
@ -313,6 +313,10 @@ config GENERIC_BUG
|
||||||
default y
|
default y
|
||||||
depends on BUG
|
depends on BUG
|
||||||
|
|
||||||
|
config GENERIC_BUG_RELATIVE_POINTERS
|
||||||
|
def_bool y
|
||||||
|
depends on GENERIC_BUG
|
||||||
|
|
||||||
config SYS_SUPPORTS_APM_EMULATION
|
config SYS_SUPPORTS_APM_EMULATION
|
||||||
default y if PMAC_APM_EMU
|
default y if PMAC_APM_EMU
|
||||||
bool
|
bool
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
||||||
.macro EMIT_BUG_ENTRY addr,file,line,flags
|
.macro EMIT_BUG_ENTRY addr,file,line,flags
|
||||||
.section __bug_table,"aw"
|
.section __bug_table,"aw"
|
||||||
5001: PPC_LONG \addr, 5002f
|
5001: .4byte \addr - 5001b, 5002f - 5001b
|
||||||
.short \line, \flags
|
.short \line, \flags
|
||||||
.org 5001b+BUG_ENTRY_SIZE
|
.org 5001b+BUG_ENTRY_SIZE
|
||||||
.previous
|
.previous
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
#else
|
#else
|
||||||
.macro EMIT_BUG_ENTRY addr,file,line,flags
|
.macro EMIT_BUG_ENTRY addr,file,line,flags
|
||||||
.section __bug_table,"aw"
|
.section __bug_table,"aw"
|
||||||
5001: PPC_LONG \addr
|
5001: .4byte \addr - 5001b
|
||||||
.short \flags
|
.short \flags
|
||||||
.org 5001b+BUG_ENTRY_SIZE
|
.org 5001b+BUG_ENTRY_SIZE
|
||||||
.previous
|
.previous
|
||||||
|
|
@ -36,14 +36,14 @@
|
||||||
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
||||||
#define _EMIT_BUG_ENTRY \
|
#define _EMIT_BUG_ENTRY \
|
||||||
".section __bug_table,\"aw\"\n" \
|
".section __bug_table,\"aw\"\n" \
|
||||||
"2:\t" PPC_LONG "1b, %0\n" \
|
"2:\t.4byte 1b - 2b, %0 - 2b\n" \
|
||||||
"\t.short %1, %2\n" \
|
"\t.short %1, %2\n" \
|
||||||
".org 2b+%3\n" \
|
".org 2b+%3\n" \
|
||||||
".previous\n"
|
".previous\n"
|
||||||
#else
|
#else
|
||||||
#define _EMIT_BUG_ENTRY \
|
#define _EMIT_BUG_ENTRY \
|
||||||
".section __bug_table,\"aw\"\n" \
|
".section __bug_table,\"aw\"\n" \
|
||||||
"2:\t" PPC_LONG "1b\n" \
|
"2:\t.4byte 1b - 2b\n" \
|
||||||
"\t.short %2\n" \
|
"\t.short %2\n" \
|
||||||
".org 2b+%3\n" \
|
".org 2b+%3\n" \
|
||||||
".previous\n"
|
".previous\n"
|
||||||
|
|
|
||||||
|
|
@ -1747,9 +1747,9 @@ static void print_bug_trap(struct pt_regs *regs)
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
#ifdef CONFIG_DEBUG_BUGVERBOSE
|
||||||
printf("kernel BUG at %s:%u!\n",
|
printf("kernel BUG at %s:%u!\n",
|
||||||
bug->file, bug->line);
|
(char *)bug + bug->file_disp, bug->line);
|
||||||
#else
|
#else
|
||||||
printf("kernel BUG at %px!\n", (void *)bug->bug_addr);
|
printf("kernel BUG at %px!\n", (void *)bug + bug->bug_addr_disp);
|
||||||
#endif
|
#endif
|
||||||
#endif /* CONFIG_BUG */
|
#endif /* CONFIG_BUG */
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user