Use a lowercase name for the end macro, which somehow fixes a binutils 2.16
problem.
Signed-off-by: Luca Barbieri <luca@luca-barbieri.com>
LKML-Reference: <tip-
30246557a06bb20618bed906a06d1e1e0faa8bb4@git.kernel.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
.endm
#define BEGIN(op) \
-.macro END; \
+.macro endp; \
CFI_ENDPROC; \
ENDPROC(atomic64_##op##_386); \
-.purgem END; \
+.purgem endp; \
.endm; \
ENTRY(atomic64_##op##_386); \
CFI_STARTPROC; \
LOCK v;
+#define ENDP endp
+
#define RET \
UNLOCK v; \
ret
-#define RET_END \
+#define RET_ENDP \
RET; \
- END
+ ENDP
#define v %ecx
BEGIN(read)
movl (v), %eax
movl 4(v), %edx
-RET_END
+RET_ENDP
#undef v
#define v %esi
BEGIN(set)
movl %ebx, (v)
movl %ecx, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %esi
movl 4(v), %edx
movl %ebx, (v)
movl %ecx, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %ecx
BEGIN(add)
addl %eax, (v)
adcl %edx, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %ecx
adcl 4(v), %edx
movl %eax, (v)
movl %edx, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %ecx
BEGIN(sub)
subl %eax, (v)
sbbl %edx, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %ecx
adcl 4(v), %edx
movl %eax, (v)
movl %edx, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %esi
BEGIN(inc)
addl $1, (v)
adcl $0, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %esi
adcl $0, %edx
movl %eax, (v)
movl %edx, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %esi
BEGIN(dec)
subl $1, (v)
sbbl $0, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %esi
sbbl $0, %edx
movl %eax, (v)
movl %edx, 4(v)
-RET_END
+RET_ENDP
#undef v
#define v %ecx
jne 1b
xorl %eax, %eax
jmp 2b
-END
+ENDP
#undef v
#define v %esi
testl %edx, %edx
jne 1b
jmp 2b
-END
+ENDP
#undef v
#define v %esi
movl %eax, (v)
movl %edx, 4(v)
1:
-RET_END
+RET_ENDP
#undef v