Module Name:    src
Committed By:   mrg
Date:           Wed Dec  1 08:59:13 UTC 2010

Modified Files:
        src/external/mit/xorg/lib/pixman: Makefile

Log Message:
dsable SSE2 support on amd64 for now.  GCC generates code that causes
alignment faults.  the code is:

0x00007f7ffd40ccd7 <_pixman_implementation_create_sse2+0>:      push   %rbp
0x00007f7ffd40ccd8 <_pixman_implementation_create_sse2+1>:      mov    %rsp,%rbp
0x00007f7ffd40ccdb <_pixman_implementation_create_sse2+4>:      sub    
$0x10,%rsp
...
0x00007f7ffd40cdab <_pixman_implementation_create_sse2+212>:    mov    
$0xffffffffffffffff,%rdx
0x00007f7ffd40cdb2 <_pixman_implementation_create_sse2+219>:    mov    
%rdx,0xfffffffffffffff0(%rbp)
0x00007f7ffd40cdb6 <_pixman_implementation_create_sse2+223>:    mov    
%rdx,0xfffffffffffffff8(%rbp)
0x00007f7ffd40cdba <_pixman_implementation_create_sse2+227>:    movdqa 
0xfffffffffffffff0(%rbp),%xmm0

upon entry we have stack aligned to 16 bytes.  the first instruction
subtracts 8, we copy this not-16-byte aligned value into %rbp, and
then decrement the stack by 16 bytes.

then we store a big -1 into 16 bytes on the stack, and then load it
into %xmm0.. except we load it from an unaligned pointer and GP.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/external/mit/xorg/lib/pixman/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/mit/xorg/lib/pixman/Makefile
diff -u src/external/mit/xorg/lib/pixman/Makefile:1.12 src/external/mit/xorg/lib/pixman/Makefile:1.13
--- src/external/mit/xorg/lib/pixman/Makefile:1.12	Sun Nov 21 09:01:35 2010
+++ src/external/mit/xorg/lib/pixman/Makefile	Wed Dec  1 08:59:12 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.12 2010/11/21 09:01:35 mrg Exp $
+#	$NetBSD: Makefile,v 1.13 2010/12/01 08:59:12 mrg Exp $
 
 NOLINT=	1	# defined
 
@@ -44,10 +44,10 @@
 MKDEPFLAGS+=		-mmmx -fvisibility=hidden
 .elif ${MACHINE_ARCH} == "x86_64"
 SRCS+=	pixman-mmx.c
-SRCS+=	pixman-sse2.c
+# XXX sse2 is broken with pixman 0.21.2; GCC generates unaligned accesses
+#SRCS+=	pixman-sse2.c
 COPTS.pixman-mmx.c=	-mmmx -fvisibility=hidden
-COPTS.pixman-sse2.c=	-msse2 -fvisibility=hidden
-MKDEPFLAGS+=		-mmmx -msse2 -fvisibility=hidden
+#COPTS.pixman-sse2.c=	-msse2 -fvisibility=hidden
 .endif
 
 # .if VMX

Reply via email to