70 #endif
71
72 /*
73 * some globals for patching the result of cpuid
74 * to solve problems w/ creative cpu vendors
75 */
76
77 extern uint32_t cpuid_feature_ecx_include;
78 extern uint32_t cpuid_feature_ecx_exclude;
79 extern uint32_t cpuid_feature_edx_include;
80 extern uint32_t cpuid_feature_edx_exclude;
81
82 /*
83 * Set console mode
84 */
85 static void
86 set_console_mode(uint8_t val)
87 {
88 struct bop_regs rp = {0};
89
90 rp.eax.byte.ah = 0x0;
91 rp.eax.byte.al = val;
92 rp.ebx.word.bx = 0x0;
93
94 BOP_DOINT(bootops, 0x10, &rp);
95 }
96
97
98 /*
99 * Setup routine called right before main(). Interposing this function
100 * before main() allows us to call it in a machine-independent fashion.
101 */
102 void
103 mlsetup(struct regs *rp)
104 {
105 u_longlong_t prop_value;
106 extern struct classfuncs sys_classfuncs;
107 extern disp_t cpu0_disp;
108 extern char t0stack[];
109 extern int post_fastreboot;
|
70 #endif
71
72 /*
73 * some globals for patching the result of cpuid
74 * to solve problems w/ creative cpu vendors
75 */
76
77 extern uint32_t cpuid_feature_ecx_include;
78 extern uint32_t cpuid_feature_ecx_exclude;
79 extern uint32_t cpuid_feature_edx_include;
80 extern uint32_t cpuid_feature_edx_exclude;
81
82 /*
83 * Set console mode
84 */
85 static void
86 set_console_mode(uint8_t val)
87 {
88 struct bop_regs rp = {0};
89
90 if (!bios_calls_available)
91 return;
92
93 rp.eax.byte.ah = 0x0;
94 rp.eax.byte.al = val;
95 rp.ebx.word.bx = 0x0;
96
97 BOP_DOINT(bootops, 0x10, &rp);
98 }
99
100
101 /*
102 * Setup routine called right before main(). Interposing this function
103 * before main() allows us to call it in a machine-independent fashion.
104 */
105 void
106 mlsetup(struct regs *rp)
107 {
108 u_longlong_t prop_value;
109 extern struct classfuncs sys_classfuncs;
110 extern disp_t cpu0_disp;
111 extern char t0stack[];
112 extern int post_fastreboot;
|