=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: winebuild: Create stubs for ARM64.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jun 15 08:49:08 CDT 2015


Module: wine
Branch: master
Commit: d1f9067cf548085c167e9a6da296a542b6099839
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d1f9067cf548085c167e9a6da296a542b6099839

Author: André Hentschel <nerv at dawncrow.de>
Date:   Sun Jun 14 23:24:06 2015 +0200

winebuild: Create stubs for ARM64.

---

 tools/winebuild/import.c | 17 +++++++++++++++++
 tools/winebuild/parser.c |  4 ++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/tools/winebuild/import.c b/tools/winebuild/import.c
index 3ad5cab..13596a4 100644
--- a/tools/winebuild/import.c
+++ b/tools/winebuild/import.c
@@ -1270,6 +1270,23 @@ void output_stubs( DLLSPEC *spec )
             if (exp_name) output( "\t.long .L%s_string-2b\n", name );
             else output( "\t.long %u\n", odp->ordinal );
             break;
+        case CPU_ARM64:
+            output( "\tadr x0, 2f\n" );
+            output( "\tldur x0, [x0, #0]\n" );
+            output( "\tadr x1, 2f+8\n" );
+            output( "\tldur x1, [x1, #0]\n" );
+            output( "\tadr x2, 1f\n" );
+            output( "\tldur x2, [x2, #0]\n" );
+            output( "\tblr x2\n" );
+            output( "1:\t.quad %s\n", asm_name("__wine_spec_unimplemented_stub") );
+            output( "2:\t.quad %s\n", asm_name("__wine_spec_file_name") );
+            if (exp_name)
+            {
+                output( "\t.quad .L%s_string\n", name );
+                count++;
+            }
+            else output( "\t.quad %u\n", odp->ordinal );
+            break;
         default:
             assert(0);
         }
diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c
index bae2b47..9252ee8 100644
--- a/tools/winebuild/parser.c
+++ b/tools/winebuild/parser.c
@@ -403,9 +403,9 @@ static int parse_spec_stub( ORDDEF *odp, DLLSPEC *spec )
     odp->link_name = xstrdup("");
     /* don't bother generating stubs for Winelib */
     if (odp->flags & FLAG_CPU_MASK)
-        odp->flags &= FLAG_CPU(CPU_x86) | FLAG_CPU(CPU_x86_64) | FLAG_CPU(CPU_ARM);
+        odp->flags &= FLAG_CPU(CPU_x86) | FLAG_CPU(CPU_x86_64) | FLAG_CPU(CPU_ARM) | FLAG_CPU(CPU_ARM64);
     else
-        odp->flags |= FLAG_CPU(CPU_x86) | FLAG_CPU(CPU_x86_64) | FLAG_CPU(CPU_ARM);
+        odp->flags |= FLAG_CPU(CPU_x86) | FLAG_CPU(CPU_x86_64) | FLAG_CPU(CPU_ARM) | FLAG_CPU(CPU_ARM64);
 
     return parse_spec_arguments( odp, spec, 1 );
 }




More information about the wine-cvs mailing list