aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2019-01-17 03:29:15 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2019-05-02 07:54:11 -0400
commite21f8baf8d9a452a09a9cf7c8ab4720ff9a891ef (patch)
tree905b31bcbe59be06424d8d2579fa8c9c089dee6c
parentbf72630130c29e2ba42e3db8d502de6bdfaa7d9a (diff)
s390/bug: add entry size to the __bug_table section
Change the __EMIT_BUG inline assembly to emit mergeable __bug_table entries with type @progbits and specify the size of each entry. The entry size is encoded sh_entsize field of the section definition, it allows to identify which struct bug_entry to use to decode the entries. This will be needed for the objtool support. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r--arch/s390/include/asm/bug.h24
1 files changed, 12 insertions, 12 deletions
diff --git a/arch/s390/include/asm/bug.h b/arch/s390/include/asm/bug.h
index 429f43a8a8e8..713fc9735ffb 100644
--- a/arch/s390/include/asm/bug.h
+++ b/arch/s390/include/asm/bug.h
@@ -15,7 +15,7 @@
15 ".section .rodata.str,\"aMS\",@progbits,1\n" \ 15 ".section .rodata.str,\"aMS\",@progbits,1\n" \
16 "2: .asciz \""__FILE__"\"\n" \ 16 "2: .asciz \""__FILE__"\"\n" \
17 ".previous\n" \ 17 ".previous\n" \
18 ".section __bug_table,\"aw\"\n" \ 18 ".section __bug_table,\"awM\",@progbits,%2\n" \
19 "3: .long 1b-3b,2b-3b\n" \ 19 "3: .long 1b-3b,2b-3b\n" \
20 " .short %0,%1\n" \ 20 " .short %0,%1\n" \
21 " .org 3b+%2\n" \ 21 " .org 3b+%2\n" \
@@ -27,17 +27,17 @@
27 27
28#else /* CONFIG_DEBUG_BUGVERBOSE */ 28#else /* CONFIG_DEBUG_BUGVERBOSE */
29 29
30#define __EMIT_BUG(x) do { \ 30#define __EMIT_BUG(x) do { \
31 asm volatile( \ 31 asm volatile( \
32 "0: j 0b+2\n" \ 32 "0: j 0b+2\n" \
33 "1:\n" \ 33 "1:\n" \
34 ".section __bug_table,\"aw\"\n" \ 34 ".section __bug_table,\"awM\",@progbits,%1\n" \
35 "2: .long 1b-2b\n" \ 35 "2: .long 1b-2b\n" \
36 " .short %0\n" \ 36 " .short %0\n" \
37 " .org 2b+%1\n" \ 37 " .org 2b+%1\n" \
38 ".previous\n" \ 38 ".previous\n" \
39 : : "i" (x), \ 39 : : "i" (x), \
40 "i" (sizeof(struct bug_entry))); \ 40 "i" (sizeof(struct bug_entry))); \
41} while (0) 41} while (0)
42 42
43#endif /* CONFIG_DEBUG_BUGVERBOSE */ 43#endif /* CONFIG_DEBUG_BUGVERBOSE */