Rev 2107 | Rev 2441 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2107 | Rev 2222 | ||
|---|---|---|---|
| Line 80... | Line 80... | ||
| 80 | if (!io_apic_address) |
80 | if (!io_apic_address) |
| 81 | panic("cannot allocate address for io_apic\n"); |
81 | panic("cannot allocate address for io_apic\n"); |
| 82 | 82 | ||
| 83 | if (config.cpu_count > 1) { |
83 | if (config.cpu_count > 1) { |
| 84 | page_mapping_insert(AS_KERNEL, l_apic_address, (uintptr_t) l_apic, |
84 | page_mapping_insert(AS_KERNEL, l_apic_address, (uintptr_t) l_apic, |
| 85 | PAGE_NOT_CACHEABLE); |
85 | PAGE_NOT_CACHEABLE | PAGE_WRITE); |
| 86 | page_mapping_insert(AS_KERNEL, io_apic_address, (uintptr_t) io_apic, |
86 | page_mapping_insert(AS_KERNEL, io_apic_address, (uintptr_t) io_apic, |
| 87 | PAGE_NOT_CACHEABLE); |
87 | PAGE_NOT_CACHEABLE | PAGE_WRITE); |
| 88 | 88 | ||
| 89 | l_apic = (uint32_t *) l_apic_address; |
89 | l_apic = (uint32_t *) l_apic_address; |
| 90 | io_apic = (uint32_t *) io_apic_address; |
90 | io_apic = (uint32_t *) io_apic_address; |
| 91 | } |
91 | } |
| 92 | } |
92 | } |
| 93 | 93 | ||
| 94 | /* |
94 | /* |
| 95 | * Kernel thread for bringing up application processors. It becomes clear |
95 | * Kernel thread for bringing up application processors. It becomes clear |
| 96 | * that we need an arrangement like this (AP's being initialized by a kernel |
96 | * that we need an arrangement like this (AP's being initialized by a kernel |