interrupt_controller: program local APIC LDR register for xAPIC
If IO APIC is in logical destination mode, local APICs compare their logical APIC ID defined in LDR (Logical Destination Register) with the destination code sent with the interrupt to determine whether or not to accept the incoming interrupt. This patch programs LDR in xAPIC mode to support IO APIC logical mode. The local APIC ID from local APIC ID register can't be used as the 'logical APIC ID' because LAPIC ID may not be consecutive numbers hence it makes it impossible for LDR to encode 8 IDs within 8 bits. This patch chooses 0 for BSP, and for APs, cpu_number which is the index to x86_cpuboot[], which ultimately assigned in z_smp_init[]. Signed-off-by: Zide Chen <zide.chen@intel.com>
This commit is contained in:
parent
e91e7fc3d5
commit
87b65c5ac2
4 changed files with 25 additions and 3 deletions
|
@ -54,7 +54,7 @@
|
|||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern void z_loapic_enable(void);
|
||||
extern void z_loapic_enable(unsigned char cpu_number);
|
||||
extern void z_loapic_int_vec_set(unsigned int irq, unsigned int vector);
|
||||
extern void z_loapic_irq_enable(unsigned int irq);
|
||||
extern void z_loapic_irq_disable(unsigned int irq);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue