73d3b00
--- /homes/awjb/BUILD/WindowMaker-0.92.0/configure.ac	2005-01-06 16:31:40.000000000 +0100
73d3b00
+++ configure.ac	2005-08-22 21:07:57.000000000 +0200
73d3b00
@@ -197,7 +197,7 @@
73d3b00
 
73d3b00
     AC_CACHE_CHECK(whether gcc supports x86 inline asm,
73d3b00
                    ac_cv_c_inline_asm,
73d3b00
-                   [AC_TRY_LINK(,[{int x; asm volatile("movl %%eax, %%ebx\n"::
73d3b00
+                   [AC_TRY_LINK(,[{int x; asm volatile("movl %%eax, %%ebx\n\t pushal\n\t popal"::
73d3b00
                           "m" (x),"m" (x),"m" (x),"m" (x),"m" (x),"m" (x),
73d3b00
                           "m" (x),"m" (x),"m" (x),"m" (x),"m" (x),"m" (x));}],
73d3b00
                    ac_cv_c_inline_asm=yes,
73d3b00
@@ -831,7 +831,9 @@
73d3b00
 AC_ARG_WITH(appspath,
73d3b00
 [  --with-gnustepdir=PATH  specify the directory for GNUstep applications])
73d3b00
 
73d3b00
-appspath=$with_gnustepdir
73d3b00
+if test "x`echo $with_gnustepdir | grep ^/`" != "x"; then
73d3b00
+    appspath=$with_gnustepdir
73d3b00
+fi
73d3b00
 
73d3b00
 if test "x$appspath$GNUSTEP_LOCAL_ROOT" = "x"; then
73d3b00
     wprefs_base_dir=${prefix}
73d3b00
--- /homes/awjb/BUILD/WindowMaker-0.92.0/wrlib/x86_specific.c	2004-10-31 02:44:01.000000000 +0100
73d3b00
+++ wrlib/x86_specific.c	2005-08-22 21:07:57.000000000 +0200
73d3b00
@@ -98,15 +98,23 @@
73d3b00
                            int height,
73d3b00
                            int line_offset)
73d3b00
 {
73d3b00
-    long long rrggbbaa;
73d3b00
-    long long pixel;
73d3b00
+    union {
73d3b00
+	long long rrggbbaa;
73d3b00
+	struct {short int rr, gg, bb, aa;} words;
73d3b00
+    } rrggbbaa;
73d3b00
+    
73d3b00
+    union {
73d3b00
+	long long pixel;
73d3b00
+	struct {short int rr, gg, bb, aa;} words;
73d3b00
+    } pixel;
73d3b00
+
73d3b00
     short *tmp_err;
73d3b00
     short *tmp_nerr;
73d3b00
     int x;
73d3b00
 
73d3b00
     asm volatile
73d3b00
         (
73d3b00
-         "pushal                        \n\t"
73d3b00
+         "pushl %%ebx                        \n\t"
73d3b00
 
73d3b00
          // pack dr, dg and db into mm6
73d3b00
          "movl  %7, %%eax               \n\t"
73d3b00
@@ -290,7 +298,7 @@
73d3b00
 
73d3b00
 ".Enda:                                 \n\t" // THE END
73d3b00
          "emms                          \n\t"
73d3b00
-         "popal                         \n\t"
73d3b00
+         "popl %%ebx                         \n\t"
73d3b00
          :
73d3b00
          :
73d3b00
          "m" (image),                      // %0
73d3b00
@@ -309,17 +317,18 @@
73d3b00
          "m" (width),                      // %13
73d3b00
          "m" (height),                     // %14
73d3b00
          "m" (line_offset),                // %15
73d3b00
-         "m" (rrggbbaa),                   // %16 (access to rr)
73d3b00
-         "m" ((*((short*)(&rrggbbaa)+1))), // %17 (access to gg)
73d3b00
-         "m" ((*((short*)(&rrggbbaa)+2))), // %18 (access to bb)
73d3b00
-         "m" ((*((short*)(&rrggbbaa)+3))), // %19 (access to aa)
73d3b00
-         "m" (pixel),                      // %20 (access to pixel.r)
73d3b00
-         "m" ((*((short*)(&pixel)+1))),    // %21 (access to pixel.g)
73d3b00
-         "m" ((*((short*)(&pixel)+2))),    // %22 (access to pixel.b)
73d3b00
-         "m" ((*((short*)(&pixel)+3))),    // %23 (access to pixel.a)
73d3b00
+         "m" (rrggbbaa.rrggbbaa),          // %16 (access to rr)
73d3b00
+         "m" (rrggbbaa.words.gg),          // %17 (access to gg)
73d3b00
+         "m" (rrggbbaa.words.bb),          // %18 (access to bb)
73d3b00
+         "m" (rrggbbaa.words.aa),          // %19 (access to aa)
73d3b00
+         "m" (pixel.pixel),                // %20 (access to pixel.r)
73d3b00
+         "m" (pixel.words.gg),             // %21 (access to pixel.g)
73d3b00
+         "m" (pixel.words.bb),             // %22 (access to pixel.b)
73d3b00
+         "m" (pixel.words.aa),             // %23 (access to pixel.a)
73d3b00
          "m" (tmp_err),                    // %24
73d3b00
          "m" (tmp_nerr),                   // %25
73d3b00
          "m" (x)                           // %26
73d3b00
+	 : "eax", "ecx", "edx", "esi", "edi"
73d3b00
         );
73d3b00
 }
73d3b00
 
73d3b00
@@ -342,8 +351,15 @@
73d3b00
                            int height,
73d3b00
                            int line_offset)
73d3b00
 {
73d3b00
-    long long rrggbbaa;
73d3b00
-    long long pixel;
73d3b00
+    union {
73d3b00
+	long long rrggbbaa;
73d3b00
+	struct {short int rr, gg, bb, aa;} words;
73d3b00
+    } rrggbbaa;
73d3b00
+    
73d3b00
+    union {
73d3b00
+	long long pixel;
73d3b00
+	struct {short int rr, gg, bb, aa;} words;
73d3b00
+    } pixel;
73d3b00
 
73d3b00
     short *tmp_err;
73d3b00
     short *tmp_nerr;
73d3b00
@@ -354,7 +370,7 @@
73d3b00
 
73d3b00
     asm volatile
73d3b00
         (
73d3b00
-         "pushal                        \n\t"
73d3b00
+         "pushl %%ebx                        \n\t"
73d3b00
 
73d3b00
          "movl %13, %%eax               \n\t" // eax = width
73d3b00
          "movl %%eax, %%ebx             \n\t"
73d3b00
@@ -424,7 +440,7 @@
73d3b00
 
73d3b00
 ".Endc:                                 \n\t" // THE END
73d3b00
          "emms                          \n\t"
73d3b00
-         "popal                         \n\t"
73d3b00
+         "popl %%ebx                         \n\t"
73d3b00
          :
73d3b00
          :
73d3b00
          "m" (image),                      // %0
73d3b00
@@ -443,19 +459,20 @@
73d3b00
          "m" (width),                      // %13
73d3b00
          "m" (height),                     // %14
73d3b00
          "m" (line_offset),                // %15
73d3b00
-         "m" (rrggbbaa),                   // %16 (access to rr)
73d3b00
-         "m" ((*((short*)(&rrggbbaa)+1))), // %17 (access to gg)
73d3b00
-         "m" ((*((short*)(&rrggbbaa)+2))), // %18 (access to bb)
73d3b00
-         "m" ((*((short*)(&rrggbbaa)+3))), // %19 (access to aa)
73d3b00
-         "m" (pixel),                      // %20 (access to pixel.r)
73d3b00
-         "m" ((*((short*)(&pixel)+1))),    // %21 (access to pixel.g)
73d3b00
-         "m" ((*((short*)(&pixel)+2))),    // %22 (access to pixel.b)
73d3b00
-         "m" ((*((short*)(&pixel)+3))),    // %23 (access to pixel.a)
73d3b00
+         "m" (rrggbbaa.rrggbbaa),          // %16 (access to rr)
73d3b00
+         "m" (rrggbbaa.words.gg),          // %17 (access to gg)
73d3b00
+         "m" (rrggbbaa.words.bb),          // %18 (access to bb)
73d3b00
+         "m" (rrggbbaa.words.aa),          // %19 (access to aa)
73d3b00
+         "m" (pixel.pixel),                // %20 (access to pixel.r)
73d3b00
+         "m" (pixel.words.gg),             // %21 (access to pixel.g)
73d3b00
+         "m" (pixel.words.bb),             // %22 (access to pixel.b)
73d3b00
+         "m" (pixel.words.aa),             // %23 (access to pixel.a)
73d3b00
          "m" (tmp_err),                    // %24
73d3b00
          "m" (tmp_nerr),                   // %25
73d3b00
          "m" (x),                          // %26
73d3b00
          "m" (w1),                         // %27
73d3b00
          "m" (w2)                          // %28
73d3b00
+	  : "eax", "ecx", "edx", "esi", "edi"
73d3b00
         );
73d3b00
 }
73d3b00