Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1058 → Rev 1059

/kernel/trunk/arch/ia32/src/smp/smp.c
55,6 → 55,9
 
void smp_init(void)
{
int status;
__address l_apic_address, io_apic_address;
 
if (acpi_madt) {
acpi_madt_parse();
ops = &madt_config_operations;
64,11 → 67,22
ops = &mps_config_operations;
}
 
l_apic_address = PA2KA(PFN2ADDR(frame_alloc_rc(ONE_FRAME, FRAME_ATOMIC | FRAME_KA, &status)));
if (status != FRAME_OK)
panic("cannot allocate address for l_apic\n");
 
io_apic_address = PA2KA(PFN2ADDR(frame_alloc_rc(ONE_FRAME, FRAME_ATOMIC | FRAME_KA, &status)));
if (status != FRAME_OK)
panic("cannot allocate address for io_apic\n");
 
if (config.cpu_count > 1) {
page_mapping_insert(AS_KERNEL, (__address) l_apic, (__address) l_apic,
page_mapping_insert(AS_KERNEL, l_apic_address, (__address) l_apic,
PAGE_NOT_CACHEABLE);
page_mapping_insert(AS_KERNEL, (__address) io_apic, (__address) io_apic,
page_mapping_insert(AS_KERNEL, io_apic_address, (__address) io_apic,
PAGE_NOT_CACHEABLE);
l_apic = (__u32 *) l_apic_address;
io_apic = (__u32 *) io_apic_address;
}
 
/*