1 #ifndef ASM_X86__MICROCODE_H
2 #define ASM_X86__MICROCODE_H
3 
4 #include <xen/types.h>
5 #include <xen/percpu.h>
6 
7 #include <public/xen.h>
8 
9 struct multiboot_info;
10 
11 struct cpu_signature {
12     /* CPU signature (CPUID.1.EAX). */
13     unsigned int sig;
14 
15     /* Platform Flags.  Only applicable to Intel. */
16     unsigned int pf;
17 
18     /* Microcode Revision. */
19     unsigned int rev;
20 };
21 
22 DECLARE_PER_CPU(struct cpu_signature, cpu_sig);
23 
24 void microcode_set_module(unsigned int idx);
25 int ucode_update_hcall(XEN_GUEST_HANDLE(const_void) buf,
26                        unsigned long len, unsigned int flags);
27 int microcode_update_one(void);
28 
29 struct boot_info;
30 int early_microcode_init(struct boot_info *bi);
31 
32 #endif /* ASM_X86__MICROCODE_H */
33