Hello, this patch fixes two x86_64 problems in Xorg. These changes should probably be propagated upstream to Mesa and DRM (both lists are in Cc).
GAS choked on the DRM_CAS invocation in ffb_lock.h because __ret was declared as "int" and so it gets passed in %edx instead of %dl or %dh as required by the setnz instruction. I just wrapped the declaration with DRM_CAS_RESULT() as done elsewhere. I also noticed that the various copies of xf86drm.h are slightly out of sync. One copy used __AMD64__, which isn't a valid GCC predefine. So the slow version of DRM_CAS was being used on x86_64. Index: ./extras/drm/libdrm/xf86drm.h =================================================================== RCS file: /cvs/xorg/xc/extras/drm/libdrm/xf86drm.h,v retrieving revision 1.1.1.2 diff -u -p -r1.1.1.2 xf86drm.h --- ./extras/drm/libdrm/xf86drm.h 15 Jun 2005 18:31:52 -0000 1.1.1.2 +++ ./extras/drm/libdrm/xf86drm.h 8 Aug 2005 21:06:14 -0000 @@ -287,7 +287,7 @@ typedef struct _drmSetVersion { #define DRM_LOCK_CONT 0x40000000U /**< Hardware lock is contended */ #if defined(__GNUC__) && (__GNUC__ >= 2) -# if defined(__i386) || defined(__AMD64__) +# if defined(__i386) || defined(__amd64__) /* Reflect changes here to drmP.h */ #define DRM_CAS(lock,old,new,__ret) \ do { \ Index: extras/Mesa/src/mesa/drivers/dri/ffb/ffb_lock.h =================================================================== RCS file: /cvs/xorg/xc/extras/Mesa/src/mesa/drivers/dri/ffb/ffb_lock.h,v retrieving revision 1.1.1.1 diff -u -p -r1.1.1.1 ffb_lock.h --- extras/Mesa/src/mesa/drivers/dri/ffb/ffb_lock.h 16 Jun 2004 09:17:59 -0000 1.1.1.1 +++ extras/Mesa/src/mesa/drivers/dri/ffb/ffb_lock.h 8 Aug 2005 21:06:14 -0000 @@ -15,7 +15,7 @@ extern void ffbXMesaUpdateState(ffbConte #else #define LOCK_HARDWARE(fmesa) \ do { \ - int __ret=0; \ + DRM_CAS_RESULT(__ret); \ DRM_CAS(fmesa->driHwLock, fmesa->hHWContext, \ (DRM_LOCK_HELD | fmesa->hHWContext), __ret);\ if (__ret) { \ -- // Bernardo Innocenti - Develer S.r.l., R&D dept. \X/ http://www.develer.com/ ------------------------------------------------------- SF.Net email is Sponsored by the Better Software Conference & EXPO September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf -- _______________________________________________ Dri-devel mailing list Dri-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/dri-devel