#include <i386/machine_check.h>
#endif
-#if CONFIG_COUNTERS
-#include <pmc/pmc.h>
-#endif
-
#include <sys/kdebug.h>
#if MP_DEBUG
legacy_init(void)
{
int result;
+ kern_return_t kr;
vm_map_entry_t entry;
vm_map_offset_t lapic_vbase64;
/* Establish a map to the local apic */
result = vm_map_find_space(kernel_map,
&lapic_vbase64,
round_page(LAPIC_SIZE), 0,
- VM_MAKE_TAG(VM_MEMORY_IOKIT), &entry);
+ 0,
+ VM_MAP_KERNEL_FLAGS_NONE,
+ VM_KERN_MEMORY_IOKIT,
+ &entry);
/* Convert 64-bit vm_map_offset_t to "pointer sized" vm_offset_t
*/
lapic_vbase = (vm_offset_t) lapic_vbase64;
* MTRR physical range containing the local APIC's MMIO space as
* UC and this will override the default PAT setting.
*/
- pmap_enter(pmap_kernel(),
- lapic_vbase,
- (ppnum_t) i386_btop(lapic_pbase),
- VM_PROT_READ|VM_PROT_WRITE,
- VM_PROT_NONE,
- VM_WIMG_IO,
- TRUE);
+ kr = pmap_enter(pmap_kernel(),
+ lapic_vbase,
+ (ppnum_t) i386_btop(lapic_pbase),
+ VM_PROT_READ|VM_PROT_WRITE,
+ VM_PROT_NONE,
+ VM_WIMG_IO,
+ TRUE);
+
+ assert(kr == KERN_SUCCESS);
}
/*
break;
case LAPIC_PMC_SW_INTERRUPT:
{
-#if CONFIG_COUNTERS
- thread_t old, new;
- ml_get_csw_threads(&old, &new);
-
- if (pmc_context_switch(old, new) == TRUE) {
- retval = 1;
- /* No EOI required for SWI */
- }
-#endif /* CONFIG_COUNTERS */
}
break;
+ case LAPIC_KICK_INTERRUPT:
+ _lapic_end_of_interrupt();
+ retval = 1;
+ break;
}
return retval;
return cmci_vector;
}
-#if DEBUG
+#if DEVELOPMENT || DEBUG
extern void lapic_trigger_MC(void);
void
lapic_trigger_MC(void)
{
/* A 64-bit access to any register will do it. */
- volatile uint64_t dummy = *(uint64_t *) (void *) LAPIC_MMIO(ID);
+ volatile uint64_t dummy = *(volatile uint64_t *) (volatile void *) LAPIC_MMIO(ID);
dummy++;
}
#endif