1/* 2 * Copyright 2014, General Dynamics C4 Systems 3 * 4 * SPDX-License-Identifier: GPL-2.0-only 5 */ 6 7#pragma once 8 9#include <config.h> 10#include <types.h> 11#include <plat/machine.h> 12#include <arch/kernel/xapic.h> 13#include <arch/kernel/x2apic.h> 14 15BOOT_CODE bool_t apic_enable(void); 16BOOT_CODE void apic_send_init_ipi(cpu_id_t cpu_id); 17BOOT_CODE void apic_send_startup_ipi(cpu_id_t cpu_id, paddr_t startup_addr); 18BOOT_CODE paddr_t apic_get_base_paddr(void); 19BOOT_CODE bool_t apic_init(bool_t mask_legacy_irqs); 20 21uint32_t apic_read_reg(apic_reg_t reg); 22void apic_write_reg(apic_reg_t reg, uint32_t val); 23void apic_write_icr(word_t high, word_t low); 24 25logical_id_t apic_get_logical_id(void); 26word_t apic_get_cluster(logical_id_t logical_id); 27void apic_ack_active_interrupt(void); 28bool_t apic_is_interrupt_pending(void); 29 30void apic_send_ipi_core(irq_t vector, cpu_id_t cpu_id); 31void apic_send_ipi_cluster(irq_t vector, word_t mda); 32 33#define ipi_send_target apic_send_ipi_core 34 35