13#define I8254_ADDR 0x40
14#define I8254_TYPE IOADDR_PORT
17#define PIC_MASTER 0x20
37 .name =
"configuration mechanism #1",
106 printk(
"x86: no interrupt controller\n");
void pci_conf1_write(struct pci_host *host, struct pci_dev *dev, uint16_t reg, uint32_t val)
Writes a 32-bit register of a function's configuration space.
uint32_t pci_conf1_read(struct pci_host *host, struct pci_dev *dev, uint16_t reg)
Reads a 32-bit register of a function's configuration space.
void x86_smp_init(void)
Starts the other CPUs, at boot, unless the kernel's command line says smp=off.
void(*) irq_handler_t(void *arg)
void x86_irq_gates_setup(void)
Sets the IDT's gates for the interrupts: vectors 32 to 79, the local APIC's timer,...
int x86_pic_setup(struct ioaddr *master, struct ioaddr *slave)
Sets up the 8259s, with every IRQ masked.
uint32_t x86_lapic_timer_setup(uint32_t period_ns, irq_handler_t handler)
Starts the scheduler's tick with the local APIC's timer, calibrated first.
struct x86_irq_chip x86_pic_chip
uint32_t x86_pit_period_set(uint32_t period_ns)
Makes channel 0 interrupt periodically, for the scheduler's tick.
void x86_irq_chip_set(struct x86_irq_chip *chip)
Sets the system's interrupt controller.
const char * x86_irq_chip_name(void)
Returns the name of the system's interrupt controller.
int x86_apic_setup(void)
Sets up the APIC to bring the interrupts, if the CPU has one, the MADT describes it,...
int x86_pit_setup(struct ioaddr *io)
Sets where the PIT's ports are.
int x86_cmos_setup(struct ioaddr *ioaddr)
Sets where the CMOS's ports are.
int pci_host_set(struct pci_host *h)
Sets the platform's host bridge, from platform_init().
int printk(const char *fmt,...)
Writes a kernel message, to the message buffer and the consoles.
An installed handler, on its interrupt's list.
Where a device's registers are.
The host bridge, which the platform describes (platform_init() sets it): how its configuration space ...