I found something strange in Bochs BIOS, when there are more than 2 logical processors.
Its starting just after sending SIPI to cpu1 and cpu2.
It's even more strange, because sometimes cpu1/cpu2 is going to start at 0x0800:0x0000 (where he should be starting), and the second one is going thru BIOS to clean area of 0x100000 :/
My SIPI inicjalization looks like that (and is proper, at least for cpu0 with cpu1):
Code: Select all
; eax = 0x00000001 eg. cpu1 etc.
; send START command to logical processor (vector 0x08 > 0x0800:0x0000)
shl eax, 24
mov dword [rdi + KERNEL_ACPI_MADT_LAPIC_ICH_register], eax
mov eax, 0x00004608
mov dword [rdi + KERNEL_ACPI_MADT_LAPIC_ICL_register], eax
Screenshot below is from CPU1