Skip to content

Commit

Permalink
x86/lib/atomic64_386_32: Rename things
Browse files Browse the repository at this point in the history
[ Upstream commit 22da5a0 ]

Principally, in order to get rid of #define RET in this code to make
place for a new RET, but also to clarify the code, rename a bunch of
things:

  s/UNLOCK/IRQ_RESTORE/
  s/LOCK/IRQ_SAVE/
  s/BEGIN/BEGIN_IRQ_SAVE/
  s/\<RET\>/RET_IRQ_RESTORE/
  s/RET_ENDP/\tRET_IRQ_RESTORE\rENDP/

which then leaves RET unused so it can be removed.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/20211204134907.841623970@infradead.org
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Peter Zijlstra authored and gregkh committed May 15, 2022
1 parent c9e1854 commit 8983722
Showing 1 changed file with 46 additions and 38 deletions.
84 changes: 46 additions & 38 deletions arch/x86/lib/atomic64_386_32.S
Expand Up @@ -9,129 +9,136 @@
#include <asm/alternative.h>

/* if you want SMP support, implement these with real spinlocks */
.macro LOCK reg
.macro IRQ_SAVE reg
pushfl
cli
.endm

.macro UNLOCK reg
.macro IRQ_RESTORE reg
popfl
.endm

#define BEGIN(op) \
#define BEGIN_IRQ_SAVE(op) \
.macro endp; \
SYM_FUNC_END(atomic64_##op##_386); \
.purgem endp; \
.endm; \
SYM_FUNC_START(atomic64_##op##_386); \
LOCK v;
IRQ_SAVE v;

#define ENDP endp

#define RET \
UNLOCK v; \
#define RET_IRQ_RESTORE \
IRQ_RESTORE v; \
ret

#define RET_ENDP \
RET; \
ENDP

#define v %ecx
BEGIN(read)
BEGIN_IRQ_SAVE(read)
movl (v), %eax
movl 4(v), %edx
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %esi
BEGIN(set)
BEGIN_IRQ_SAVE(set)
movl %ebx, (v)
movl %ecx, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %esi
BEGIN(xchg)
BEGIN_IRQ_SAVE(xchg)
movl (v), %eax
movl 4(v), %edx
movl %ebx, (v)
movl %ecx, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %ecx
BEGIN(add)
BEGIN_IRQ_SAVE(add)
addl %eax, (v)
adcl %edx, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %ecx
BEGIN(add_return)
BEGIN_IRQ_SAVE(add_return)
addl (v), %eax
adcl 4(v), %edx
movl %eax, (v)
movl %edx, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %ecx
BEGIN(sub)
BEGIN_IRQ_SAVE(sub)
subl %eax, (v)
sbbl %edx, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %ecx
BEGIN(sub_return)
BEGIN_IRQ_SAVE(sub_return)
negl %edx
negl %eax
sbbl $0, %edx
addl (v), %eax
adcl 4(v), %edx
movl %eax, (v)
movl %edx, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %esi
BEGIN(inc)
BEGIN_IRQ_SAVE(inc)
addl $1, (v)
adcl $0, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %esi
BEGIN(inc_return)
BEGIN_IRQ_SAVE(inc_return)
movl (v), %eax
movl 4(v), %edx
addl $1, %eax
adcl $0, %edx
movl %eax, (v)
movl %edx, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %esi
BEGIN(dec)
BEGIN_IRQ_SAVE(dec)
subl $1, (v)
sbbl $0, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %esi
BEGIN(dec_return)
BEGIN_IRQ_SAVE(dec_return)
movl (v), %eax
movl 4(v), %edx
subl $1, %eax
sbbl $0, %edx
movl %eax, (v)
movl %edx, 4(v)
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

#define v %esi
BEGIN(add_unless)
BEGIN_IRQ_SAVE(add_unless)
addl %eax, %ecx
adcl %edx, %edi
addl (v), %eax
Expand All @@ -143,7 +150,7 @@ BEGIN(add_unless)
movl %edx, 4(v)
movl $1, %eax
2:
RET
RET_IRQ_RESTORE
3:
cmpl %edx, %edi
jne 1b
Expand All @@ -153,7 +160,7 @@ ENDP
#undef v

#define v %esi
BEGIN(inc_not_zero)
BEGIN_IRQ_SAVE(inc_not_zero)
movl (v), %eax
movl 4(v), %edx
testl %eax, %eax
Expand All @@ -165,7 +172,7 @@ BEGIN(inc_not_zero)
movl %edx, 4(v)
movl $1, %eax
2:
RET
RET_IRQ_RESTORE
3:
testl %edx, %edx
jne 1b
Expand All @@ -174,7 +181,7 @@ ENDP
#undef v

#define v %esi
BEGIN(dec_if_positive)
BEGIN_IRQ_SAVE(dec_if_positive)
movl (v), %eax
movl 4(v), %edx
subl $1, %eax
Expand All @@ -183,5 +190,6 @@ BEGIN(dec_if_positive)
movl %eax, (v)
movl %edx, 4(v)
1:
RET_ENDP
RET_IRQ_RESTORE
ENDP
#undef v

0 comments on commit 8983722

Please sign in to comment.