aboutsummaryrefslogtreecommitdiffstats
path: root/x11-wm
diff options
context:
space:
mode:
authordougb <dougb@FreeBSD.org>2006-12-18 16:02:54 +0800
committerdougb <dougb@FreeBSD.org>2006-12-18 16:02:54 +0800
commitc48bafa47e4d4561e65f7e1be48c60d83b578e59 (patch)
tree6c29542be7c0a98e230457103d665d8128fcd4af /x11-wm
parentb93ae58e8c1d0d91631d418ae09984eb2d9a74d7 (diff)
downloadfreebsd-ports-gnome-c48bafa47e4d4561e65f7e1be48c60d83b578e59.tar.gz
freebsd-ports-gnome-c48bafa47e4d4561e65f7e1be48c60d83b578e59.tar.zst
freebsd-ports-gnome-c48bafa47e4d4561e65f7e1be48c60d83b578e59.zip
Fix build with gcc 4.1
Obtained from: Gentoo
Diffstat (limited to 'x11-wm')
-rw-r--r--x11-wm/windowmaker/files/patch-wrlib_x86_specific.c130
1 files changed, 130 insertions, 0 deletions
diff --git a/x11-wm/windowmaker/files/patch-wrlib_x86_specific.c b/x11-wm/windowmaker/files/patch-wrlib_x86_specific.c
new file mode 100644
index 000000000000..3b521b7c3a58
--- /dev/null
+++ b/x11-wm/windowmaker/files/patch-wrlib_x86_specific.c
@@ -0,0 +1,130 @@
+--- wrlib/x86_specific.c 2004-10-31 02:44:01.000000000 +0100
++++ wrlib/x86_specific.c 2005-08-22 21:07:57.000000000 +0200
+@@ -98,15 +98,23 @@
+ int height,
+ int line_offset)
+ {
+- long long rrggbbaa;
+- long long pixel;
++ union {
++ long long rrggbbaa;
++ struct {short int rr, gg, bb, aa;} words;
++ } rrggbbaa;
++
++ union {
++ long long pixel;
++ struct {short int rr, gg, bb, aa;} words;
++ } pixel;
++
+ short *tmp_err;
+ short *tmp_nerr;
+ int x;
+
+ asm volatile
+ (
+- "pushal \n\t"
++ "pushl %%ebx \n\t"
+
+ // pack dr, dg and db into mm6
+ "movl %7, %%eax \n\t"
+@@ -290,7 +298,7 @@
+
+ ".Enda: \n\t" // THE END
+ "emms \n\t"
+- "popal \n\t"
++ "popl %%ebx \n\t"
+ :
+ :
+ "m" (image), // %0
+@@ -309,17 +317,18 @@
+ "m" (width), // %13
+ "m" (height), // %14
+ "m" (line_offset), // %15
+- "m" (rrggbbaa), // %16 (access to rr)
+- "m" ((*((short*)(&rrggbbaa)+1))), // %17 (access to gg)
+- "m" ((*((short*)(&rrggbbaa)+2))), // %18 (access to bb)
+- "m" ((*((short*)(&rrggbbaa)+3))), // %19 (access to aa)
+- "m" (pixel), // %20 (access to pixel.r)
+- "m" ((*((short*)(&pixel)+1))), // %21 (access to pixel.g)
+- "m" ((*((short*)(&pixel)+2))), // %22 (access to pixel.b)
+- "m" ((*((short*)(&pixel)+3))), // %23 (access to pixel.a)
++ "m" (rrggbbaa.rrggbbaa), // %16 (access to rr)
++ "m" (rrggbbaa.words.gg), // %17 (access to gg)
++ "m" (rrggbbaa.words.bb), // %18 (access to bb)
++ "m" (rrggbbaa.words.aa), // %19 (access to aa)
++ "m" (pixel.pixel), // %20 (access to pixel.r)
++ "m" (pixel.words.gg), // %21 (access to pixel.g)
++ "m" (pixel.words.bb), // %22 (access to pixel.b)
++ "m" (pixel.words.aa), // %23 (access to pixel.a)
+ "m" (tmp_err), // %24
+ "m" (tmp_nerr), // %25
+ "m" (x) // %26
++ : "eax", "ecx", "edx", "esi", "edi"
+ );
+ }
+
+@@ -342,8 +351,15 @@
+ int height,
+ int line_offset)
+ {
+- long long rrggbbaa;
+- long long pixel;
++ union {
++ long long rrggbbaa;
++ struct {short int rr, gg, bb, aa;} words;
++ } rrggbbaa;
++
++ union {
++ long long pixel;
++ struct {short int rr, gg, bb, aa;} words;
++ } pixel;
+
+ short *tmp_err;
+ short *tmp_nerr;
+@@ -354,7 +370,7 @@
+
+ asm volatile
+ (
+- "pushal \n\t"
++ "pushl %%ebx \n\t"
+
+ "movl %13, %%eax \n\t" // eax = width
+ "movl %%eax, %%ebx \n\t"
+@@ -424,7 +440,7 @@
+
+ ".Endc: \n\t" // THE END
+ "emms \n\t"
+- "popal \n\t"
++ "popl %%ebx \n\t"
+ :
+ :
+ "m" (image), // %0
+@@ -443,19 +459,20 @@
+ "m" (width), // %13
+ "m" (height), // %14
+ "m" (line_offset), // %15
+- "m" (rrggbbaa), // %16 (access to rr)
+- "m" ((*((short*)(&rrggbbaa)+1))), // %17 (access to gg)
+- "m" ((*((short*)(&rrggbbaa)+2))), // %18 (access to bb)
+- "m" ((*((short*)(&rrggbbaa)+3))), // %19 (access to aa)
+- "m" (pixel), // %20 (access to pixel.r)
+- "m" ((*((short*)(&pixel)+1))), // %21 (access to pixel.g)
+- "m" ((*((short*)(&pixel)+2))), // %22 (access to pixel.b)
+- "m" ((*((short*)(&pixel)+3))), // %23 (access to pixel.a)
++ "m" (rrggbbaa.rrggbbaa), // %16 (access to rr)
++ "m" (rrggbbaa.words.gg), // %17 (access to gg)
++ "m" (rrggbbaa.words.bb), // %18 (access to bb)
++ "m" (rrggbbaa.words.aa), // %19 (access to aa)
++ "m" (pixel.pixel), // %20 (access to pixel.r)
++ "m" (pixel.words.gg), // %21 (access to pixel.g)
++ "m" (pixel.words.bb), // %22 (access to pixel.b)
++ "m" (pixel.words.aa), // %23 (access to pixel.a)
+ "m" (tmp_err), // %24
+ "m" (tmp_nerr), // %25
+ "m" (x), // %26
+ "m" (w1), // %27
+ "m" (w2) // %28
++ : "eax", "ecx", "edx", "esi", "edi"
+ );
+ }
+