Commit fe76a134 authored by Helge Deller's avatar Helge Deller
Browse files

parisc: Use natural CPU alignment for bug_table



Make sure that the __bug_table section gets 32- or 64-bit aligned,
depending if a 32- or 64-bit kernel is being built.
Mark it non-writeable and use .blockz instead of the .org assembler
directive to pad the struct.

Signed-off-by: default avatarHelge Deller <deller@gmx.de>
Cc: stable@vger.kernel.org   # v6.0+
parent c9fcb2b6
Loading
Loading
Loading
Loading
+18 −12
Original line number Diff line number Diff line
@@ -28,13 +28,15 @@
	do {								\
		asm volatile("\n"					\
			     "1:\t" PARISC_BUG_BREAK_ASM "\n"		\
			     "\t.pushsection __bug_table,\"aw\"\n"	\
			     "\t.pushsection __bug_table,\"a\"\n"	\
			     "\t.align %4\n"				\
			     "2:\t" ASM_WORD_INSN "1b, %c0\n"		\
			     "\t.short %c1, %c2\n"			\
			     "\t.org 2b+%c3\n"				\
			     "\t.short %1, %2\n"			\
			     "\t.blockz %3-2*%4-2*2\n"			\
			     "\t.popsection"				\
			     : : "i" (__FILE__), "i" (__LINE__),	\
			     "i" (0), "i" (sizeof(struct bug_entry)) ); \
			     "i" (0), "i" (sizeof(struct bug_entry)),	\
			     "i" (sizeof(long)) );			\
		unreachable();						\
	} while(0)

@@ -51,27 +53,31 @@
	do {								\
		asm volatile("\n"					\
			     "1:\t" PARISC_BUG_BREAK_ASM "\n"		\
			     "\t.pushsection __bug_table,\"aw\"\n"	\
			     "\t.pushsection __bug_table,\"a\"\n"	\
			     "\t.align %4\n"				\
			     "2:\t" ASM_WORD_INSN "1b, %c0\n"		\
			     "\t.short %c1, %c2\n"			\
			     "\t.org 2b+%c3\n"				\
			     "\t.short %1, %2\n"			\
			     "\t.blockz %3-2*%4-2*2\n"			\
			     "\t.popsection"				\
			     : : "i" (__FILE__), "i" (__LINE__),	\
			     "i" (BUGFLAG_WARNING|(flags)),		\
			     "i" (sizeof(struct bug_entry)) );		\
			     "i" (sizeof(struct bug_entry)),		\
			     "i" (sizeof(long)) );			\
	} while(0)
#else
#define __WARN_FLAGS(flags)						\
	do {								\
		asm volatile("\n"					\
			     "1:\t" PARISC_BUG_BREAK_ASM "\n"		\
			     "\t.pushsection __bug_table,\"aw\"\n"	\
			     "\t.pushsection __bug_table,\"a\"\n"	\
			     "\t.align %2\n"				\
			     "2:\t" ASM_WORD_INSN "1b\n"		\
			     "\t.short %c0\n"				\
			     "\t.org 2b+%c1\n"				\
			     "\t.short %0\n"				\
			     "\t.blockz %1-%2-2\n"			\
			     "\t.popsection"				\
			     : : "i" (BUGFLAG_WARNING|(flags)),		\
			     "i" (sizeof(struct bug_entry)) );		\
			     "i" (sizeof(struct bug_entry)),		\
			     "i" (sizeof(long)) );			\
	} while(0)
#endif