Merge branches 'x86/acpi', 'x86/apic', 'x86/cpudetect', 'x86/headers', 'x86/paravirt...
[linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git] / arch / x86 / include / asm / microcode.h
blobc882664716c1d13e5678aa188fb0ccf75d50acca
1 #ifndef _ASM_X86_MICROCODE_H
2 #define _ASM_X86_MICROCODE_H
4 struct cpu_signature {
5 unsigned int sig;
6 unsigned int pf;
7 unsigned int rev;
8 };
10 struct device;
12 struct microcode_ops {
13 int (*request_microcode_user) (int cpu, const void __user *buf, size_t size);
14 int (*request_microcode_fw) (int cpu, struct device *device);
16 void (*apply_microcode) (int cpu);
18 int (*collect_cpu_info) (int cpu, struct cpu_signature *csig);
19 void (*microcode_fini_cpu) (int cpu);
22 struct ucode_cpu_info {
23 struct cpu_signature cpu_sig;
24 int valid;
25 void *mc;
27 extern struct ucode_cpu_info ucode_cpu_info[];
29 #ifdef CONFIG_MICROCODE_INTEL
30 extern struct microcode_ops * __init init_intel_microcode(void);
31 #else
32 static inline struct microcode_ops * __init init_intel_microcode(void)
34 return NULL;
36 #endif /* CONFIG_MICROCODE_INTEL */
38 #ifdef CONFIG_MICROCODE_AMD
39 extern struct microcode_ops * __init init_amd_microcode(void);
40 #else
41 static inline struct microcode_ops * __init init_amd_microcode(void)
43 return NULL;
45 #endif
47 #endif /* _ASM_X86_MICROCODE_H */