x86: allows panic earlier in the boot process
[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 <arch/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         init_cache_properties(&l1,   32,  8, 64);
38         init_cache_properties(&l2,  256,  8, 64);
39         init_cache_properties(&l3, 8192, 16, 64);
40         printk("Cache init successful\n");
41 }
42
43 void cache_color_alloc_init()
44 {
45         init_free_cache_colors_map(&l1);
46         init_free_cache_colors_map(&l2);
47         init_free_cache_colors_map(&l3);
48 }
49