14f006133SAxel Dörfler /*
2bb163c02SIngo Weinhold * Copyright 2005-2009, Haiku, Inc.
34f006133SAxel Dörfler * Distributed under the terms of the MIT License.
44f006133SAxel Dörfler *
54f006133SAxel Dörfler * Authors:
64f006133SAxel Dörfler * Axel Dörfler, axeld@pinc-software.de
74f006133SAxel Dörfler */
84f006133SAxel Dörfler
94f006133SAxel Dörfler
104f006133SAxel Dörfler #include "intel.h"
112058e6c1SAxel Dörfler #include "generic_x86.h"
124f006133SAxel Dörfler
13*fa157509SPawel Dziepak #include <cpu.h>
144f006133SAxel Dörfler
154f006133SAxel Dörfler
1651a3c450SAxel Dörfler static void
intel_init_mtrrs(void)1751a3c450SAxel Dörfler intel_init_mtrrs(void)
184f006133SAxel Dörfler {
192058e6c1SAxel Dörfler generic_init_mtrrs(generic_count_mtrrs());
204f006133SAxel Dörfler }
214f006133SAxel Dörfler
224f006133SAxel Dörfler
234f006133SAxel Dörfler static status_t
intel_init(void)244f006133SAxel Dörfler intel_init(void)
254f006133SAxel Dörfler {
26*fa157509SPawel Dziepak if (gCPU[0].arch.vendor != VENDOR_INTEL)
274f006133SAxel Dörfler return B_ERROR;
284f006133SAxel Dörfler
292058e6c1SAxel Dörfler generic_mtrr_compute_physical_mask();
302058e6c1SAxel Dörfler generic_dump_mtrrs(generic_count_mtrrs());
312ed21b85SAxel Dörfler
324f006133SAxel Dörfler return B_OK;
334f006133SAxel Dörfler }
344f006133SAxel Dörfler
354f006133SAxel Dörfler
36bb163c02SIngo Weinhold static void
intel_set_mtrrs(uint8 defaultType,const x86_mtrr_info * infos,uint32 count)37dac21d8bSIngo Weinhold intel_set_mtrrs(uint8 defaultType, const x86_mtrr_info* infos, uint32 count)
38bb163c02SIngo Weinhold {
39dac21d8bSIngo Weinhold generic_set_mtrrs(defaultType, infos, count, generic_count_mtrrs());
40bb163c02SIngo Weinhold }
41bb163c02SIngo Weinhold
42bb163c02SIngo Weinhold
434f006133SAxel Dörfler static status_t
intel_stdops(int32 op,...)444f006133SAxel Dörfler intel_stdops(int32 op, ...)
454f006133SAxel Dörfler {
464f006133SAxel Dörfler switch (op) {
474f006133SAxel Dörfler case B_MODULE_INIT:
484f006133SAxel Dörfler return intel_init();
494f006133SAxel Dörfler case B_MODULE_UNINIT:
502058e6c1SAxel Dörfler return B_OK;
514f006133SAxel Dörfler }
524f006133SAxel Dörfler
534f006133SAxel Dörfler return B_ERROR;
544f006133SAxel Dörfler }
554f006133SAxel Dörfler
564f006133SAxel Dörfler
574f006133SAxel Dörfler x86_cpu_module_info gIntelModule = {
584f006133SAxel Dörfler {
594f006133SAxel Dörfler "cpu/generic_x86/intel/v1",
604f006133SAxel Dörfler 0,
614f006133SAxel Dörfler intel_stdops,
624f006133SAxel Dörfler },
634f006133SAxel Dörfler
642058e6c1SAxel Dörfler generic_count_mtrrs,
6551a3c450SAxel Dörfler intel_init_mtrrs,
662ed21b85SAxel Dörfler
672058e6c1SAxel Dörfler generic_set_mtrr,
682058e6c1SAxel Dörfler generic_get_mtrr,
69bb163c02SIngo Weinhold intel_set_mtrrs
704f006133SAxel Dörfler };
71