]> git.baikalelectronics.ru Git - kernel.git/commit
static_call/x86: Add __static_call_return0()
authorPeter Zijlstra <peterz@infradead.org>
Mon, 18 Jan 2021 14:12:16 +0000 (15:12 +0100)
committerIngo Molnar <mingo@kernel.org>
Wed, 17 Feb 2021 13:08:43 +0000 (14:08 +0100)
commit93e1cbf1887f733b3ddc3fbd4e685ecb4e619120
treeecceaeff23b07b1e7e7e611fdd64d9646b04e099
parent15a137353be0e8443b229dfbcac5121eee03c4a1
static_call/x86: Add __static_call_return0()

Provide a stub function that return 0 and wire up the static call site
patching to replace the CALL with a single 5 byte instruction that
clears %RAX, the return value register.

The function can be cast to any function pointer type that has a
single %RAX return (including pointers). Also provide a version that
returns an int for convenience. We are clearing the entire %RAX register
in any case, whether the return value is 32 or 64 bits, since %RAX is
always a scratch register anyway.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lkml.kernel.org/r/20210118141223.123667-2-frederic@kernel.org
arch/x86/kernel/static_call.c
include/linux/static_call.h
kernel/static_call.c