Exported gnutls_cpuid() and gnutls_have_cpuid().
[gnutls:gnutls.git] / lib / accelerated / x86 / asm / cpuid-x86-64.s
1 #
2 # Copyright (C) 2011 Free Software Foundation, Inc.
3 #
4 # Author: Nikos Mavrogiannopoulos
5 #
6 # This file is part of GnuTLS.
7 #
8 # The GnuTLS is free software; you can redistribute it and/or
9 # modify it under the terms of the GNU Lesser General Public License
10 # as published by the Free Software Foundation; either version 3 of
11 # the License, or (at your option) any later version.
12 #
13 # This library is distributed in the hope that it will be useful, but
14 # WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 # Lesser General Public License for more details.
17 #
18 # You should have received a copy of the GNU Lesser General Public License
19 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 #
21 .text   
22 .globl  gnutls_cpuid
23 .type   gnutls_cpuid,@function
24 .align  16
25 gnutls_cpuid:
26         pushq   %rbp
27         movq    %rsp,%rbp
28         pushq   %rbx
29         movl    %edi,-12(%rbp)
30         movq    %rsi,-24(%rbp)
31         movq    %rdx,-32(%rbp)
32         movq    %rcx,-40(%rbp)
33         movq    %r8,-48(%rbp)
34         movl    -12(%rbp),%eax
35         movl    %eax,-60(%rbp)
36         movl    -60(%rbp),%eax
37         cpuid
38         movl    %edx,-56(%rbp)
39         movl    %ecx,%esi
40         movl    %eax,-52(%rbp)
41         movq    -24(%rbp),%rax
42         movl    -52(%rbp),%edx
43         movl    %edx,(%rax)
44         movq    -32(%rbp),%rax
45         movl    %ebx,(%rax)
46         movq    -40(%rbp),%rax
47         movl    %esi,(%rax)
48         movq    -48(%rbp),%rax
49         movl    -56(%rbp),%ecx
50         movl    %ecx,(%rax)
51         popq    %rbx
52         leave
53         .byte   0xf3,0xc3
54 .size   gnutls_cpuid,.-gnutls_cpuid
55
56 .section .note.GNU-stack,"",%progbits