btrfs: Attempt to fix GCC2 build.
[haiku.git] / src / system / kernel / arch / x86 / 32 / cpuid.S
blob0595a4d4f7f59aa38634871b137b39bb43f27ba0
1 /*
2  * Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  *
5  * Copyright 2001, Travis Geiselbrecht. All rights reserved.
6  * Distributed under the terms of the NewOS License.
7  */
9 #include <asm_defs.h>
12 .text
14 /* void get_current_cpuid(cpuid_info *info, uint32 eaxRegister,
15         uint32 ecxRegister) */
16 FUNCTION(get_current_cpuid):
17         pushl   %ebx
18         pushl   %edi
19         movl    12(%esp),%edi   /* first arg points to the cpuid_info structure */
20         movl    16(%esp),%eax   /* second arg sets up eax */
21         movl    20(%esp),%ecx  /* third arg sets up ecx */
22         cpuid
23         movl    %eax,0(%edi)    /* copy the regs into the cpuid_info structure */
24         movl    %ebx,4(%edi)
25         movl    %edx,8(%edi)
26         movl    %ecx,12(%edi)
27         popl    %edi
28         popl    %ebx
29         xorl    %eax, %eax              /* return B_OK */
30         ret
31 FUNCTION_END(get_current_cpuid)
34 /* unsigned int get_eflags(void) */
35 FUNCTION(get_eflags):
36         pushfl
37         popl    %eax
38         ret
39 FUNCTION_END(get_eflags)
42 /* void set_eflags(unsigned int val) */
43 FUNCTION(set_eflags):
44         pushl   4(%esp)
45         popfl
46         ret
47 FUNCTION_END(set_eflags)