Jacek Caban : wine/asm.h: Introduce __ASM_BLOCK_BEGIN and __ASM_BLOCK_END macros.

Alexandre Julliard julliard at winehq.org
Fri Apr 24 15:11:39 CDT 2020


Module: wine
Branch: master
Commit: 541048868d44512fbd074cbfb7dea28c620ba7d4
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=541048868d44512fbd074cbfb7dea28c620ba7d4

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Apr 24 20:10:07 2020 +0200

wine/asm.h: Introduce __ASM_BLOCK_BEGIN and __ASM_BLOCK_END macros.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/wine/asm.h | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/include/wine/asm.h b/include/wine/asm.h
index a036744674..2a4f06cb92 100644
--- a/include/wine/asm.h
+++ b/include/wine/asm.h
@@ -55,16 +55,20 @@
 # define __ASM_FUNC_TYPE(name) ".type " name ", at function"
 #endif
 
-#ifdef __GNUC__
-# define __ASM_DEFINE_FUNC(name,code) \
-    asm(".text\n\t.align 4\n\t.globl " name "\n\t" __ASM_FUNC_TYPE(name) __ASM_SEH("\n\t.seh_proc " name) "\n" name ":\n\t" \
-        __ASM_CFI(".cfi_startproc\n\t") code __ASM_CFI("\n\t.cfi_endproc") __ASM_SEH("\n\t.seh_endproc") );
+#if !defined(__GNUC__) && !defined(__clang__)
+# define __ASM_BLOCK_BEGIN(name) void __asm_dummy_##name(void) {
+# define __ASM_BLOCK_END         }
 #else
-# define __ASM_DEFINE_FUNC(name,code) void __asm_dummy_##__LINE__(void) { \
-    asm(".text\n\t.align 4\n\t.globl " name "\n\t" __ASM_FUNC_TYPE(name) __ASM_SEH("\n\t.seh_proc " name) "\n" name ":\n\t" \
-        __ASM_CFI(".cfi_startproc\n\t") code __ASM_CFI("\n\t.cfi_endproc") __ASM_SEH("\n\t.seh_endproc") ); }
+# define __ASM_BLOCK_BEGIN(name)
+# define __ASM_BLOCK_END
 #endif
 
+#define __ASM_DEFINE_FUNC(name,code)  \
+    __ASM_BLOCK_BEGIN(__LINE__) \
+    asm(".text\n\t.align 4\n\t.globl " name "\n\t" __ASM_FUNC_TYPE(name) __ASM_SEH("\n\t.seh_proc " name) "\n" name ":\n\t" \
+        __ASM_CFI(".cfi_startproc\n\t") code __ASM_CFI("\n\t.cfi_endproc") __ASM_SEH("\n\t.seh_endproc") ); \
+    __ASM_BLOCK_END
+
 #define __ASM_GLOBAL_FUNC(name,code) __ASM_DEFINE_FUNC(__ASM_NAME(#name),code)
 
 #define __ASM_STDCALL_FUNC(name,args,code) __ASM_DEFINE_FUNC(__ASM_STDCALL(#name,args),code)




More information about the wine-cvs mailing list