Remove amd64_ platform prefix
This commit is contained in:
@@ -62,33 +62,36 @@ ALIGNED (16) static volatile struct idt_entry idt_entries[IDT_ENTRIES_MAX];
|
||||
static volatile struct idt idt;
|
||||
|
||||
/* Remaps and disables old 8259 PIC, since we'll be using APIC. */
|
||||
static void amd64_init_pic (void) {
|
||||
#define IO_OP(fn, ...) \
|
||||
fn (__VA_ARGS__); \
|
||||
amd64_io_wait ()
|
||||
static void pic_init (void) {
|
||||
outb (PIC1_CMD, (ICW1_INIT | ICW1_ICW4));
|
||||
io_wait ();
|
||||
outb (PIC2_CMD, (ICW1_INIT | ICW1_ICW4));
|
||||
io_wait ();
|
||||
|
||||
IO_OP (amd64_io_outb, PIC1_CMD, (ICW1_INIT | ICW1_ICW4));
|
||||
IO_OP (amd64_io_outb, PIC2_CMD, (ICW1_INIT | ICW1_ICW4));
|
||||
outb (PIC1_DATA, 0x20);
|
||||
io_wait ();
|
||||
outb (PIC2_DATA, 0x28);
|
||||
io_wait ();
|
||||
|
||||
IO_OP (amd64_io_outb, PIC1_DATA, 0x20);
|
||||
IO_OP (amd64_io_outb, PIC2_DATA, 0x28);
|
||||
outb (PIC1_DATA, (1 << CASCADE_IRQ));
|
||||
io_wait ();
|
||||
outb (PIC2_DATA, 2);
|
||||
io_wait ();
|
||||
|
||||
IO_OP (amd64_io_outb, PIC1_DATA, (1 << CASCADE_IRQ));
|
||||
IO_OP (amd64_io_outb, PIC2_DATA, 2);
|
||||
|
||||
IO_OP (amd64_io_outb, PIC1_DATA, ICW4_8086);
|
||||
IO_OP (amd64_io_outb, PIC2_DATA, ICW4_8086);
|
||||
outb (PIC1_DATA, ICW4_8086);
|
||||
io_wait ();
|
||||
outb (PIC2_DATA, ICW4_8086);
|
||||
io_wait ();
|
||||
|
||||
/* Disable */
|
||||
IO_OP (amd64_io_outb, PIC1_DATA, 0xFF);
|
||||
IO_OP (amd64_io_outb, PIC2_DATA, 0xFF);
|
||||
|
||||
#undef IO_OP
|
||||
outb (PIC1_DATA, 0xFF);
|
||||
io_wait ();
|
||||
outb (PIC2_DATA, 0xFF);
|
||||
io_wait ();
|
||||
}
|
||||
|
||||
/* Set IDT entry */
|
||||
static void amd64_idt_set (volatile struct idt_entry* ent, uint64_t handler, uint8_t flags,
|
||||
uint8_t ist) {
|
||||
static void idt_set (volatile struct idt_entry* ent, uint64_t handler, uint8_t flags, uint8_t ist) {
|
||||
ent->intrlow = (handler & 0xFFFF);
|
||||
ent->kernel_cs = GDT_KCODE;
|
||||
ent->ist = ist;
|
||||
@@ -99,15 +102,15 @@ static void amd64_idt_set (volatile struct idt_entry* ent, uint64_t handler, uin
|
||||
}
|
||||
|
||||
/* Load the IDT */
|
||||
void amd64_load_idt (void) { __asm__ volatile ("lidt %0" ::"m"(idt)); }
|
||||
void idt_load (void) { __asm__ volatile ("lidt %0" ::"m"(idt)); }
|
||||
|
||||
/* Initialize IDT entries */
|
||||
static void amd64_idt_init (void) {
|
||||
static void idt_init (void) {
|
||||
memset ((void*)idt_entries, 0, sizeof (idt_entries));
|
||||
|
||||
#define IDT_ENTRY(n, ist) \
|
||||
extern void amd64_intr##n (void); \
|
||||
amd64_idt_set (&idt_entries[(n)], (uint64_t)&amd64_intr##n, 0x8E, (ist))
|
||||
extern void intr##n (void); \
|
||||
idt_set (&idt_entries[(n)], (uint64_t)&intr##n, 0x8E, (ist))
|
||||
/* clang-format off */
|
||||
IDT_ENTRY (0, 0); IDT_ENTRY (1, 0); IDT_ENTRY (2, 0); IDT_ENTRY (3, 0);
|
||||
IDT_ENTRY (4, 0); IDT_ENTRY (5, 0); IDT_ENTRY (6, 0); IDT_ENTRY (7, 0);
|
||||
@@ -131,11 +134,11 @@ static void amd64_idt_init (void) {
|
||||
idt.limit = sizeof (idt_entries) - 1;
|
||||
idt.base = (uint64_t)idt_entries;
|
||||
|
||||
amd64_load_idt ();
|
||||
idt_load ();
|
||||
}
|
||||
|
||||
/* Handle CPU exception and dump registers. If incoming CS has CPL3, kill the process. */
|
||||
static void amd64_intr_exception (struct saved_regs* regs) {
|
||||
static void intr_exception (struct saved_regs* regs) {
|
||||
DEBUG ("cpu exception %lu (%lu)\n", regs->trap, regs->error);
|
||||
|
||||
uint64_t cr2;
|
||||
@@ -169,8 +172,8 @@ static void amd64_intr_exception (struct saved_regs* regs) {
|
||||
}
|
||||
|
||||
/* Handle incoming interrupt, dispatch IRQ handlers. */
|
||||
void amd64_intr_handler (void* stack_ptr) {
|
||||
amd64_load_kernel_cr3 ();
|
||||
void intr_handler (void* stack_ptr) {
|
||||
load_kernel_cr3 ();
|
||||
|
||||
struct saved_regs* regs = stack_ptr;
|
||||
|
||||
@@ -184,9 +187,9 @@ void amd64_intr_handler (void* stack_ptr) {
|
||||
spin_unlock (&thiscpu->lock);
|
||||
|
||||
if (regs->trap <= 31) {
|
||||
amd64_intr_exception (regs);
|
||||
intr_exception (regs);
|
||||
} else {
|
||||
amd64_lapic_eoi ();
|
||||
lapic_eoi ();
|
||||
|
||||
struct irq* irq = irq_find (regs->trap);
|
||||
|
||||
@@ -202,7 +205,7 @@ void amd64_intr_handler (void* stack_ptr) {
|
||||
}
|
||||
|
||||
/* Initialize interrupts */
|
||||
void amd64_intr_init (void) {
|
||||
amd64_init_pic ();
|
||||
amd64_idt_init ();
|
||||
void intr_init (void) {
|
||||
pic_init ();
|
||||
idt_init ();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user