Turnstone Operating System
Loading...
Searching...
No Matches
apic.64.c File Reference

apic and ioapic implementation More...

#include <apic.h>
#include <cpu.h>
#include <cpu/cpu_state.h>
#include <memory/paging.h>
#include <memory/frame.h>
#include <acpi.h>
#include <iterator.h>
#include <cpu/interrupt.h>
#include <logging.h>
#include <time/timer.h>
#include <list.h>
#include <time.h>

Typedefs

typedef uint32_t(* lock_get_local_apic_id_getter_f) (void)
 

Functions

 MODULE ("turnstone.kernel.cpu.apic")
 
uint8_t apic_init_ioapic (const acpi_table_madt_entry_t *ioapic)
 
int8_t apic_init_timer (void)
 
static uint64_t apic_read_timer_current_value (void)
 
static void apic_write_timer_initial_value (uint32_t value)
 
static void apic_write_timer_divide_configuration (uint32_t value)
 
static void apic_write_timer_lvt (uint32_t value)
 
static uint32_t apic_read_timer_lvt (void)
 
static void apic_write_spurious_interrupt_vector (uint32_t value)
 
static void apic_write_lvt_lint0 (uint32_t value)
 
static void apic_write_lvt_lint1 (uint32_t value)
 
int8_t apic_setup (acpi_xrsdp_descriptor_t *desc)
 
int8_t apic_init_apic (list_t *apic_entries)
 
uint8_t apic_get_irq_override (uint8_t old_irq)
 
void apic_enable_lapic (void)
 
uint8_t apic_configure_lapic (void)
 
boolean_t apic_is_waiting_timer (void)
 
int8_t apic_ioapic_setup_irq (uint8_t irq, uint32_t props)
 
int8_t apic_ioapic_switch_irq (uint8_t irq, uint32_t disabled)
 
void apic_eoi (void)
 
uint32_t apic_get_local_apic_id (void)
 
void apic_send_init (uint8_t destination)
 
void apic_send_sipi (uint8_t destination, uint8_t vector)
 
void apic_send_ipi (uint8_t destination, uint8_t vector)
 
void apic_send_nmi (uint8_t destination)
 
uint64_t apic_get_ap_count (void)
 

Variables

uint64_t ioapic_bases [2] = {0, 0}
 
uint8_t ioapic_count = 0
 
uint64_t lapic_addr = 0
 
int8_t apic_enabled = 0
 
uint32_t lapic_initial_timer_count = 0
 
uint64_t apic_ap_count = 0
 
boolean_t apic_x2apic = false
 
list_tirq_remappings = NULL
 
volatile uint64_t time_timer_rdtsc_delta
 
lock_get_local_apic_id_getter_f lock_get_local_apic_id_getter
 
boolean_t local_apic_id_is_valid
 
cpu_state_t __seg_gs * cpu_state
 

Detailed Description

apic and ioapic implementation

This work is licensed under TURNSTONE OS Public License. Please read and understand latest version of Licence.