Initial work towards supporting IO APICs. This cannot work for PCI interrupts
though until we use ACPI for proper PCI IRQ routing through the IO APIC. Therefore the IO APIC code path is not yet enabled and the IO APIC isn't used. ISA interrupts would work though, as would PCI interrupts if you'd hardcode them for your specific configuration. Note that this change also modifies some parts in the bootloader and in the PIC setup to make local APICs available even on non-SMP systems. This causes APIC timers to be used instead the normal PIT if it is available (also on non-SMP configurations). Also fixes some general errors in SMP and PIC code as well as some code cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26492 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -8,17 +8,22 @@
|
||||
#ifndef KERNEL_ARCH_INT_H
|
||||
#define KERNEL_ARCH_INT_H
|
||||
|
||||
|
||||
#include <boot/kernel_args.h>
|
||||
#include <arch_int.h>
|
||||
|
||||
// config flags for arch_int_configure_io_interrupt()
|
||||
#define B_EDGE_TRIGGERED 1
|
||||
#define B_LEVEL_TRIGGERED 2
|
||||
#define B_LOW_ACTIVE_POLARITY 4
|
||||
#define B_HIGH_ACTIVE_POLARITY 8
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
status_t arch_int_init(kernel_args *args);
|
||||
status_t arch_int_init_post_vm(kernel_args *args);
|
||||
struct kernel_args;
|
||||
|
||||
status_t arch_int_init(struct kernel_args *args);
|
||||
status_t arch_int_init_post_vm(struct kernel_args *args);
|
||||
status_t arch_int_init_post_device_manager(struct kernel_args *args);
|
||||
|
||||
void arch_int_enable_interrupts(void);
|
||||
@@ -26,6 +31,7 @@ int arch_int_disable_interrupts(void);
|
||||
void arch_int_restore_interrupts(int oldstate);
|
||||
void arch_int_enable_io_interrupt(int irq);
|
||||
void arch_int_disable_io_interrupt(int irq);
|
||||
void arch_int_configure_io_interrupt(int irq, uint32 config);
|
||||
bool arch_int_are_interrupts_enabled(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#define B_SAFEMODE_DISABLE_USER_ADD_ONS "disableuseraddons"
|
||||
#define B_SAFEMODE_DISABLE_IDE_DMA "disableidedma"
|
||||
#define B_SAFEMODE_DISABLE_IOAPIC "disable_ioapic"
|
||||
#define B_SAFEMODE_DISABLE_ACPI "disable_acpi"
|
||||
#define B_SAFEMODE_DISABLE_APM "disable_apm"
|
||||
#define B_SAFEMODE_DISABLE_SMP "disable_smp"
|
||||
|
||||
Reference in New Issue
Block a user