Signed-off-by: André Hentschel <nerv(a)dawncrow.de>
---
dlls/webservices/tests/writer.c | 33 ++++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)
diff --git a/dlls/webservices/tests/writer.c b/dlls/webservices/tests/writer.c
index 79b60d1..9254be9 100644
--- a/dlls/webservices/tests/writer.c
+++ b/dlls/webservices/tests/writer.c
@@ -2203,28 +2203,35 @@ static void test_text_types(void)
WsFreeWriter( writer );
}
-static BOOL get_fpword( unsigned short *ret )
+static BOOL get_fpword( unsigned long *ret )
{
#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
- unsigned short fpword;
+ unsigned long fpword;
__asm__ __volatile__( "fstcw %0" : "=m" (fpword) );
+ *ret = fpword & 0xffff;
+ return TRUE;
+#elif defined(__arm__)
+ unsigned long fpword;
+ __asm__ __volatile__( "vmrs %0, fpscr" : "=r" (fpword) );
*ret = fpword;
return TRUE;
#endif
return FALSE;
}
-static void set_fpword( unsigned short fpword )
+static void set_fpword( unsigned long fpword )
{
#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
__asm__ __volatile__( "fldcw %0" : : "m" (fpword) );
+#elif defined(__arm__)
+ __asm__ __volatile__( "vmsr fpscr, %0" : : "r" (fpword) );
#endif
}
static void test_double(void)
{
WS_XML_STRING localname = {1, (BYTE *)"t"}, ns = {0, NULL};
- unsigned short fpword;
+ unsigned long fpword;
static const struct
{
double val;
@@ -2318,10 +2325,17 @@ static void test_double(void)
WsFreeWriter( writer );
return;
}
- ok( fpword == 0x27f, "got %04x\n", fpword );
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+ ok( fpword == 0x27f, "got %04lx\n", fpword );
set_fpword( 0x1f7f );
get_fpword( &fpword );
- ok( fpword == 0x1f7f, "got %04x\n", fpword );
+ ok( fpword == 0x1f7f, "got %04lx\n", fpword );
+#elif defined(__arm__)
+ ok( fpword == 0, "got %08lx\n", fpword );
+ set_fpword( 0x00c00000 );
+ get_fpword( &fpword );
+ ok( fpword == 0x00c00000, "got %08lx\n", fpword );
+#endif
hr = set_output( writer );
ok( hr == S_OK, "got %08x\n", hr );
@@ -2337,8 +2351,13 @@ static void test_double(void)
check_output( writer, "<t>100000000000000</t>", __LINE__ );
get_fpword( &fpword );
- ok( fpword == 0x1f7f, "got %04x\n", fpword );
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+ ok( fpword == 0x1f7f, "got %04lx\n", fpword );
set_fpword( 0x27f );
+#elif defined(__arm__)
+ ok( fpword == 0x00c00000, "got %08lx\n", fpword );
+ set_fpword( 0 );
+#endif
WsFreeWriter( writer );
}
--
2.7.4