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