diff options
| author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2019-01-17 03:29:15 -0500 |
|---|---|---|
| committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2019-05-02 07:54:11 -0400 |
| commit | e21f8baf8d9a452a09a9cf7c8ab4720ff9a891ef (patch) | |
| tree | 905b31bcbe59be06424d8d2579fa8c9c089dee6c | |
| parent | bf72630130c29e2ba42e3db8d502de6bdfaa7d9a (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.h | 24 |
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 */ |
