1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 * atomic64_t for 386/486
5 * Copyright © 2010 Luca Barbieri
8 #include <linux/linkage.h>
9 #include <asm/alternative.h>
11 /* if you want SMP support, implement these with real spinlocks */
17 .macro IRQ_RESTORE reg
21 #define BEGIN_IRQ_SAVE(op) \
23 SYM_FUNC_END(atomic64_##op##_386); \
26 SYM_FUNC_START(atomic64_##op##_386); \
31 #define RET_IRQ_RESTORE \
70 BEGIN_IRQ_SAVE(add_return)
88 BEGIN_IRQ_SAVE(sub_return)
109 BEGIN_IRQ_SAVE(inc_return)
129 BEGIN_IRQ_SAVE(dec_return)
141 BEGIN_IRQ_SAVE(add_unless)
163 BEGIN_IRQ_SAVE(inc_not_zero)
184 BEGIN_IRQ_SAVE(dec_if_positive)