summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Kursawe <phosphan@gentoo.org>2004-04-20 07:06:06 +0000
committerPatrick Kursawe <phosphan@gentoo.org>2004-04-20 07:06:06 +0000
commit6979d23850f54471751788248ee31f3dd4d29ff3 (patch)
treedbaff571e3967d350de40d1bed35a4827ac8f4ea /media-video
parentFixed what was broken by the last fixes, moved .3 to stable, cleanup. (Manife... (diff)
downloadgentoo-2-6979d23850f54471751788248ee31f3dd4d29ff3.tar.gz
gentoo-2-6979d23850f54471751788248ee31f3dd4d29ff3.tar.bz2
gentoo-2-6979d23850f54471751788248ee31f3dd4d29ff3.zip
Now should work for amd64, see bug #48145
Diffstat (limited to 'media-video')
-rw-r--r--media-video/camstream/ChangeLog6
-rw-r--r--media-video/camstream/camstream-0.26.3.ebuild14
-rw-r--r--media-video/camstream/files/x86_64-asm.patch374
3 files changed, 391 insertions, 3 deletions
diff --git a/media-video/camstream/ChangeLog b/media-video/camstream/ChangeLog
index e901336880ed..1c9c89e0fb82 100644
--- a/media-video/camstream/ChangeLog
+++ b/media-video/camstream/ChangeLog
@@ -1,6 +1,10 @@
# ChangeLog for media-video/camstream
# Copyright 2000-2004 Gentoo Technologies, Inc.; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/camstream/ChangeLog,v 1.9 2004/04/20 06:54:20 phosphan Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/camstream/ChangeLog,v 1.10 2004/04/20 07:06:06 phosphan Exp $
+
+ 20 Apr 2004; Patrick Kursawe <phosphan@gentoo.org> camstream-0.26.3.ebuild,
+ files/x86_64-asm.patch:
+ Now should work for amd64, see bug #48145
20 Apr 2004; Patrick Kursawe <phosphan@gentoo.org> camstream-0.26.2.ebuild,
camstream-0.26.3.ebuild:
diff --git a/media-video/camstream/camstream-0.26.3.ebuild b/media-video/camstream/camstream-0.26.3.ebuild
index adfe453ea7e7..306c942d1d22 100644
--- a/media-video/camstream/camstream-0.26.3.ebuild
+++ b/media-video/camstream/camstream-0.26.3.ebuild
@@ -1,17 +1,27 @@
# Copyright 1999-2004 Gentoo Technologies, Inc.
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-video/camstream/camstream-0.26.3.ebuild,v 1.3 2004/04/20 06:54:20 phosphan Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-video/camstream/camstream-0.26.3.ebuild,v 1.4 2004/04/20 07:06:06 phosphan Exp $
+
+inherit eutils gnuconfig
DESCRIPTION="Collection of tools for webcams and other video devices"
HOMEPAGE="http://www.smcc.demon.nl/camstream/"
SRC_URI="http://www.smcc.demon.nl/camstream/download/${P}.tar.gz"
LICENSE="GPL-2"
-KEYWORDS="x86"
+KEYWORDS="x86 ~amd64"
SLOT="0"
IUSE="doc"
DEPEND=">=x11-libs/qt-3"
+src_unpack () {
+ unpack ${A}
+ cd ${S}
+ use amd64 && gnuconfig_update
+ # Camstream has 32 bit asssembler normally.
+ use amd64 && epatch ${FILESDIR}/x86_64-asm.patch
+}
+
src_compile () {
# Need to fake out Qt or we'll get sandbox problems
REALHOME="$HOME"
diff --git a/media-video/camstream/files/x86_64-asm.patch b/media-video/camstream/files/x86_64-asm.patch
new file mode 100644
index 000000000000..9e633b85c5ff
--- /dev/null
+++ b/media-video/camstream/files/x86_64-asm.patch
@@ -0,0 +1,374 @@
+--- ./camstream/video/video_asm.S.old 2004-04-17 18:22:08.977932552 +0100
++++ ./camstream/video/video_asm.S 2004-04-17 18:23:37.614457752 +0100
+@@ -17,52 +17,52 @@
+
+ ENTRY(calc_diff128)
+ enter $0, $0
+- push %ebx
+- push %esi
+- push %edi
+-
+- mov Number, %ecx # number of pixels
+- mov Dst, %edi # destination
+- mov Src1, %esi # src_new
+- mov Src2, %ebx # src_old
++ push %rbx
++ push %rsi
++ push %rdi
++
++ mov Number, %rcx # number of pixels
++ mov Dst, %rdi # destination
++ mov Src1, %rsi # src_new
++ mov Src2, %rbx # src_old
+
+ 0: lodsb # load byte
+- mov (%ebx), %ah # load second byte
++ mov (%rbx), %ah # load second byte
+ shr $1, %al # /2 by shift-right both values
+ shr $1, %ah
+ sub %ah, %al # substract old value
+ add $128, %al # add virtual 0-point
+ stosb
+- inc %ebx
++ inc %rbx
+ loop 0b
+
+-9: pop %edi
+- pop %esi
+- pop %ebx
++9: pop %rdi
++ pop %rsi
++ pop %rbx
+ leave
+ ret
+
+
+ ENTRY(calc_diff128_mmx)
+ enter $0, $0
+- push %ebx
+- push %esi
+- push %edi
+-
+- mov Number, %ecx # number of pixels
+- mov Dst, %edi # destination
+- mov Src1, %esi # src_new
+- mov Src2, %ebx # src_old
++ push %rbx
++ push %rsi
++ push %rdi
++
++ mov Number, %rcx # number of pixels
++ mov Dst, %rdi # destination
++ mov Src1, %rsi # src_new
++ mov Src2, %rbx # src_old
+
+- shr $2, %ecx # MMX uses 4 bytes in a row; too bad MMX
++ shr $2, %rcx # MMX uses 4 bytes in a row; too bad MMX
+ # doesnt have carry-bits or shift-right byte,
+ # or we could have grabbed 8 bytes in a row
+ movq mm_128w, %mm7
+
+-0: movd (%esi), %mm0 # 00 00 00 00 b3 b2 b1 b0
++0: movd (%rsi), %mm0 # 00 00 00 00 b3 b2 b1 b0
+ punpcklbw mm_0, %mm0 # 00 b3 00 b2 00 b1 00 b0
+
+- movd (%ebx), %mm1 # 00 00 00 00 c3 c2 c1 c0
++ movd (%rbx), %mm1 # 00 00 00 00 c3 c2 c1 c0
+ punpcklbw mm_0, %mm1 # 00 c3 00 c2 00 c1 00 c0
+
+ psraw $1, %mm0 # shift, then substract; this eliminates a
+@@ -71,17 +71,17 @@
+ psubw %mm1, %mm0 # subtract
+ paddw %mm7, %mm0 # add virtual 0-point
+ packuswb mm_0, %mm0 # pack, unsigned saturation 00 00 00 00 d3 d2 d1 d0
+- movd %mm0, (%edi) # store
++ movd %mm0, (%rdi) # store
+
+- add $4, %ebx
+- add $4, %esi
+- add $4, %edi
++ add $4, %rbx
++ add $4, %rsi
++ add $4, %rdi
+ loop 0b
+
+ 9: emms # empty MMX state
+- pop %edi
+- pop %esi
+- pop %ebx
++ pop %rdi
++ pop %rsi
++ pop %rbx
+ leave
+ ret
+
+@@ -89,24 +89,24 @@
+ # calc_intg: perform Integrator step, that is, add a buffer to another
+ ENTRY(calc_intg128)
+ enter $0, $0
+- push %ebx
+- push %esi
+- push %edi
+-
+- mov 8(%ebp), %ecx # number of pixels
+- mov 12(%ebp), %edi # destination
+- mov 16(%ebp), %esi # 2nd buffer
++ push %rbx
++ push %rsi
++ push %rdi
++
++ mov 8(%rbp), %rcx # number of pixels
++ mov 12(%rbp), %rdi # destination
++ mov 16(%rbp), %rsi # 2nd buffer
+
+ 0: lodsb
+ sub $128, %al # s - 128
+ shl $1, %al # *2
+- add %al, (%edi) # add to destination
+- inc %edi
++ add %al, (%rdi) # add to destination
++ inc %rdi
+ loop 0b
+
+-9: pop %edi
+- pop %esi
+- pop %ebx
++9: pop %rdi
++ pop %rsi
++ pop %rbx
+ leave
+ ret
+
+@@ -116,36 +116,36 @@
+ # Perform Integrator step with MMX instructions
+ ENTRY(calc_intg128_smx)
+ enter $0, $0
+- push %ebx
+- push %esi
+- push %edi
+-
+- mov 8(%ebp), %ecx # number of pixels
+- mov 12(%ebp), %edi # destination
+- mov 16(%ebp), %esi # 2nd buffer
+- shr $2, %ecx # divide by 4 (again, we must use word operands)
++ push %rbx
++ push %rsi
++ push %rdi
++
++ mov 8(%rbp), %rcx # number of pixels
++ mov 12(%rbp), %rdi # destination
++ mov 16(%rbp), %rsi # 2nd buffer
++ shr $2, %rcx # divide by 4 (again, we must use word operands)
+
+ movq mm_128w, %mm7 # load constant
+
+ # The following instructions are hopefully mixed
+ # to optimize execution
+-0: movd (%edi), %mm0 # 00 00 00 00 b3 b2 b1 b0
++0: movd (%rdi), %mm0 # 00 00 00 00 b3 b2 b1 b0
+ punpcklbw mm_0, %mm0 # 00 b3 00 b2 00 b1 00 b0
+- movd (%esi), %mm1 # 00 00 00 00 c3 c2 c1 c0
++ movd (%rsi), %mm1 # 00 00 00 00 c3 c2 c1 c0
+ punpcklbw mm_0, %mm1 # 00 c3 00 c2 00 c1 00 c0
+- add $4, %esi # keep CPU busy
++ add $4, %rsi # keep CPU busy
+ psubw %mm7, %mm1 # src - 128
+ psllw $1, %mm1 # * 2
+ paddw %mm1, %mm0 # dst += src
+ packuswb mm_0, %mm0 # pack, unsigned saturation 00 00 00 00 d3 d2 d1 d0
+- movd %mm0, (%edi) # store back
+- add $4, %edi
++ movd %mm0, (%rdi) # store back
++ add $4, %rdi
+ loop 0b
+
+ 9: emms # clear MMX state
+- pop %edi
+- pop %esi
+- pop %ebx
++ pop %rdi
++ pop %rsi
++ pop %rbx
+ leave
+ ret
+
+--- ./camstream/video/video_asm_add.S.old 2004-04-17 18:22:17.121694512 +0100
++++ ./camstream/video/video_asm_add.S 2004-04-17 18:23:54.272925280 +0100
+@@ -4,102 +4,102 @@
+
+ ENTRY(calc_add)
+ enter $0, $0
+- push %ebx
+- push %esi
+- push %edi
+-
+- mov Number, %ecx
+- mov Dst, %edi
+- mov Src1, %esi
++ push %rbx
++ push %rsi
++ push %rdi
++
++ mov Number, %rcx
++ mov Dst, %rdi
++ mov Src1, %rsi
+
+ 0: lodsb
+- add %al, (%edi)
+- inc %edi
++ add %al, (%rdi)
++ inc %rdi
+ loop 0b
+
+-9: pop %edi
+- pop %esi
+- pop %ebx
++9: pop %rdi
++ pop %rsi
++ pop %rbx
+ leave
+ ret
+
+ ENTRY(calc_add_mmx)
+ enter $0, $0
+- push %ebx
+- push %esi
+- push %edi
+-
+- mov Number, %ecx
+- mov Dst, %edi
+- mov Src1, %esi
++ push %rbx
++ push %rsi
++ push %rdi
++
++ mov Number, %rcx
++ mov Dst, %rdi
++ mov Src1, %rsi
+
+- shr $3, %ecx # Divide by 8 (!)
++ shr $3, %rcx # Divide by 8 (!)
+
+-0: movq (%esi), %mm0
+- add $8, %esi
+- movq (%edi), %mm1
++0: movq (%rsi), %mm0
++ add $8, %rsi
++ movq (%rdi), %mm1
+ paddb %mm1, %mm0 # add, with overflow
+- movq %mm0, (%edi)
+- add $8, %edi
++ movq %mm0, (%rdi)
++ add $8, %rdi
+ loop 0
+
+-9: pop %edi
+- pop %esi
+- pop %ebx
++9: pop %rdi
++ pop %rsi
++ pop %rbx
+ leave
+ ret
+
+
+ ENTRY(calc_add_mmxs)
+ enter $0, $0
+- push %ebx
+- push %esi
+- push %edi
+-
+- mov Number, %ecx
+- mov Dst, %edi
+- mov Src1, %esi
++ push %rbx
++ push %rsi
++ push %rdi
++
++ mov Number, %rcx
++ mov Dst, %rdi
++ mov Src1, %rsi
+
+- shr $3, %ecx # Divide by 8 (!)
++ shr $3, %rcx # Divide by 8 (!)
+
+-0: movq (%esi), %mm0
+- add $8, %esi
+- movq (%edi), %mm1
++0: movq (%rsi), %mm0
++ add $8, %rsi
++ movq (%rdi), %mm1
+ paddsb %mm1, %mm0 # add, with saturation
+- movq %mm0, (%edi)
+- add $8, %edi
++ movq %mm0, (%rdi)
++ add $8, %rdi
+ loop 0
+
+-9: pop %edi
+- pop %esi
+- pop %ebx
++9: pop %rdi
++ pop %rsi
++ pop %rbx
+ leave
+ ret
+
+ ENTRY(calc_add128_mmx)
+ enter $0, $0
+- push %ebx
+- push %esi
+- push %edi
+-
+- mov Number, %ecx
+- mov Dst, %edi
+- mov Src1, %esi
++ push %rbx
++ push %rsi
++ push %rdi
++
++ mov Number, %rcx
++ mov Dst, %rdi
++ mov Src1, %rsi
+
+- shr $3, %ecx # Divide by 8 (!)
++ shr $3, %rcx # Divide by 8 (!)
+ movq mm_128b, %mm7 # load constant
+
+-0: movq (%esi), %mm0
+- add $8, %esi
++0: movq (%rsi), %mm0
++ add $8, %rsi
+ psubb %mm7, %mm0 # compensate null-point
+- movq (%edi), %mm1
++ movq (%rdi), %mm1
+ paddb %mm1, %mm0 # add, with overflow
+- movq %mm0, (%edi)
+- add $8, %edi
++ movq %mm0, (%rdi)
++ add $8, %rdi
+ loop 0
+
+-9: pop %edi
+- pop %esi
+- pop %ebx
++9: pop %rdi
++ pop %rsi
++ pop %rbx
+ leave
+ ret
+--- ./camstream/video/video_def.h.old 2004-04-17 18:22:25.357442488 +0100
++++ ./camstream/video/video_def.h 2004-04-17 18:24:14.037920544 +0100
+@@ -1,8 +1,8 @@
+ #define __ASSEMBLY__
+ #include <linux/linkage.h>
+
+-#define Number 8(%ebp)
+-#define Dst 12(%ebp)
+-#define Src1 16(%ebp)
+-#define Src2 20(%ebp)
++#define Number 8(%rbp)
++#define Dst 12(%rbp)
++#define Src1 16(%rbp)
++#define Src2 20(%rbp)
+