638 #if !defined(_ASM)
639
640 #if defined(_KERNEL) || defined(_KMEMUSER)
641
642 #define NUM_X86_FEATURES 40
643 extern uchar_t x86_featureset[];
644
645 extern void free_x86_featureset(void *featureset);
646 extern boolean_t is_x86_feature(void *featureset, uint_t feature);
647 extern void add_x86_feature(void *featureset, uint_t feature);
648 extern void remove_x86_feature(void *featureset, uint_t feature);
649 extern boolean_t compare_x86_featureset(void *setA, void *setB);
650 extern void print_x86_featureset(void *featureset);
651
652
653 extern uint_t x86_type;
654 extern uint_t x86_vendor;
655 extern uint_t x86_clflush_size;
656
657 extern uint_t pentiumpro_bug4046376;
658 extern uint_t pentiumpro_bug4064495;
659
660 extern uint_t enable486;
661
662 extern const char CyrixInstead[];
663
664 #endif
665
666 #if defined(_KERNEL)
667
668 /*
669 * This structure is used to pass arguments and get return values back
670 * from the CPUID instruction in __cpuid_insn() routine.
671 */
672 struct cpuid_regs {
673 uint32_t cp_eax;
674 uint32_t cp_ebx;
675 uint32_t cp_ecx;
676 uint32_t cp_edx;
677 };
678
679 /*
680 * Utility functions to get/set extended control registers (XCR)
|
638 #if !defined(_ASM)
639
640 #if defined(_KERNEL) || defined(_KMEMUSER)
641
642 #define NUM_X86_FEATURES 40
643 extern uchar_t x86_featureset[];
644
645 extern void free_x86_featureset(void *featureset);
646 extern boolean_t is_x86_feature(void *featureset, uint_t feature);
647 extern void add_x86_feature(void *featureset, uint_t feature);
648 extern void remove_x86_feature(void *featureset, uint_t feature);
649 extern boolean_t compare_x86_featureset(void *setA, void *setB);
650 extern void print_x86_featureset(void *featureset);
651
652
653 extern uint_t x86_type;
654 extern uint_t x86_vendor;
655 extern uint_t x86_clflush_size;
656
657 extern uint_t pentiumpro_bug4046376;
658
659 extern const char CyrixInstead[];
660
661 #endif
662
663 #if defined(_KERNEL)
664
665 /*
666 * This structure is used to pass arguments and get return values back
667 * from the CPUID instruction in __cpuid_insn() routine.
668 */
669 struct cpuid_regs {
670 uint32_t cp_eax;
671 uint32_t cp_ebx;
672 uint32_t cp_ecx;
673 uint32_t cp_edx;
674 };
675
676 /*
677 * Utility functions to get/set extended control registers (XCR)
|