diff -aur xf86-video-sis-0.9.1.pristine/src/sis.h xf86-video-sis-0.9.1.new/src/sis.h
--- xf86-video-sis-0.9.1.pristine/src/sis.h	2012-03-17 05:32:39.414261430 +1100
+++ xf86-video-sis-0.9.1.new/src/sis.h	2012-03-17 05:28:34.100467696 +1100
@@ -35,6 +35,10 @@
 #ifndef _SIS_H_
 #define _SIS_H_
 
+// XXX!!!
+#define _swapl(x, n) swapl(x)
+#define _swaps(x, n) swaps(x)
+
 #define SISDRIVERVERSIONYEAR    6
 #define SISDRIVERVERSIONMONTH   10
 #define SISDRIVERVERSIONDAY     17
diff -aur xf86-video-sis-0.9.1.pristine/src/sis_mergedfb.c xf86-video-sis-0.9.1.new/src/sis_mergedfb.c
--- xf86-video-sis-0.9.1.pristine/src/sis_mergedfb.c	2012-03-17 05:42:19.423231119 +1100
+++ xf86-video-sis-0.9.1.new/src/sis_mergedfb.c	2012-03-17 06:01:18.070840068 +1100
@@ -2472,10 +2472,10 @@
     rep.majorVersion = SIS_XINERAMA_MAJOR_VERSION;
     rep.minorVersion = SIS_XINERAMA_MINOR_VERSION;
     if(client->swapped) {
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swaps(&rep.majorVersion, n);
-       swaps(&rep.minorVersion, n);
+       _swaps(&rep.sequenceNumber, n);
+       _swapl(&rep.length, n);
+       _swaps(&rep.majorVersion, n);
+       _swaps(&rep.minorVersion, n);
     }
     WriteToClient(client, sizeof(xPanoramiXQueryVersionReply), (char *)&rep);
     return (client->noClientException);
@@ -2498,9 +2498,9 @@
     rep.sequenceNumber = client->sequence;
     rep.state = !SiSnoPanoramiXExtension;
     if(client->swapped) {
-       swaps (&rep.sequenceNumber, n);
-       swapl (&rep.length, n);
-       swaps (&rep.state, n);
+       _swaps (&rep.sequenceNumber, n);
+       _swapl (&rep.length, n);
+       //_swaps (&rep.state, n); // XXX???
     }
     WriteToClient(client, sizeof(xPanoramiXGetStateReply), (char *)&rep);
     return client->noClientException;
@@ -2523,9 +2523,9 @@
     rep.sequenceNumber = client->sequence;
     rep.ScreenCount = SiSXineramaNumScreens;
     if(client->swapped) {
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swaps(&rep.ScreenCount, n);
+       _swaps(&rep.sequenceNumber, n);
+       _swapl(&rep.length, n);
+       //_swaps(&rep.ScreenCount, n); // XXX???
     }
     WriteToClient(client, sizeof(xPanoramiXGetScreenCountReply), (char *)&rep);
     return client->noClientException;
@@ -2549,10 +2549,10 @@
     rep.width  = SiSXineramadataPtr[stuff->screen].width;
     rep.height = SiSXineramadataPtr[stuff->screen].height;
     if(client->swapped) {
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swaps(&rep.width, n);
-       swaps(&rep.height, n);
+       _swaps(&rep.sequenceNumber, n);
+       _swapl(&rep.length, n);
+       _swapl(&rep.width, n);
+       _swapl(&rep.height, n);
     }
     WriteToClient(client, sizeof(xPanoramiXGetScreenSizeReply), (char *)&rep);
     return client->noClientException;
@@ -2571,9 +2571,9 @@
     rep.state = !SiSnoPanoramiXExtension;
     if(client->swapped) {
        register int n;
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swapl(&rep.state, n);
+       _swaps(&rep.sequenceNumber, n);
+       _swapl(&rep.length, n);
+       _swapl(&rep.state, n);
     }
     WriteToClient(client, sizeof(xXineramaIsActiveReply), (char *) &rep);
     return client->noClientException;
@@ -2592,9 +2592,9 @@
     rep.length = rep.number * sz_XineramaScreenInfo >> 2;
     if(client->swapped) {
        register int n;
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swapl(&rep.number, n);
+       _swaps(&rep.sequenceNumber, n);
+       _swapl(&rep.length, n);
+       _swapl(&rep.number, n);
     }
     WriteToClient(client, sizeof(xXineramaQueryScreensReply), (char *)&rep);
 
@@ -2609,10 +2609,10 @@
 	  scratch.height = SiSXineramadataPtr[i].height;
 	  if(client->swapped) {
 	     register int n;
-	     swaps(&scratch.x_org, n);
-	     swaps(&scratch.y_org, n);
-	     swaps(&scratch.width, n);
-	     swaps(&scratch.height, n);
+	     _swaps(&scratch.x_org, n);
+	     _swaps(&scratch.y_org, n);
+	     _swaps(&scratch.width, n);
+	     _swaps(&scratch.height, n);
 	  }
 	  WriteToClient(client, sz_XineramaScreenInfo, (char *)&scratch);
        }
@@ -2763,7 +2763,7 @@
 {
     REQUEST(xPanoramiXQueryVersionReq);
     register int n;
-    swaps(&stuff->length,n);
+    _swaps(&stuff->length,n);
     REQUEST_SIZE_MATCH (xPanoramiXQueryVersionReq);
     return SiSProcXineramaQueryVersion(client);
 }
@@ -2773,7 +2773,7 @@
 {
     REQUEST(xPanoramiXGetStateReq);
     register int n;
-    swaps (&stuff->length, n);
+    _swaps (&stuff->length, n);
     REQUEST_SIZE_MATCH(xPanoramiXGetStateReq);
     return SiSProcXineramaGetState(client);
 }
@@ -2783,7 +2783,7 @@
 {
     REQUEST(xPanoramiXGetScreenCountReq);
     register int n;
-    swaps (&stuff->length, n);
+    _swaps (&stuff->length, n);
     REQUEST_SIZE_MATCH(xPanoramiXGetScreenCountReq);
     return SiSProcXineramaGetScreenCount(client);
 }
@@ -2793,7 +2793,7 @@
 {
     REQUEST(xPanoramiXGetScreenSizeReq);
     register int n;
-    swaps (&stuff->length, n);
+    _swaps (&stuff->length, n);
     REQUEST_SIZE_MATCH(xPanoramiXGetScreenSizeReq);
     return SiSProcXineramaGetScreenSize(client);
 }
@@ -2803,7 +2803,7 @@
 {
     REQUEST(xXineramaIsActiveReq);
     register int n;
-    swaps (&stuff->length, n);
+    _swaps (&stuff->length, n);
     REQUEST_SIZE_MATCH(xXineramaIsActiveReq);
     return SiSProcXineramaIsActive(client);
 }
@@ -2813,7 +2813,7 @@
 {
     REQUEST(xXineramaQueryScreensReq);
     register int n;
-    swaps (&stuff->length, n);
+    _swaps (&stuff->length, n);
     REQUEST_SIZE_MATCH(xXineramaQueryScreensReq);
     return SiSProcXineramaQueryScreens(client);
 }
@@ -2823,8 +2823,8 @@
 {
     REQUEST(xXineramaSelectInputReq);
     register int n;
-    swaps(&stuff->length, n);
-    swapl(&stuff->window, n);
+    _swaps(&stuff->length, n);
+    _swapl(&stuff->window, n);
     return SiSProcXineramaSelectInput(client);
 }
 
diff -aur xf86-video-sis-0.9.1.pristine/src/sis_utility.c xf86-video-sis-0.9.1.new/src/sis_utility.c
--- xf86-video-sis-0.9.1.pristine/src/sis_utility.c	2012-03-17 07:34:54.727700088 +1100
+++ xf86-video-sis-0.9.1.new/src/sis_utility.c	2012-03-17 08:06:48.570630477 +1100
@@ -2059,11 +2059,11 @@
     rep.sequenceNumber = client->sequence;
     rep.majorVersion = SISCTRL_MAJOR_VERSION;
     rep.minorVersion = SISCTRL_MINOR_VERSION;
-    if(client->swapped) {
-        swaps(&rep.sequenceNumber, n);
-        swapl(&rep.length, n);
-        swaps(&rep.majorVersion, n);
-        swaps(&rep.minorVersion, n);
+    if(client->swapped) {
+        _swaps(&rep.sequenceNumber, n);
+        _swapl(&rep.length, n);
+        _swaps(&rep.majorVersion, n);
+        _swaps(&rep.minorVersion, n);
     }
     WriteToClient(client, sizeof(xSiSCtrlQueryVersionReply), (char *)&rep);
     return (client->noClientException);
@@ -2103,16 +2103,16 @@
     rep.length = (sizeof(xSiSCtrlCommandReply) - sizeof(xGenericReply)) >> 2;
     rep.sequenceNumber = client->sequence;
 
-    if(client->swapped) {
-       swaps(&rep.sequenceNumber, n);
-       swapl(&rep.length, n);
-       swapl(&rep.screen, n);
-       swapl(&rep.sdc_id, n);
-       swapl(&rep.sdc_command, n);
-       swapl(&rep.sdc_result_header, n);
+    if(client->swapped) {
+       _swaps(&rep.sequenceNumber, n);
+       _swapl(&rep.length, n);
+       _swapl(&rep.screen, n);
+       _swapl(&rep.sdc_id, n);
+       _swapl(&rep.sdc_command, n);
+       _swapl(&rep.sdc_result_header, n);
        for(i = 0; i < SDC_NUM_PARM_RESULT; i++) {
-	  swapl(&rep.sdc_parm[i], n);
-	  swapl(&rep.sdc_result[i], n);
+	  _swapl(&rep.sdc_parm[i], n);
+	  _swapl(&rep.sdc_result[i], n);
        }
     }
     WriteToClient(client, sizeof(xSiSCtrlCommandReply), (char *)&rep);
@@ -2139,7 +2139,7 @@
 {
     REQUEST(xSiSCtrlQueryVersionReq);
     register int n;
-    swaps(&stuff->length, n);
+    _swaps(&stuff->length, n);
     REQUEST_SIZE_MATCH(xSiSCtrlQueryVersionReq);
     return SiSProcSiSCtrlQueryVersion(client);
 }
@@ -2150,14 +2150,14 @@
     REQUEST(xSiSCtrlCommandReq);
     register int n;
     int i;
-    swaps(&stuff->length, n);
-    swapl(&stuff->screen, n);
-    swapl(&stuff->sdc_id, n);
-    swapl(&stuff->sdc_command, n);
-    swapl(&stuff->sdc_result_header, n);
+    _swaps(&stuff->length, n);
+    _swapl(&stuff->screen, n);
+    _swapl(&stuff->sdc_id, n);
+    _swapl(&stuff->sdc_command, n);
+    _swapl(&stuff->sdc_result_header, n);
     for(i = 0; i < SDC_NUM_PARM_RESULT; i++) {
-       swapl(&stuff->sdc_parm[i], n);
-       swapl(&stuff->sdc_result[i], n);
+       _swapl(&stuff->sdc_parm[i], n);
+       _swapl(&stuff->sdc_result[i], n);
     }
     REQUEST_SIZE_MATCH(xSiSCtrlCommandReq);
     return SiSProcSiSCtrlCommand(client);
