xref: /haiku/src/add-ons/kernel/cpu/x86/amd.cpp (revision 24159a0c7d6d6dcba9f2a0c1a7c08d2c8167f21b)
1 /*
2  * Copyright 2005, Haiku, Inc.
3  * Distributed under the terms of the MIT License.
4  *
5  * Authors:
6  *		Axel Dörfler, axeld@pinc-software.de
7  */
8 
9 
10 #include "amd.h"
11 #include "generic_x86.h"
12 
13 #include <OS.h>
14 
15 
16 static void
17 amd_init_mtrrs(void)
18 {
19 	generic_init_mtrrs(generic_count_mtrrs());
20 }
21 
22 
23 static status_t
24 amd_init(void)
25 {
26 	system_info info;
27 	if (get_system_info(&info) != B_OK)
28 		return B_ERROR;
29 
30 	if ((info.cpu_type & B_CPU_x86_VENDOR_MASK) != B_CPU_AMD_x86)
31 		return B_ERROR;
32 
33 	generic_mtrr_compute_physical_mask();
34 	generic_dump_mtrrs(generic_count_mtrrs());
35 
36 	return B_OK;
37 }
38 
39 
40 static status_t
41 amd_stdops(int32 op, ...)
42 {
43 	switch (op) {
44 		case B_MODULE_INIT:
45 			return amd_init();
46 		case B_MODULE_UNINIT:
47 			return B_OK;
48 	}
49 
50 	return B_ERROR;
51 }
52 
53 
54 x86_cpu_module_info gAMDModule = {
55 	{
56 		"cpu/generic_x86/amd/v1",
57 		0,
58 		amd_stdops,
59 	},
60 
61 	generic_count_mtrrs,
62 	amd_init_mtrrs,
63 
64 	generic_set_mtrr,
65 	generic_get_mtrr,
66 };
67