winebuild: improve ARM support a bit
Austin English
austinenglish at gmail.com
Sat Oct 31 01:03:55 CDT 2009
Not fully fleshed out, but without knowing ARM assembly, a bit hard to
do more...
--
-Austin
-------------- next part --------------
diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h
index b942934..65163f3 100644
--- a/tools/winebuild/build.h
+++ b/tools/winebuild/build.h
@@ -119,7 +119,7 @@ typedef struct
enum target_cpu
{
- CPU_x86, CPU_x86_64, CPU_SPARC, CPU_ALPHA, CPU_POWERPC
+ CPU_x86, CPU_x86_64, CPU_SPARC, CPU_ALPHA, CPU_POWERPC, CPU_ARM
};
enum target_platform
diff --git a/tools/winebuild/main.c b/tools/winebuild/main.c
index 4dfa63f..14c1689 100644
--- a/tools/winebuild/main.c
+++ b/tools/winebuild/main.c
@@ -58,6 +58,8 @@ enum target_cpu target_cpu = CPU_SPARC;
enum target_cpu target_cpu = CPU_ALPHA;
#elif defined(__powerpc__)
enum target_cpu target_cpu = CPU_POWERPC;
+#elif defined(__arm__)
+enum target_cpu target_cpu = CPU_ARM;
#else
#error Unsupported CPU
#endif
diff --git a/tools/winebuild/spec32.c b/tools/winebuild/spec32.c
index 09e69f5..d2b5818 100644
--- a/tools/winebuild/spec32.c
+++ b/tools/winebuild/spec32.c
@@ -37,6 +37,7 @@
#define IMAGE_FILE_MACHINE_ALPHA 0x0184
#define IMAGE_FILE_MACHINE_POWERPC 0x01f0
#define IMAGE_FILE_MACHINE_AMD64 0x8664
+#define IMAGE_FILE_MACHINE_ARM 0x01C0
#define IMAGE_SIZEOF_NT_OPTIONAL32_HEADER 224
#define IMAGE_SIZEOF_NT_OPTIONAL64_HEADER 240
@@ -437,6 +438,7 @@ void output_module( DLLSPEC *spec )
case CPU_POWERPC: machine = IMAGE_FILE_MACHINE_POWERPC; break;
case CPU_ALPHA: machine = IMAGE_FILE_MACHINE_ALPHA; break;
case CPU_SPARC: machine = IMAGE_FILE_MACHINE_UNKNOWN; break;
+ case CPU_ARM: machine = IMAGE_FILE_MACHINE_ARM; break;
}
output( "\t%s 0x%04x\n", /* Machine */
get_asm_short_keyword(), machine );
@@ -623,6 +625,7 @@ void output_fake_module( DLLSPEC *spec )
case CPU_POWERPC: put_word( IMAGE_FILE_MACHINE_POWERPC ); break;
case CPU_ALPHA: put_word( IMAGE_FILE_MACHINE_ALPHA ); break;
case CPU_SPARC: put_word( IMAGE_FILE_MACHINE_UNKNOWN ); break;
+ case CPU_ARM: put_word( IMAGE_FILE_MACHINE_ARM ); break;
}
put_word( nb_sections ); /* NumberOfSections */
put_dword( 0 ); /* TimeDateStamp */
diff --git a/tools/winebuild/utils.c b/tools/winebuild/utils.c
index bbf23f4..a4b1154 100644
--- a/tools/winebuild/utils.c
+++ b/tools/winebuild/utils.c
@@ -57,7 +57,8 @@ static const struct
{ "x86_64", CPU_x86_64 },
{ "sparc", CPU_SPARC },
{ "alpha", CPU_ALPHA },
- { "powerpc", CPU_POWERPC }
+ { "powerpc", CPU_POWERPC },
+ { "arm", CPU_ARM }
};
/* atexit handler to clean tmp files */
@@ -795,6 +796,7 @@ unsigned int get_alignment(unsigned int align)
case CPU_x86:
case CPU_x86_64:
case CPU_SPARC:
+ case CPU_ARM:
if (target_platform != PLATFORM_APPLE) return align;
/* fall through */
case CPU_POWERPC:
@@ -816,6 +818,7 @@ unsigned int get_page_size(void)
case CPU_x86: return 4096;
case CPU_x86_64: return 4096;
case CPU_POWERPC: return 4096;
+ case CPU_ARM: return 4096;
case CPU_SPARC: return 8192;
case CPU_ALPHA: return 8192;
}
@@ -833,6 +836,7 @@ unsigned int get_ptr_size(void)
case CPU_POWERPC:
case CPU_SPARC:
case CPU_ALPHA:
+ case CPU_ARM:
return 4;
case CPU_x86_64:
return 8;
More information about the wine-patches
mailing list