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 15 BOOT_CODE bool_t apic_enable(void); 16 BOOT_CODE void apic_send_init_ipi(cpu_id_t cpu_id); 17 BOOT_CODE void apic_send_startup_ipi(cpu_id_t cpu_id, paddr_t startup_addr); 18 BOOT_CODE paddr_t apic_get_base_paddr(void); 19 BOOT_CODE bool_t apic_init(bool_t mask_legacy_irqs); 20 21 uint32_t apic_read_reg(apic_reg_t reg); 22 void apic_write_reg(apic_reg_t reg, uint32_t val); 23 void apic_write_icr(word_t high, word_t low); 24 25 logical_id_t apic_get_logical_id(void); 26 word_t apic_get_cluster(logical_id_t logical_id); 27 void apic_ack_active_interrupt(void); 28 bool_t apic_is_interrupt_pending(void); 29 30 void apic_send_ipi_core(irq_t vector, cpu_id_t cpu_id); 31 void apic_send_ipi_cluster(irq_t vector, word_t mda); 32 33 #define ipi_send_target apic_send_ipi_core 34 35