From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id EA2643858000; Tue, 20 Dec 2022 21:54:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EA2643858000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1671573281; bh=VI/f4pfZcGXmzI+Wfv/9slmbAm5ncIGhlxr39Vqw6TQ=; h=From:To:Subject:Date:From; b=IY/O4PYqa2FyKQ/cV8rS2AMi6wbMdkq+XLSOXUHjfDQ725cjJfRV5RJQVQqhSPNqU rNgHxS653zyej1jAi3RdGbi0Oudd8Lr/mnPuN8uOQVANHVNqYiupug5esbmHMIh48g 0Skt9RSUey12XsWExpw1YHgkWMcBJ9CNmON3ffq4= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: add local machine/asm.h header X-Act-Checkin: newlib-cygwin X-Git-Author: Corinna Vinschen X-Git-Refname: refs/heads/master X-Git-Oldrev: a25730119cc9a2fd840295970fcbcc5676a2b9af X-Git-Newrev: 8e83ca675f522d132ca35d847aa35f310951702e Message-Id: <20221220215441.EA2643858000@sourceware.org> Date: Tue, 20 Dec 2022 21:54:41 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D8e83ca675f5= 22d132ca35d847aa35f310951702e commit 8e83ca675f522d132ca35d847aa35f310951702e Author: Corinna Vinschen AuthorDate: Tue Dec 20 09:56:39 2022 +0100 Commit: Corinna Vinschen CommitDate: Tue Dec 20 10:13:59 2022 +0100 Cygwin: add local machine/asm.h header =20 This header supports including BSD assembler sources. =20 Signed-off-by: Corinna Vinschen 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/loc= al_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 =3D __s ; + +#endif /* _MACHINE_ASM_H */