summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2026-01-09 16:31:39 +0100
committerHeiko Carstens <hca@linux.ibm.com>2026-01-27 12:16:16 +0100
commit8cbfd13601af7d71bb86c2ea686489a6f139c0ba (patch)
treea399f21d1a91c8630199c0d4371258177b01041a /arch
parent2b71b8ab971889edba278b71f1d3ff82cd42e175 (diff)
s390/bug: Introduce and use monitor code macro
The first operand address of the monitor call (mc) instruction is the monitor code. Currently the monitor code is ignored, but this will change. Therefore add and use MONCODE_BUG instead of a hardcoded zero. Reviewed-by: Sven Schnelle <svens@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/s390/include/asm/bug.h10
-rw-r--r--arch/s390/kernel/traps.c5
2 files changed, 11 insertions, 4 deletions
diff --git a/arch/s390/include/asm/bug.h b/arch/s390/include/asm/bug.h
index 7e0498f22f2a..faa556226c00 100644
--- a/arch/s390/include/asm/bug.h
+++ b/arch/s390/include/asm/bug.h
@@ -3,7 +3,11 @@
#define _ASM_S390_BUG_H
#include <linux/compiler.h>
+#include <linux/const.h>
+#define MONCODE_BUG _AC(0, U)
+
+#ifndef __ASSEMBLER__
#if defined(CONFIG_BUG) && defined(CONFIG_CC_HAS_ASM_IMMEDIATE_STRINGS)
#ifdef CONFIG_DEBUG_BUGVERBOSE
@@ -24,7 +28,7 @@
#define __BUG_ASM(cond_str, flags) \
do { \
asm_inline volatile("\n" \
- "0: mc 0,0\n" \
+ "0: mc %[monc](%%r0),0\n" \
" .section __bug_table,\"aw\"\n" \
"1: .long 0b - . # bug_entry::bug_addr\n" \
__BUG_ENTRY_VERBOSE("%[frmt]", "%[file]", "%[line]") \
@@ -32,7 +36,8 @@ do { \
" .org 1b+%[size]\n" \
" .previous" \
: \
- : [frmt] "i" (WARN_CONDITION_STR(cond_str)), \
+ : [monc] "i" (MONCODE_BUG), \
+ [frmt] "i" (WARN_CONDITION_STR(cond_str)), \
[file] "i" (__FILE__), \
[line] "i" (__LINE__), \
[flgs] "i" (flags), \
@@ -54,6 +59,7 @@ do { \
#define HAVE_ARCH_BUG_FORMAT
#endif /* CONFIG_BUG && CONFIG_CC_HAS_ASM_IMMEDIATE_STRINGS */
+#endif /* __ASSEMBLER__ */
#include <asm-generic/bug.h>
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index 19687dab32f7..de63e98e724b 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -258,11 +258,12 @@ static void __init test_monitor_call(void)
if (!IS_ENABLED(CONFIG_BUG))
return;
asm_inline volatile(
- " mc 0,0\n"
+ " mc %[monc](%%r0),0\n"
"0: lhi %[val],0\n"
"1:\n"
EX_TABLE(0b, 1b)
- : [val] "+d" (val));
+ : [val] "+d" (val)
+ : [monc] "i" (MONCODE_BUG));
if (!val)
panic("Monitor call doesn't work!\n");
}