mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 17:50:36 +00:00
gst/: Convert asm source into inline assembly.
Original commit message from CVS: * gst/Makefile.am: * gst/gstcpu.c: (gst_cpuid_i386): Convert asm source into inline assembly. * gst/gstcpuid_i386.s: remove
This commit is contained in:
parent
3803e830d3
commit
26d7745271
5 changed files with 27 additions and 46 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2004-04-13 David Schleef <ds@schleef.org>
|
||||||
|
|
||||||
|
* gst/Makefile.am:
|
||||||
|
* gst/gstcpu.c: (gst_cpuid_i386): Convert asm source into inline
|
||||||
|
assembly.
|
||||||
|
* gst/gstcpuid_i386.s: remove
|
||||||
|
|
||||||
2004-04-13 David Schleef <ds@schleef.org>
|
2004-04-13 David Schleef <ds@schleef.org>
|
||||||
|
|
||||||
* docs/gst/tmpl/gstaggregator.sgml: Random checkin because gtk-doc
|
* docs/gst/tmpl/gstaggregator.sgml: Random checkin because gtk-doc
|
||||||
|
|
2
common
2
common
|
@ -1 +1 @@
|
||||||
Subproject commit dfbe01076ca09686d37a2816a7c884c5adedb7af
|
Subproject commit c4fb9e5b7bc69f9420a0f008230e3028fdc2b097
|
|
@ -6,12 +6,6 @@ else
|
||||||
noinst_LTLIBRARIES = libcothreads.la
|
noinst_LTLIBRARIES = libcothreads.la
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if HAVE_CPU_I386
|
|
||||||
GSTARCH_SRCS = gstcpuid_i386.s
|
|
||||||
else
|
|
||||||
GSTARCH_SRCS =
|
|
||||||
endif
|
|
||||||
|
|
||||||
#GST_INSTRUMENT_FLAGS = -finstrument-functions -DGST_ENABLE_FUNC_INSTRUMENTATION
|
#GST_INSTRUMENT_FLAGS = -finstrument-functions -DGST_ENABLE_FUNC_INSTRUMENTATION
|
||||||
|
|
||||||
if GST_DISABLE_LOADSAVE
|
if GST_DISABLE_LOADSAVE
|
||||||
|
@ -83,7 +77,7 @@ built_header_make = gstenumtypes.h gstmarshal.h
|
||||||
built_source_make = $(GST_ENUMTYPES_SRC) gstmarshal.c
|
built_source_make = $(GST_ENUMTYPES_SRC) gstmarshal.c
|
||||||
|
|
||||||
EXTRA_libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \
|
EXTRA_libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \
|
||||||
gstcpuid_i386.s gstmarshal.list gstxml.c gstparse.c gsttrace.c
|
gstmarshal.list gstxml.c gstparse.c gsttrace.c
|
||||||
|
|
||||||
libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \
|
libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \
|
||||||
gst.c \
|
gst.c \
|
||||||
|
|
20
gst/gstcpu.c
20
gst/gstcpu.c
|
@ -32,8 +32,6 @@ static guint32 _gst_cpu_flags = 0;
|
||||||
|
|
||||||
#ifdef HAVE_CPU_I386
|
#ifdef HAVE_CPU_I386
|
||||||
#define _gst_cpu_initialize_arch _gst_cpu_initialize_i386
|
#define _gst_cpu_initialize_arch _gst_cpu_initialize_i386
|
||||||
void gst_cpuid_i386 (int, unsigned long *, unsigned long *, unsigned long *,
|
|
||||||
unsigned long *);
|
|
||||||
gboolean _gst_cpu_initialize_i386 (gulong * flags, GString * featurelist);
|
gboolean _gst_cpu_initialize_i386 (gulong * flags, GString * featurelist);
|
||||||
#else
|
#else
|
||||||
#define _gst_cpu_initialize_arch _gst_cpu_initialize_none
|
#define _gst_cpu_initialize_arch _gst_cpu_initialize_none
|
||||||
|
@ -65,6 +63,24 @@ _gst_cpu_initialize_none (gulong * flags, GString * featurelist)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_CPU_I386
|
#ifdef HAVE_CPU_I386
|
||||||
|
static void
|
||||||
|
gst_cpuid_i386 (int x, unsigned long *eax, unsigned long *ebx,
|
||||||
|
unsigned long *ecx, unsigned long *edx)
|
||||||
|
{
|
||||||
|
unsigned long regs[4];
|
||||||
|
|
||||||
|
asm (" cpuid\n" " movl %%eax, %0\n" " movl %%ebx, %1\n" " movl %%ecx, %2\n" " movl %%edx, %3\n":"=o" (regs[0]),
|
||||||
|
"=o" (regs[1]),
|
||||||
|
"=o" (regs[2]), "=o" (regs[3])
|
||||||
|
: "a" (x)
|
||||||
|
: "ebx", "ecx", "edx");
|
||||||
|
|
||||||
|
*eax = regs[0];
|
||||||
|
*ebx = regs[1];
|
||||||
|
*ecx = regs[2];
|
||||||
|
*edx = regs[3];
|
||||||
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
_gst_cpu_initialize_i386 (gulong * flags, GString * featurelist)
|
_gst_cpu_initialize_i386 (gulong * flags, GString * featurelist)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
.text
|
|
||||||
.globl gst_cpuid_i386
|
|
||||||
.type gst_cpuid_i386,@function
|
|
||||||
gst_cpuid_i386:
|
|
||||||
pushl %ebp
|
|
||||||
movl %esp,%ebp
|
|
||||||
pushl %edi
|
|
||||||
pushl %ebx
|
|
||||||
pushl %ecx
|
|
||||||
pushl %edx
|
|
||||||
movl 8(%ebp),%eax
|
|
||||||
cpuid
|
|
||||||
movl 12(%ebp),%edi
|
|
||||||
test %edi,%edi
|
|
||||||
jz L1
|
|
||||||
movl %eax,(%edi)
|
|
||||||
L1: movl 16(%ebp),%edi
|
|
||||||
test %edi,%edi
|
|
||||||
jz L2
|
|
||||||
movl %ebx,(%edi)
|
|
||||||
L2: movl 20(%ebp),%edi
|
|
||||||
test %edi,%edi
|
|
||||||
jz L3
|
|
||||||
movl %ecx,(%edi)
|
|
||||||
L3: movl 24(%ebp),%edi
|
|
||||||
test %edi,%edi
|
|
||||||
jz L4
|
|
||||||
movl %edx,(%edi)
|
|
||||||
L4: popl %edx
|
|
||||||
popl %ecx
|
|
||||||
popl %ebx
|
|
||||||
popl %edi
|
|
||||||
movl %ebp,%esp
|
|
||||||
popl %ebp
|
|
||||||
ret
|
|
||||||
|
|
Loading…
Reference in a new issue