[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241023112217.GJZxjcaV8rBmuPGJnE@fat_crate.local>
Date: Wed, 23 Oct 2024 13:22:17 +0200
From: Borislav Petkov <bp@...en8.de>
To: Peter Zijlstra <peterz@...radead.org>
Cc: david.kaplan@....com, jpoimboe@...hat.com, linux-kernel@...r.kernel.org,
x86@...nel.org
Subject: Re: [RFC][PATCH 1/2] x86: Provide assembly __bug_table helpers
On Mon, Oct 07, 2024 at 10:32:11AM +0200, Peter Zijlstra wrote:
> +#define ASM_BUGTABLE_FLAGS(at, file, line, flags) \
> + .pushsection __bug_table, "aw" ; \
> + 123: ASM_BUG_REL(at) ; \
> + ASM_BUGTABLE_VERBOSE(file, line) ; \
> + .word flags ; \
> + .org 123b + 6 + ASM_BUGTABLE_VERBOSE_SIZE ; \
I'm guessing this second 6 is the sizeof(long + word) of the second two?
I.e., in here:
asm __inline volatile("1:\t" ".byte 0x0f, 0x0b" "\n"
".pushsection __bug_table, \"aw\" ;
123:
.long 1b - . ;
.long %c0 - . ;
^^^^^^^^^^^^^
.word %c1 ;
.word %c2 ;
^^^^^^^^^^
.org 123b + 6 + 6 ;
.popsection" "\n" ""
Can we add a define for it too instead of a naked 6?
> + .popsection
>
> #define _BUG_FLAGS(ins, flags, extra) \
> do { \
> asm_inline volatile("1:\t" ins "\n" \
s/ins/insn/ while at it.
The usual abbreviation for an "instruction".
> - ".pushsection __bug_table,\"aw\"\n" \
> - "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \
> - "\t.word %c0" "\t# bug_entry::flags\n" \
> - "\t.org 2b+%c1\n" \
> - ".popsection\n" \
> - extra \
> - : : "i" (flags), \
> - "i" (sizeof(struct bug_entry))); \
> + __stringify(ASM_BUGTABLE_FLAGS(1b, %c0, %c1, %c2)) "\n" \
> + extra \
> + : : "i" (__FILE__), "i" (__LINE__), \
> + "i" (flags)); \
> } while (0)
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
Powered by blists - more mailing lists