aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorHeiko Carstens <hca@linux.ibm.com>2024-12-11 12:58:05 +0100
committerAlexander Gordeev <agordeev@linux.ibm.com>2024-12-15 16:19:03 +0100
commit5c9e37e5233ec3a6b4f2d160c697b8b28d13f134 (patch)
treed21416e8d6c3732d403bf556ae3699fb9d10b979
parents390/atomic: Provide arch_atomic_*_and_test() implementations (diff)
downloadwireguard-linux-5c9e37e5233ec3a6b4f2d160c697b8b28d13f134.tar.xz
wireguard-linux-5c9e37e5233ec3a6b4f2d160c697b8b28d13f134.zip
s390/preempt: Optimize __preempt_count_dec_and_test()
Use __atomic_add_const_and_test() within __preempt_count_dec_and_test(). With this it is possible to decrease preempt_count by one and test if need_resched is set with one instruction, if the compiler has support for flag output operand constraints. Reviewed-by: Juergen Christ <jchrist@linux.ibm.com> Signed-off-by: Heiko Carstens <hca@linux.ibm.com> Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Diffstat (limited to '')
-rw-r--r--arch/s390/include/asm/preempt.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/s390/include/asm/preempt.h b/arch/s390/include/asm/preempt.h
index a55e1767b4d4..6ccd033acfe5 100644
--- a/arch/s390/include/asm/preempt.h
+++ b/arch/s390/include/asm/preempt.h
@@ -87,7 +87,7 @@ static __always_inline void __preempt_count_sub(int val)
*/
static __always_inline bool __preempt_count_dec_and_test(void)
{
- return __atomic_add(-1, &get_lowcore()->preempt_count) == 1;
+ return __atomic_add_const_and_test(-1, &get_lowcore()->preempt_count);
}
/*