summaryrefslogtreecommitdiff
path: root/kernel/src/apic/apic.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/apic/apic.c')
-rw-r--r--kernel/src/apic/apic.c32
1 files changed, 16 insertions, 16 deletions
diff --git a/kernel/src/apic/apic.c b/kernel/src/apic/apic.c
index 2b650b0..f543c82 100644
--- a/kernel/src/apic/apic.c
+++ b/kernel/src/apic/apic.c
@@ -30,69 +30,69 @@ void init_ap_cpus()
map_addr(lapic_addr, lapic_addr, FLAG_PRESENT);
for (size_t i = 0; i < numcores; i++) {
- // do not start BSP, that's already running this code
+ /* do not start BSP, that's already running this code */
if (cpu_apic_ids[i] == bspid)
continue;
- // send INIT IPI
+ /* send INIT IPI */
- // clear APIC errors
+ /* clear APIC errors */
*((__volatile__ uint32_t *)(lapic_addr + 0x280)) = 0;
- // select AP
+ /* select AP */
*((__volatile__ uint32_t *)(lapic_addr + 0x310)) =
(*((__volatile__ uint32_t *)(lapic_addr + 0x310)) &
0x00ffffff) |
((uint32_t)cpu_apic_ids[i] << 24);
- // trigger INIT IPI
+ /* trigger INIT IPI */
*((__volatile__ uint32_t *)(lapic_addr + 0x300)) =
(*((__volatile__ uint32_t *)(lapic_addr + 0x300)) &
0xfff00000) |
0x00C500;
- // wait for delivery
+ /* wait for delivery */
do {
__asm__ __volatile__("pause" : : : "memory");
} while (*((__volatile__ uint32_t *)(uint64_t)(lapic_addr +
0x300)) &
(1 << 12));
- // select AP
+ /* select AP */
*((__volatile__ uint32_t *)(lapic_addr + 0x310)) =
(*((__volatile__ uint32_t *)(lapic_addr + 0x310)) &
0x00ffffff) |
((uint32_t)cpu_apic_ids[i] << 24);
- // deassert
+ /* deassert */
*((__volatile__ uint32_t *)(lapic_addr + 0x300)) =
(*((__volatile__ uint32_t *)(lapic_addr + 0x300)) &
0xfff00000) |
0x008500;
- // wait for delivery
+ /* wait for delivery */
do {
__asm__ __volatile__("pause" : : : "memory");
} while (*((__volatile__ uint32_t *)(uint64_t)(lapic_addr +
0x300)) &
(1 << 12));
- // wait 10 msec
+ /* wait 10 msec */
wait(10);
- // send STARTUP IPI (twice)
+ /* send STARTUP IPI (twice) */
for (size_t j = 0; j < 2; j++) {
- // clear APIC errors
+ /* clear APIC errors */
*((__volatile__ uint32_t *)(lapic_addr + 0x280)) = 0;
- // select AP
+ /* select AP */
*((__volatile__ uint32_t *)(lapic_addr + 0x310)) =
(*((__volatile__ uint32_t *)(lapic_addr +
0x310)) &
0x00ffffff) |
((uint32_t)cpu_apic_ids[i] << 24);
- // trigger STARTUP IPI for 0800:0000
+ /* trigger STARTUP IPI for 0800:0000 */
*((__volatile__ uint32_t *)(lapic_addr + 0x300)) =
(*((__volatile__ uint32_t *)(lapic_addr +
0x300)) &
0xfff0f800) |
0x000608;
- // wait 200 usec
+ /* wait 200 usec */
wait(1);
- // wait for delivery
+ /* wait for delivery */
do {
__asm__ __volatile__("pause" : : : "memory");
} while (*((__volatile__ uint32_t