Avoids nehalem keyboard issues, better monitors
[akaros.git] / kern / arch / i686 / colored_caches.c
1 /* Copyright (c) 2009 The Regents of the University  of California. 
2  * See the COPYRIGHT files at the top of this source tree for full 
3  * license information.
4  * 
5  * Kevin Klues <klueska@cs.berkeley.edu>    
6  */
7
8 #ifdef __SHARC__
9 #pragma nosharc
10 #define SINIT(x) x
11 #endif
12
13 #include <error.h>
14 #include <bitmask.h>
15 #include <colored_caches.h>
16 #include <process.h>
17
18 // Static global variable of caches to assign to the available caches struct
19 static cache_t RO l1,l2,l3;
20
21 // Convenient global variable for accessing the last level cache
22 cache_t* llc_cache;
23
24 // Global variables
25 available_caches_t RO available_caches;
26
27 /************** Cache Related Functions  *****************/
28 void cache_init() 
29 {
30         // Initialize the caches available on this system.
31         // TODO: Should call out to something reading the acpi tables from 
32         // memory, or something similar.  For now, just initialize them inline
33         available_caches.l1 = SINIT(&l1);
34         available_caches.l2 = SINIT(&l2);
35         available_caches.l3 = SINIT(&l3);
36         llc_cache = &l3;
37 #ifdef __CONFIG_BOXBORO__
38         /* level (ignoring L1I), size, ways, CL size) */
39         init_cache_properties(&l1,   32,  8, 64);       /* 1 color */
40         init_cache_properties(&l2,  256,  8, 64);       /* 16 colors */
41         init_cache_properties(&l3, 24576, 24, 64);      /* 256 colors */
42 #else /* Core i7 */
43         init_cache_properties(&l1,   32,  8, 64);       /* 1 color */
44         init_cache_properties(&l2,  256,  8, 64);       /* 16 colors */
45         init_cache_properties(&l3, 8192, 16, 64);       /* 128 colors */
46 #endif /* __CONFIG_E1000_ON_BOXBORO__ */
47         printk("Cache init successful\n");
48 }
49
50 void cache_color_alloc_init()
51 {
52         init_free_cache_colors_map(&l1);
53         init_free_cache_colors_map(&l2);
54         init_free_cache_colors_map(&l3);
55 }
56