~ubuntu-branches/ubuntu/saucy/gst-libav1.0/saucy-proposed

« back to all changes in this revision

Viewing changes to gst-libs/ext/libav/libavutil/x86/cpuid.asm

  • Committer: Package Import Robot
  • Author(s): Sebastian Dröge
  • Date: 2013-07-30 09:00:15 UTC
  • mfrom: (1.1.16) (7.1.7 experimental)
  • Revision ID: package-import@ubuntu.com-20130730090015-sc1ou2yssu7q5w4e
Tags: 1.1.3-1
* New upstream development snapshot:
  + debian/control:
    - Build depend on GStreamer and gst-plugins-base >= 1.1.3.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
;*****************************************************************************
 
2
;* Copyright (C) 2005-2010 x264 project
 
3
;*
 
4
;* Authors: Loren Merritt <lorenm@u.washington.edu>
 
5
;*          Jason Garrett-Glaser <darkshikari@gmail.com>
 
6
;*
 
7
;* This file is part of Libav.
 
8
;*
 
9
;* Libav is free software; you can redistribute it and/or
 
10
;* modify it under the terms of the GNU Lesser General Public
 
11
;* License as published by the Free Software Foundation; either
 
12
;* version 2.1 of the License, or (at your option) any later version.
 
13
;*
 
14
;* Libav is distributed in the hope that it will be useful,
 
15
;* but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
17
;* Lesser General Public License for more details.
 
18
;*
 
19
;* You should have received a copy of the GNU Lesser General Public
 
20
;* License along with Libav; if not, write to the Free Software
 
21
;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
22
;******************************************************************************
 
23
 
 
24
%include "x86util.asm"
 
25
 
 
26
SECTION .text
 
27
 
 
28
;-----------------------------------------------------------------------------
 
29
; void ff_cpu_cpuid(int index, int *eax, int *ebx, int *ecx, int *edx)
 
30
;-----------------------------------------------------------------------------
 
31
cglobal cpu_cpuid, 5,7
 
32
    push rbx
 
33
    push  r4
 
34
    push  r3
 
35
    push  r2
 
36
    push  r1
 
37
    mov  eax, r0d
 
38
    xor  ecx, ecx
 
39
    cpuid
 
40
    pop   r4
 
41
    mov [r4], eax
 
42
    pop   r4
 
43
    mov [r4], ebx
 
44
    pop   r4
 
45
    mov [r4], ecx
 
46
    pop   r4
 
47
    mov [r4], edx
 
48
    pop  rbx
 
49
    RET
 
50
 
 
51
;-----------------------------------------------------------------------------
 
52
; void ff_cpu_xgetbv(int op, int *eax, int *edx)
 
53
;-----------------------------------------------------------------------------
 
54
cglobal cpu_xgetbv, 3,7
 
55
    push  r2
 
56
    push  r1
 
57
    mov  ecx, r0d
 
58
    xgetbv
 
59
    pop   r4
 
60
    mov [r4], eax
 
61
    pop   r4
 
62
    mov [r4], edx
 
63
    RET
 
64
 
 
65
%if ARCH_X86_64 == 0
 
66
;-----------------------------------------------------------------------------
 
67
; int ff_cpu_cpuid_test(void)
 
68
; return 0 if unsupported
 
69
;-----------------------------------------------------------------------------
 
70
cglobal cpu_cpuid_test
 
71
    pushfd
 
72
    push    ebx
 
73
    push    ebp
 
74
    push    esi
 
75
    push    edi
 
76
    pushfd
 
77
    pop     eax
 
78
    mov     ebx, eax
 
79
    xor     eax, 0x200000
 
80
    push    eax
 
81
    popfd
 
82
    pushfd
 
83
    pop     eax
 
84
    xor     eax, ebx
 
85
    pop     edi
 
86
    pop     esi
 
87
    pop     ebp
 
88
    pop     ebx
 
89
    popfd
 
90
    ret
 
91
%endif