X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/15129b1c8dbb3650c63b70adb1cad9af601c6c17..b226f5e54a60dc81db17b1260381d7dbfea3cdf1:/osfmk/i386/lapic_native.c?ds=sidebyside diff --git a/osfmk/i386/lapic_native.c b/osfmk/i386/lapic_native.c index e9983aa79..73e5e1c13 100644 --- a/osfmk/i386/lapic_native.c +++ b/osfmk/i386/lapic_native.c @@ -56,10 +56,6 @@ #include #endif -#if CONFIG_COUNTERS -#include -#endif - #include #if MP_DEBUG @@ -112,6 +108,7 @@ static void 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 */ @@ -121,7 +118,10 @@ legacy_init(void) 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; @@ -137,13 +137,15 @@ legacy_init(void) * 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); } /* @@ -800,17 +802,12 @@ lapic_interrupt(int interrupt_num, x86_saved_state_t *state) 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; @@ -967,13 +964,13 @@ lapic_get_cmci_vector(void) 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