Subversion Repositories HelenOS-historic

Rev

Rev 242 | Rev 275 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 242 Rev 251
Line 29... Line 29...
29
#ifndef __CPUID_H__
29
#ifndef __CPUID_H__
30
#define __CPUID_H__
30
#define __CPUID_H__
31
 
31
 
32
#include <arch/types.h>
32
#include <arch/types.h>
33
 
33
 
-
 
34
#define AMD_CPUID_EXTENDED 0x80000001
-
 
35
#define AMD_EXT_NOEXECUTE    20
-
 
36
 
34
struct cpu_info {
37
struct cpu_info {
35
    __u32 cpuid_eax;
38
    __u32 cpuid_eax;
36
    __u32 cpuid_ebx;
39
    __u32 cpuid_ebx;
37
    __u32 cpuid_ecx;
40
    __u32 cpuid_ecx;
38
    __u32 cpuid_edx;
41
    __u32 cpuid_edx;
39
} __attribute__ ((packed));
42
} __attribute__ ((packed));
40
 
43
 
41
extern int has_cpuid(void);
44
extern int has_cpuid(void);
42
 
45
 
43
static inline void cpuid(__u32 cmd, cpu_info_t *info)
46
extern void cpuid(__u32 cmd, cpu_info_t *info);
44
{
47
 
45
    __asm__ (
-
 
46
        "movl %1, %eax"
-
 
47
        "cpuid"
-
 
48
        "movl %eax, 0(%0)"
-
 
49
        "movl %ebx, 4(%0)"
-
 
50
        "movl %ecx, 8(%0)"
-
 
51
        "movl %edx, 12(%0)"
-
 
52
        : "=m"(info)
-
 
53
        : "r"(cmd)
-
 
54
        : "%eax","%ebx","%ecx","%edx"
-
 
55
        );
-
 
56
}
-
 
57
 
48
 
58
extern __u64 rdtsc(void);
49
extern __u64 rdtsc(void);
59
 
50
 
60
#endif
51
#endif