public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
* [newlib-cygwin] Cygwin: add local machine/asm.h header
@ 2022-12-20 21:54 Corinna Vinschen
0 siblings, 0 replies; only message in thread
From: Corinna Vinschen @ 2022-12-20 21:54 UTC (permalink / raw)
To: cygwin-cvs
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=8e83ca675f522d132ca35d847aa35f310951702e
commit 8e83ca675f522d132ca35d847aa35f310951702e
Author: Corinna Vinschen <corinna@vinschen.de>
AuthorDate: Tue Dec 20 09:56:39 2022 +0100
Commit: Corinna Vinschen <corinna@vinschen.de>
CommitDate: Tue Dec 20 10:13:59 2022 +0100
Cygwin: add local machine/asm.h header
This header supports including BSD assembler sources.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diff:
---
winsup/cygwin/local_includes/machine/asm.h | 78 ++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
diff --git a/winsup/cygwin/local_includes/machine/asm.h b/winsup/cygwin/local_includes/machine/asm.h
new file mode 100644
index 000000000000..12b0285396ff
--- /dev/null
+++ b/winsup/cygwin/local_includes/machine/asm.h
@@ -0,0 +1,78 @@
+#ifndef _MACHINE_ASM_H
+#define _MACHINE_ASM_H
+
+/* Macros for importing FreeBSD/OpenBSD/NetBSD assembler code. */
+
+#ifdef __x86_64__
+
+#define _ALIGN_TEXT .p2align 4,0x90
+
+/* The NATIVE_ENTRY macro just adds the required gas macros. It can be
+ used stand-alone if the code is so short that it's better to change the
+ argument registeres rather than adding the code overhead. */
+
+#define NATIVE_ENTRY(__sym) \
+ .text ;\
+ .p2align 4 ;\
+ .globl __sym ;\
+ .seh_proc __sym ;\
+ __sym: \
+
+/* The ENTRY macros cover the difference in argument passing between
+ MS-ABI and SysV ABI. Note especially that RSI/RDI are always saved
+ in the stack shadow space defined by the MS_ABI, and restored when
+ calling ret (see the "ret" macro below). */
+
+#define __ENTRY(__sym) \
+ NATIVE_ENTRY(__sym) \
+ movq %rsi,8(%rsp) ;\
+ movq %rdi,16(%rsp) ;
+
+/* ENTRY1 for functions with 1 arg */
+#define ENTRY1(__sym) \
+ __ENTRY(__sym) \
+ movq %rcx,%rdi ;\
+ .seh_endprologue ;
+
+/* ENTRY2 for functions with 2 args */
+#define ENTRY2(__sym) \
+ __ENTRY(__sym) \
+ movq %rcx,%rdi ;\
+ movq %rdx,%rsi ;\
+ .seh_endprologue ;
+
+/* ENTRY3 for functions with 3 args */
+#define ENTRY3(__sym) \
+ __ENTRY(__sym) \
+ movq %rcx,%rdi ;\
+ movq %rdx,%rsi ;\
+ movq %r8,%rdx ;\
+ .seh_endprologue ;
+
+/* ENTRY4 for functions with 4 args */
+#define ENTRY4(__sym) \
+ __ENTRY(__sym) \
+ movq %rcx,%rdi ;\
+ movq %rdx,%rsi ;\
+ movq %r8,%rdx ;\
+ movq %r9,%rcx ;\
+ .seh_endprologue ;
+
+#define ret \
+ movq 8(%rsp),%rsi ;\
+ movq 16(%rsp),%rdi ;\
+ retq ;\
+
+#define END(__sym) \
+ .seh_endproc
+
+#endif /* __x86_64__ */
+
+#define __FBSDID(s) \
+ .ident s
+
+#define STRONG_ALIAS(__a,__s) \
+ .globl __a ;\
+ __a = __s ;
+
+#endif /* _MACHINE_ASM_H */
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-12-20 21:54 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-12-20 21:54 [newlib-cygwin] Cygwin: add local machine/asm.h header Corinna Vinschen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).