64 lines · 1.4 KB · C
RawDownload
#ifndef _ASM_X86_MICROCODE_H#define _ASM_X86_MICROCODE_H struct cpu_signature {	unsigned int sig;	unsigned int pf;	unsigned int rev;}; struct device; enum ucode_state { UCODE_ERROR, UCODE_OK, UCODE_NFOUND }; struct microcode_ops {	enum ucode_state (*request_microcode_user) (int cpu,				const void __user *buf, size_t size); 	enum ucode_state (*request_microcode_fw) (int cpu,				struct device *device); 	void (*microcode_fini_cpu) (int cpu); 	/*	 * The generic 'microcode_core' part guarantees that	 * the callbacks below run on a target cpu when they	 * are being called.	 * See also the "Synchronization" section in microcode_core.c.	 */	int (*apply_microcode) (int cpu);	int (*collect_cpu_info) (int cpu, struct cpu_signature *csig);}; struct ucode_cpu_info {	struct cpu_signature	cpu_sig;	int			valid;	void			*mc;};extern struct ucode_cpu_info ucode_cpu_info[]; #ifdef CONFIG_MICROCODE_INTELextern struct microcode_ops * __init init_intel_microcode(void);#elsestatic inline struct microcode_ops * __init init_intel_microcode(void){	return NULL;}#endif /* CONFIG_MICROCODE_INTEL */ #ifdef CONFIG_MICROCODE_AMDextern struct microcode_ops * __init init_amd_microcode(void); static inline void get_ucode_data(void *to, const u8 *from, size_t n){	memcpy(to, from, n);} #elsestatic inline struct microcode_ops * __init init_amd_microcode(void){	return NULL;}#endif #endif /* _ASM_X86_MICROCODE_H */