Changes in kernel/generic/src/cpu/cpu.c [7e752b2:f651e80] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/cpu/cpu.c
r7e752b2 rf651e80 33 33 /** 34 34 * @file 35 * @brief 35 * @brief CPU subsystem initialization and listing. 36 36 */ 37 37 38 38 #include <cpu.h> 39 39 #include <arch.h> … … 42 42 #include <mm/page.h> 43 43 #include <mm/frame.h> 44 #include < typedefs.h>44 #include <arch/types.h> 45 45 #include <config.h> 46 46 #include <panic.h> … … 48 48 #include <adt/list.h> 49 49 #include <print.h> 50 #include <sysinfo/sysinfo.h>51 #include <arch/cycle.h>52 50 53 51 cpu_t *cpus; … … 59 57 */ 60 58 void cpu_init(void) { 59 unsigned int i, j; 60 61 61 #ifdef CONFIG_SMP 62 62 if (config.cpu_active == 1) { 63 63 #endif /* CONFIG_SMP */ 64 65 64 cpus = (cpu_t *) malloc(sizeof(cpu_t) * config.cpu_count, 66 65 FRAME_ATOMIC); 67 66 if (!cpus) 68 67 panic("Cannot allocate CPU structures."); 69 70 /* Initialize everything */68 69 /* initialize everything */ 71 70 memsetb(cpus, sizeof(cpu_t) * config.cpu_count, 0); 72 73 size_t i; 71 74 72 for (i = 0; i < config.cpu_count; i++) { 75 cpus[i].stack = (uint8_t *) frame_alloc(STACK_FRAMES, 76 FRAME_KA | FRAME_ATOMIC);73 cpus[i].stack = (uint8_t *) frame_alloc(STACK_FRAMES, FRAME_KA | FRAME_ATOMIC); 74 77 75 cpus[i].id = i; 78 76 79 irq_spinlock_initialize(&cpus[i].lock, "cpus[].lock"); 80 81 unsigned int j; 77 spinlock_initialize(&cpus[i].lock, "cpu_t.lock"); 78 82 79 for (j = 0; j < RQ_COUNT; j++) { 83 irq_spinlock_initialize(&cpus[i].rq[j].lock, "cpus[].rq[].lock");80 spinlock_initialize(&cpus[i].rq[j].lock, "rq_t.lock"); 84 81 list_initialize(&cpus[i].rq[j].rq_head); 85 82 } … … 89 86 } 90 87 #endif /* CONFIG_SMP */ 91 88 92 89 CPU = &cpus[config.cpu_active - 1]; 93 90 94 CPU->active = true; 95 CPU->tlb_active = true; 96 97 CPU->idle = false; 98 CPU->last_cycle = get_cycle(); 99 CPU->idle_cycles = 0; 100 CPU->busy_cycles = 0; 91 CPU->active = 1; 92 CPU->tlb_active = 1; 101 93 102 94 cpu_identify(); … … 108 100 { 109 101 unsigned int i; 110 102 111 103 for (i = 0; i < config.cpu_count; i++) { 112 104 if (cpus[i].active) … … 119 111 /** @} 120 112 */ 113
Note:
See TracChangeset
for help on using the changeset viewer.