From ffe5b07d8341a9bffb307e07376fc21dd9b11063 Mon Sep 17 00:00:00 2001 From: Aren Elchinyan Date: Thu, 14 Dec 2023 11:24:22 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D1=87=D0=B8=D0=BA=20=D0=BF=D1=80=D0=B5=D1=80=D1=8B=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20=D1=81=D0=BD=D0=BE=D0=B2=D0=B0=20=D1=80?= =?UTF-8?q?=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/arch/idt.c | 136 +- kernel/arch/idt.h | 111 +- kernel/arch/idt_stubs.s | 2629 ++++++++++++++++++++------------------- kernel/arch/pic.c | 28 + 4 files changed, 1445 insertions(+), 1459 deletions(-) create mode 100644 kernel/arch/pic.c diff --git a/kernel/arch/idt.c b/kernel/arch/idt.c index b8f15e0..cb04f76 100644 --- a/kernel/arch/idt.c +++ b/kernel/arch/idt.c @@ -13,104 +13,72 @@ #include #include -static struct idt_desc IDT[IDT_SIZE] __attribute__((aligned(16))); -struct idt_ptr IDT_POINT = { .limit = sizeof(IDT) - 1, .base = (uint64_t)IDT }; +static inline void idt_load( ) { + asm volatile("lidt %0" : : "m"(idtr)); +} -const char *exception_names[] = { "Деление на ноль", - "Отладка", - "NMI", - "Точка останова", - "Переполнение", - "Выход за границы", - "Недопустимая операция", - "Устройство недоступно", - "Двойное исключение", - NO_NAME, - "Недопустимый TSS", - "Сегмент не присутствует", - "Ошибка сегмента стека", - "Общая защитная ошибка", - "Ошибка страницы", - NO_NAME, - "x87 исключение", - "Проверка выравнивания", - "Ошибка машины", - "SIMD исключение", - "Виртуализация", - NO_NAME, - NO_NAME, - NO_NAME, - NO_NAME, - NO_NAME, - NO_NAME, - NO_NAME, - NO_NAME, - "Безопасность" }; +static void encode_idt_entry(uint8_t vector, void *handler, uint8_t flags) { + uint64_t ptr = (uint64_t)handler; -void exception_handler(struct frame state) { - LOG("\nПОЛУЧЕНО ИСКЛЮЧЕНИЕ: %s\n", exception_names[state.int_number]); + idt[vector].offset_16 = (uint16_t)ptr; + idt[vector].selector = 0x28; + idt[vector].ist = 0; + idt[vector].flags = flags; + idt[vector].offset_middle_16 = (uint16_t)(ptr >> 16); + idt[vector].offset_high_32 = (uint32_t)(ptr >> 32); + idt[vector].reserved = 0; +} - uintptr_t rsp = state.rsp; +static void exception_handler(struct frame state) { + fb_printf("\nПОЛУЧЕНО ИСКЛЮЧЕНИЕ: %s\n", exception_names[state.int_number]); - const uintptr_t stack_bottom = rsp & ~((uintptr_t)4096 - 1); - const uintptr_t stack_top = stack_bottom + 4096; - - LOG(" RAX=%x RBX=%x\n" - " RCX=%x RDX=%x\n" - " RSI=%x RDI=%x\n" - " RBP=%x RSP=%x\n" - " R08=%x R09=%x\n" - " R10=%x R11=%x\n" - " R12=%x R13=%x\n" - " R14=%x R15=%x\n" - " RIP=%x RFLAGS=%x\n" - " CS=%x SS=%x\n" - " ERR=%x INT=%u", - state.rax, state.rbx, state.rcx, state.rdx, state.rsi, state.rdi, state.rbp, state.rsp, state.r8, state.r9, - state.r10, state.r11, state.r12, state.r13, state.r14, state.r15, state.rip, state.rflags, state.cs, state.ss, - state.err, state.int_number); - LOG("stack_top = %x\n", stack_top); + fb_printf(" RAX=%x RBX=%x\n" + " RCX=%x RDX=%x\n" + " RSI=%x RDI=%x\n" + " RBP=%x RSP=%x\n" + " R08=%x R09=%x\n" + " R10=%x R11=%x\n" + " R12=%x R13=%x\n" + " R14=%x R15=%x\n" + " RIP=%x RFLAGS=%x\n" + " CS=%x SS=%x\n" + " ERR=%x INT=%u", + state.rax, state.rbx, state.rcx, state.rdx, state.rsi, state.rdi, state.rbp, state.rsp, state.r8, + state.r9, state.r10, state.r11, state.r12, state.r13, state.r14, state.r15, state.rip, state.rflags, + state.cs, state.ss, state.err, state.int_number); asm volatile("cli; hlt"); } -static void idt_desc_setup(struct idt_desc *desc, unsigned sel, uintptr_t offs, unsigned flags) { - desc->offs0 = offs & 0xfffful; - desc->offs1 = (offs >> 16) & 0xfffful; - desc->offs2 = (offs >> 32) & 0xfffffffful; - - desc->sel = sel; - desc->flags = flags; - desc->_reserved = 0; -} - -static void idt_load( ) { - struct idt_ptr *ptr = &IDT_POINT; - asm volatile("lidt %0" : : "m"(*ptr)); -} - -void idt_set_int(uint8_t vector, void *int_handler) { - idt_desc_setup(&IDT[vector], KERNEL_CS, (uintptr_t)int_handler, IDT_INTERRUPT_FLAGS); - idt_load( ); +void isr_generic(struct frame state) { + if (state.int_number < 32) { + exception_handler(state); + } else { + // LOG("Обработка прерывания %u\n", state.int_number); + isr[state.int_number](&state); + outb(0x20, 0x20); + } } void idt_init( ) { - asm volatile("sti"); + asm volatile("cli"); + idtr = (idt_ptr_t){ .limit = sizeof(idt) - 1, .base = (uint64_t)idt }; - for (int i = 0; i != IDT_EXCEPTIONS; ++i) { - const uintptr_t handler = (uintptr_t)isr_stubs[i]; - - idt_desc_setup(&IDT[i], KERNEL_CS, handler, IDT_EXCEPTION_FLAGS); + for (uint64_t i = 0; i < 256; i++) { + if (i < 32) { + encode_idt_entry(i, isr_stubs[i], 0x8E); + isr[i] = (void *)exception_handler; + } else { + encode_idt_entry(i, isr_stubs[i], 0x8F); + isr[i] = (void *)isr_generic; + } } - for (int i = IDT_EXCEPTIONS; i != IDT_SIZE; ++i) { - const uintptr_t handler = (uintptr_t)isr_stubs[i]; - - idt_desc_setup(&IDT[i], KERNEL_CS, handler, IDT_INTERRUPT_FLAGS); - } - - idt_desc_setup(&IDT[255], KERNEL_CS, (uintptr_t)isr_stubs[255], IDT_SPURIOUS_FLAGS); - idt_load( ); LOG("IDT инициализирован\n"); +} + +void idt_set_int(uint8_t vector, int_entry_t handler) { + isr[vector] = handler; + idt_load( ); } \ No newline at end of file diff --git a/kernel/arch/idt.h b/kernel/arch/idt.h index 3c732b0..e1ef80b 100644 --- a/kernel/arch/idt.h +++ b/kernel/arch/idt.h @@ -1,72 +1,61 @@ +#include #include #define NO_NAME "Не задано название" -#define KERNEL_CS 0x08 -#define KERNEL_DS 0x10 +#define KERNEL_CODE_SEG 0x08 // Сегмент кода +#define KERNEL_DATA_SEG 0x10 // Сегмент данных -#define IDT_SIZE 256 +#define IDT_SIZE 256 // Количество обработчиков прерываний #define IDT_EXCEPTIONS 32 -#define IDT_DPL(x) (((unsigned)(x)&0x3u) << 13) -#define IDT_KERNEL IDT_DPL(0) - -#define IDT_TYPE(x) (((unsigned)(x)&0xfu) << 8) -#define IDT_INT_GATE IDT_TYPE(0xeu) -#define IDT_TRP_FATE IDT_TYPE(0xfu) - -#define IDT_PRESENT (1u << 15) - -#define IDT_EXCEPTION_FLAGS (IDT_KERNEL | IDT_INT_GATE | IDT_PRESENT) -#define IDT_INTERRUPT_FLAGS (IDT_KERNEL | IDT_INT_GATE | IDT_PRESENT) -#define IDT_SPURIOUS_FLAGS (IDT_KERNEL | IDT_INT_GATE | IDT_PRESENT) - -struct frame { - uint64_t rbp; - uint64_t rbx; - uint64_t r15; - uint64_t r14; - uint64_t r13; - uint64_t r12; - uint64_t r11; - uint64_t r10; - uint64_t r9; - uint64_t r8; - uint64_t rax; - uint64_t rcx; - uint64_t rdx; - uint64_t rsi; - uint64_t rdi; - uint64_t int_number; - uint64_t err; - uint64_t rip; - uint64_t cs; - uint64_t rflags; - uint64_t rsp; - uint64_t ss; -} __attribute__((packed)); - -typedef void (*exception_handler_t)(void); -typedef void (*interrupt_handler_t)(void); - -struct idt_desc { - uint16_t offs0; - uint16_t sel; - uint16_t flags; - uint16_t offs1; - uint32_t offs2; - uint32_t _reserved; -} __attribute__((packed)); - -struct idt_ptr { +typedef struct __attribute__((packed)) { uint16_t limit; uint64_t base; -} __attribute__((packed)); +} idt_ptr_t; -struct int_desc { - interrupt_handler_t handler; - int busy; -}; +typedef struct __attribute__((packed)) { + uint16_t offset_16; + uint16_t selector; + uint8_t ist; + uint8_t flags; + uint16_t offset_middle_16; + uint32_t offset_high_32; + uint32_t reserved; +} idt_gate_t; -typedef void (*int_entry_t)(void); -extern int_entry_t isr_stubs[]; \ No newline at end of file +static idt_gate_t idt[256]; +int_entry_t isr[256]; +extern void *isr_stubs[]; +static idt_ptr_t idtr; + +const char *exception_names[] = { "Деление на ноль", + "Отладка", + "NMI", + "Точка останова", + "Переполнение", + "Выход за границы", + "Недопустимая операция", + "Устройство недоступно", + "Двойное исключение", + NO_NAME, + "Недопустимый TSS", + "Сегмент не присутствует", + "Ошибка сегмента стека", + "Общая защитная ошибка", + "Ошибка страницы", + NO_NAME, + "x87 исключение", + "Проверка выравнивания", + "Ошибка машины", + "SIMD исключение", + "Виртуализация", + NO_NAME, + NO_NAME, + NO_NAME, + NO_NAME, + NO_NAME, + NO_NAME, + NO_NAME, + NO_NAME, + "Безопасность" }; \ No newline at end of file diff --git a/kernel/arch/idt_stubs.s b/kernel/arch/idt_stubs.s index c2935c4..ca4b6a6 100644 --- a/kernel/arch/idt_stubs.s +++ b/kernel/arch/idt_stubs.s @@ -1,1573 +1,1574 @@ - .text - .code64 - .global isr_stubs - .extern exception_handler + .text + .code64 + .global isr_stubs + .extern isr_generic common: - subq $120, %rsp - movq %rbp, 0(%rsp) - movq %rbx, 8(%rsp) - movq %r15, 16(%rsp) - movq %r14, 24(%rsp) - movq %r13, 32(%rsp) - movq %r12, 40(%rsp) - movq %r11, 48(%rsp) - movq %r10, 56(%rsp) - movq %r9, 64(%rsp) - movq %r8, 72(%rsp) - movq %rax, 80(%rsp) - movq %rcx, 88(%rsp) - movq %rdx, 96(%rsp) - movq %rsi, 104(%rsp) - movq %rdi, 112(%rsp) - cld - movq %rsp, %rdi - call exception_handler - movq 0(%rsp), %rbp - movq 8(%rsp), %rbx - movq 16(%rsp), %r15 - movq 24(%rsp), %r14 - movq 32(%rsp), %r13 - movq 40(%rsp), %r12 - movq 48(%rsp), %r11 - movq 56(%rsp), %r10 - movq 64(%rsp), %r9 - movq 72(%rsp), %r8 - movq 80(%rsp), %rax - movq 88(%rsp), %rcx - movq 96(%rsp), %rdx - movq 104(%rsp), %rsi - movq 112(%rsp), %rdi - addq $136, %rsp - iretq - .align 16 + .align 16 + subq $120, %rsp + movq %rbp, 0(%rsp) + movq %rbx, 8(%rsp) + movq %r15, 16(%rsp) + movq %r14, 24(%rsp) + movq %r13, 32(%rsp) + movq %r12, 40(%rsp) + movq %r11, 48(%rsp) + movq %r10, 56(%rsp) + movq %r9, 64(%rsp) + movq %r8, 72(%rsp) + movq %rax, 80(%rsp) + movq %rcx, 88(%rsp) + movq %rdx, 96(%rsp) + movq %rsi, 104(%rsp) + movq %rdi, 112(%rsp) + cld + movq %rsp, %rdi + call isr_generic + movq 0(%rsp), %rbp + movq 8(%rsp), %rbx + movq 16(%rsp), %r15 + movq 24(%rsp), %r14 + movq 32(%rsp), %r13 + movq 40(%rsp), %r12 + movq 48(%rsp), %r11 + movq 56(%rsp), %r10 + movq 64(%rsp), %r9 + movq 72(%rsp), %r8 + movq 80(%rsp), %rax + movq 88(%rsp), %rcx + movq 96(%rsp), %rdx + movq 104(%rsp), %rsi + movq 112(%rsp), %rdi + addq $136, %rsp + sti + iretq entry0: - pushq $0 - pushq $0 - jmp common - .align 16 + pushq $0 + pushq $0 + jmp common + .align 16 entry1: - pushq $0 - pushq $1 - jmp common - .align 16 + pushq $0 + pushq $1 + jmp common + .align 16 entry2: - pushq $0 - pushq $2 - jmp common - .align 16 + pushq $0 + pushq $2 + jmp common + .align 16 entry3: - pushq $0 - pushq $3 - jmp common - .align 16 + pushq $0 + pushq $3 + jmp common + .align 16 entry4: - pushq $0 - pushq $4 - jmp common - .align 16 + pushq $0 + pushq $4 + jmp common + .align 16 entry5: - pushq $0 - pushq $5 - jmp common - .align 16 + pushq $0 + pushq $5 + jmp common + .align 16 entry6: - pushq $0 - pushq $6 - jmp common - .align 16 + pushq $0 + pushq $6 + jmp common + .align 16 entry7: - pushq $0 - pushq $7 - jmp common - .align 16 + pushq $0 + pushq $7 + jmp common + .align 16 entry8: - pushq $8 - jmp common - .align 16 + pushq $8 + jmp common + .align 16 entry9: - pushq $0 - pushq $9 - jmp common - .align 16 + pushq $0 + pushq $9 + jmp common + .align 16 entry10: - pushq $10 - jmp common - .align 16 + pushq $10 + jmp common + .align 16 entry11: - pushq $11 - jmp common - .align 16 + pushq $11 + jmp common + .align 16 entry12: - pushq $12 - jmp common - .align 16 + pushq $12 + jmp common + .align 16 entry13: - pushq $13 - jmp common - .align 16 + pushq $13 + jmp common + .align 16 entry14: - pushq $14 - jmp common - .align 16 + pushq $14 + jmp common + .align 16 entry15: - pushq $0 - pushq $15 - jmp common - .align 16 + pushq $0 + pushq $15 + jmp common + .align 16 entry16: - pushq $0 - pushq $16 - jmp common - .align 16 + pushq $0 + pushq $16 + jmp common + .align 16 entry17: - pushq $17 - jmp common - .align 16 + pushq $17 + jmp common + .align 16 entry18: - pushq $0 - pushq $18 - jmp common - .align 16 + pushq $0 + pushq $18 + jmp common + .align 16 entry19: - pushq $0 - pushq $19 - jmp common - .align 16 + pushq $0 + pushq $19 + jmp common + .align 16 entry20: - pushq $0 - pushq $20 - jmp common - .align 16 + pushq $0 + pushq $20 + jmp common + .align 16 entry21: - pushq $0 - pushq $21 - jmp common - .align 16 + pushq $0 + pushq $21 + jmp common + .align 16 entry22: - pushq $0 - pushq $22 - jmp common - .align 16 + pushq $0 + pushq $22 + jmp common + .align 16 entry23: - pushq $0 - pushq $23 - jmp common - .align 16 + pushq $0 + pushq $23 + jmp common + .align 16 entry24: - pushq $0 - pushq $24 - jmp common - .align 16 + pushq $0 + pushq $24 + jmp common + .align 16 entry25: - pushq $0 - pushq $25 - jmp common - .align 16 + pushq $0 + pushq $25 + jmp common + .align 16 entry26: - pushq $0 - pushq $26 - jmp common - .align 16 + pushq $0 + pushq $26 + jmp common + .align 16 entry27: - pushq $0 - pushq $27 - jmp common - .align 16 + pushq $0 + pushq $27 + jmp common + .align 16 entry28: - pushq $0 - pushq $28 - jmp common - .align 16 + pushq $0 + pushq $28 + jmp common + .align 16 entry29: - pushq $0 - pushq $29 - jmp common - .align 16 + pushq $0 + pushq $29 + jmp common + .align 16 entry30: - pushq $0 - pushq $30 - jmp common - .align 16 + pushq $0 + pushq $30 + jmp common + .align 16 entry31: - pushq $0 - pushq $31 - jmp common - .align 16 + pushq $0 + pushq $31 + jmp common + .align 16 entry32: - pushq $0 - pushq $32 - jmp common - .align 16 + pushq $0 + pushq $32 + jmp common + .align 16 entry33: - pushq $0 - pushq $33 - jmp common - .align 16 + pushq $0 + pushq $33 + jmp common + .align 16 entry34: - pushq $0 - pushq $34 - jmp common - .align 16 + pushq $0 + pushq $34 + jmp common + .align 16 entry35: - pushq $0 - pushq $35 - jmp common - .align 16 + pushq $0 + pushq $35 + jmp common + .align 16 entry36: - pushq $0 - pushq $36 - jmp common - .align 16 + pushq $0 + pushq $36 + jmp common + .align 16 entry37: - pushq $0 - pushq $37 - jmp common - .align 16 + pushq $0 + pushq $37 + jmp common + .align 16 entry38: - pushq $0 - pushq $38 - jmp common - .align 16 + pushq $0 + pushq $38 + jmp common + .align 16 entry39: - pushq $0 - pushq $39 - jmp common - .align 16 + pushq $0 + pushq $39 + jmp common + .align 16 entry40: - pushq $0 - pushq $40 - jmp common - .align 16 + pushq $0 + pushq $40 + jmp common + .align 16 entry41: - pushq $0 - pushq $41 - jmp common - .align 16 + pushq $0 + pushq $41 + jmp common + .align 16 entry42: - pushq $0 - pushq $42 - jmp common - .align 16 + pushq $0 + pushq $42 + jmp common + .align 16 entry43: - pushq $0 - pushq $43 - jmp common - .align 16 + pushq $0 + pushq $43 + jmp common + .align 16 entry44: - pushq $0 - pushq $44 - jmp common - .align 16 + pushq $0 + pushq $44 + jmp common + .align 16 entry45: - pushq $0 - pushq $45 - jmp common - .align 16 + pushq $0 + pushq $45 + jmp common + .align 16 entry46: - pushq $0 - pushq $46 - jmp common - .align 16 + pushq $0 + pushq $46 + jmp common + .align 16 entry47: - pushq $0 - pushq $47 - jmp common - .align 16 + pushq $0 + pushq $47 + jmp common + .align 16 entry48: - pushq $0 - pushq $48 - jmp common - .align 16 + pushq $0 + pushq $48 + jmp common + .align 16 entry49: - pushq $0 - pushq $49 - jmp common - .align 16 + pushq $0 + pushq $49 + jmp common + .align 16 entry50: - pushq $0 - pushq $50 - jmp common - .align 16 + pushq $0 + pushq $50 + jmp common + .align 16 entry51: - pushq $0 - pushq $51 - jmp common - .align 16 + pushq $0 + pushq $51 + jmp common + .align 16 entry52: - pushq $0 - pushq $52 - jmp common - .align 16 + pushq $0 + pushq $52 + jmp common + .align 16 entry53: - pushq $0 - pushq $53 - jmp common - .align 16 + pushq $0 + pushq $53 + jmp common + .align 16 entry54: - pushq $0 - pushq $54 - jmp common - .align 16 + pushq $0 + pushq $54 + jmp common + .align 16 entry55: - pushq $0 - pushq $55 - jmp common - .align 16 + pushq $0 + pushq $55 + jmp common + .align 16 entry56: - pushq $0 - pushq $56 - jmp common - .align 16 + pushq $0 + pushq $56 + jmp common + .align 16 entry57: - pushq $0 - pushq $57 - jmp common - .align 16 + pushq $0 + pushq $57 + jmp common + .align 16 entry58: - pushq $0 - pushq $58 - jmp common - .align 16 + pushq $0 + pushq $58 + jmp common + .align 16 entry59: - pushq $0 - pushq $59 - jmp common - .align 16 + pushq $0 + pushq $59 + jmp common + .align 16 entry60: - pushq $0 - pushq $60 - jmp common - .align 16 + pushq $0 + pushq $60 + jmp common + .align 16 entry61: - pushq $0 - pushq $61 - jmp common - .align 16 + pushq $0 + pushq $61 + jmp common + .align 16 entry62: - pushq $0 - pushq $62 - jmp common - .align 16 + pushq $0 + pushq $62 + jmp common + .align 16 entry63: - pushq $0 - pushq $63 - jmp common - .align 16 + pushq $0 + pushq $63 + jmp common + .align 16 entry64: - pushq $0 - pushq $64 - jmp common - .align 16 + pushq $0 + pushq $64 + jmp common + .align 16 entry65: - pushq $0 - pushq $65 - jmp common - .align 16 + pushq $0 + pushq $65 + jmp common + .align 16 entry66: - pushq $0 - pushq $66 - jmp common - .align 16 + pushq $0 + pushq $66 + jmp common + .align 16 entry67: - pushq $0 - pushq $67 - jmp common - .align 16 + pushq $0 + pushq $67 + jmp common + .align 16 entry68: - pushq $0 - pushq $68 - jmp common - .align 16 + pushq $0 + pushq $68 + jmp common + .align 16 entry69: - pushq $0 - pushq $69 - jmp common - .align 16 + pushq $0 + pushq $69 + jmp common + .align 16 entry70: - pushq $0 - pushq $70 - jmp common - .align 16 + pushq $0 + pushq $70 + jmp common + .align 16 entry71: - pushq $0 - pushq $71 - jmp common - .align 16 + pushq $0 + pushq $71 + jmp common + .align 16 entry72: - pushq $0 - pushq $72 - jmp common - .align 16 + pushq $0 + pushq $72 + jmp common + .align 16 entry73: - pushq $0 - pushq $73 - jmp common - .align 16 + pushq $0 + pushq $73 + jmp common + .align 16 entry74: - pushq $0 - pushq $74 - jmp common - .align 16 + pushq $0 + pushq $74 + jmp common + .align 16 entry75: - pushq $0 - pushq $75 - jmp common - .align 16 + pushq $0 + pushq $75 + jmp common + .align 16 entry76: - pushq $0 - pushq $76 - jmp common - .align 16 + pushq $0 + pushq $76 + jmp common + .align 16 entry77: - pushq $0 - pushq $77 - jmp common - .align 16 + pushq $0 + pushq $77 + jmp common + .align 16 entry78: - pushq $0 - pushq $78 - jmp common - .align 16 + pushq $0 + pushq $78 + jmp common + .align 16 entry79: - pushq $0 - pushq $79 - jmp common - .align 16 + pushq $0 + pushq $79 + jmp common + .align 16 entry80: - pushq $0 - pushq $80 - jmp common - .align 16 + pushq $0 + pushq $80 + jmp common + .align 16 entry81: - pushq $0 - pushq $81 - jmp common - .align 16 + pushq $0 + pushq $81 + jmp common + .align 16 entry82: - pushq $0 - pushq $82 - jmp common - .align 16 + pushq $0 + pushq $82 + jmp common + .align 16 entry83: - pushq $0 - pushq $83 - jmp common - .align 16 + pushq $0 + pushq $83 + jmp common + .align 16 entry84: - pushq $0 - pushq $84 - jmp common - .align 16 + pushq $0 + pushq $84 + jmp common + .align 16 entry85: - pushq $0 - pushq $85 - jmp common - .align 16 + pushq $0 + pushq $85 + jmp common + .align 16 entry86: - pushq $0 - pushq $86 - jmp common - .align 16 + pushq $0 + pushq $86 + jmp common + .align 16 entry87: - pushq $0 - pushq $87 - jmp common - .align 16 + pushq $0 + pushq $87 + jmp common + .align 16 entry88: - pushq $0 - pushq $88 - jmp common - .align 16 + pushq $0 + pushq $88 + jmp common + .align 16 entry89: - pushq $0 - pushq $89 - jmp common - .align 16 + pushq $0 + pushq $89 + jmp common + .align 16 entry90: - pushq $0 - pushq $90 - jmp common - .align 16 + pushq $0 + pushq $90 + jmp common + .align 16 entry91: - pushq $0 - pushq $91 - jmp common - .align 16 + pushq $0 + pushq $91 + jmp common + .align 16 entry92: - pushq $0 - pushq $92 - jmp common - .align 16 + pushq $0 + pushq $92 + jmp common + .align 16 entry93: - pushq $0 - pushq $93 - jmp common - .align 16 + pushq $0 + pushq $93 + jmp common + .align 16 entry94: - pushq $0 - pushq $94 - jmp common - .align 16 + pushq $0 + pushq $94 + jmp common + .align 16 entry95: - pushq $0 - pushq $95 - jmp common - .align 16 + pushq $0 + pushq $95 + jmp common + .align 16 entry96: - pushq $0 - pushq $96 - jmp common - .align 16 + pushq $0 + pushq $96 + jmp common + .align 16 entry97: - pushq $0 - pushq $97 - jmp common - .align 16 + pushq $0 + pushq $97 + jmp common + .align 16 entry98: - pushq $0 - pushq $98 - jmp common - .align 16 + pushq $0 + pushq $98 + jmp common + .align 16 entry99: - pushq $0 - pushq $99 - jmp common - .align 16 + pushq $0 + pushq $99 + jmp common + .align 16 entry100: - pushq $0 - pushq $100 - jmp common - .align 16 + pushq $0 + pushq $100 + jmp common + .align 16 entry101: - pushq $0 - pushq $101 - jmp common - .align 16 + pushq $0 + pushq $101 + jmp common + .align 16 entry102: - pushq $0 - pushq $102 - jmp common - .align 16 + pushq $0 + pushq $102 + jmp common + .align 16 entry103: - pushq $0 - pushq $103 - jmp common - .align 16 + pushq $0 + pushq $103 + jmp common + .align 16 entry104: - pushq $0 - pushq $104 - jmp common - .align 16 + pushq $0 + pushq $104 + jmp common + .align 16 entry105: - pushq $0 - pushq $105 - jmp common - .align 16 + pushq $0 + pushq $105 + jmp common + .align 16 entry106: - pushq $0 - pushq $106 - jmp common - .align 16 + pushq $0 + pushq $106 + jmp common + .align 16 entry107: - pushq $0 - pushq $107 - jmp common - .align 16 + pushq $0 + pushq $107 + jmp common + .align 16 entry108: - pushq $0 - pushq $108 - jmp common - .align 16 + pushq $0 + pushq $108 + jmp common + .align 16 entry109: - pushq $0 - pushq $109 - jmp common - .align 16 + pushq $0 + pushq $109 + jmp common + .align 16 entry110: - pushq $0 - pushq $110 - jmp common - .align 16 + pushq $0 + pushq $110 + jmp common + .align 16 entry111: - pushq $0 - pushq $111 - jmp common - .align 16 + pushq $0 + pushq $111 + jmp common + .align 16 entry112: - pushq $0 - pushq $112 - jmp common - .align 16 + pushq $0 + pushq $112 + jmp common + .align 16 entry113: - pushq $0 - pushq $113 - jmp common - .align 16 + pushq $0 + pushq $113 + jmp common + .align 16 entry114: - pushq $0 - pushq $114 - jmp common - .align 16 + pushq $0 + pushq $114 + jmp common + .align 16 entry115: - pushq $0 - pushq $115 - jmp common - .align 16 + pushq $0 + pushq $115 + jmp common + .align 16 entry116: - pushq $0 - pushq $116 - jmp common - .align 16 + pushq $0 + pushq $116 + jmp common + .align 16 entry117: - pushq $0 - pushq $117 - jmp common - .align 16 + pushq $0 + pushq $117 + jmp common + .align 16 entry118: - pushq $0 - pushq $118 - jmp common - .align 16 + pushq $0 + pushq $118 + jmp common + .align 16 entry119: - pushq $0 - pushq $119 - jmp common - .align 16 + pushq $0 + pushq $119 + jmp common + .align 16 entry120: - pushq $0 - pushq $120 - jmp common - .align 16 + pushq $0 + pushq $120 + jmp common + .align 16 entry121: - pushq $0 - pushq $121 - jmp common - .align 16 + pushq $0 + pushq $121 + jmp common + .align 16 entry122: - pushq $0 - pushq $122 - jmp common - .align 16 + pushq $0 + pushq $122 + jmp common + .align 16 entry123: - pushq $0 - pushq $123 - jmp common - .align 16 + pushq $0 + pushq $123 + jmp common + .align 16 entry124: - pushq $0 - pushq $124 - jmp common - .align 16 + pushq $0 + pushq $124 + jmp common + .align 16 entry125: - pushq $0 - pushq $125 - jmp common - .align 16 + pushq $0 + pushq $125 + jmp common + .align 16 entry126: - pushq $0 - pushq $126 - jmp common - .align 16 + pushq $0 + pushq $126 + jmp common + .align 16 entry127: - pushq $0 - pushq $127 - jmp common - .align 16 + pushq $0 + pushq $127 + jmp common + .align 16 entry128: - pushq $0 - pushq $128 - jmp common - .align 16 + pushq $0 + pushq $128 + jmp common + .align 16 entry129: - pushq $0 - pushq $129 - jmp common - .align 16 + pushq $0 + pushq $129 + jmp common + .align 16 entry130: - pushq $0 - pushq $130 - jmp common - .align 16 + pushq $0 + pushq $130 + jmp common + .align 16 entry131: - pushq $0 - pushq $131 - jmp common - .align 16 + pushq $0 + pushq $131 + jmp common + .align 16 entry132: - pushq $0 - pushq $132 - jmp common - .align 16 + pushq $0 + pushq $132 + jmp common + .align 16 entry133: - pushq $0 - pushq $133 - jmp common - .align 16 + pushq $0 + pushq $133 + jmp common + .align 16 entry134: - pushq $0 - pushq $134 - jmp common - .align 16 + pushq $0 + pushq $134 + jmp common + .align 16 entry135: - pushq $0 - pushq $135 - jmp common - .align 16 + pushq $0 + pushq $135 + jmp common + .align 16 entry136: - pushq $0 - pushq $136 - jmp common - .align 16 + pushq $0 + pushq $136 + jmp common + .align 16 entry137: - pushq $0 - pushq $137 - jmp common - .align 16 + pushq $0 + pushq $137 + jmp common + .align 16 entry138: - pushq $0 - pushq $138 - jmp common - .align 16 + pushq $0 + pushq $138 + jmp common + .align 16 entry139: - pushq $0 - pushq $139 - jmp common - .align 16 + pushq $0 + pushq $139 + jmp common + .align 16 entry140: - pushq $0 - pushq $140 - jmp common - .align 16 + pushq $0 + pushq $140 + jmp common + .align 16 entry141: - pushq $0 - pushq $141 - jmp common - .align 16 + pushq $0 + pushq $141 + jmp common + .align 16 entry142: - pushq $0 - pushq $142 - jmp common - .align 16 + pushq $0 + pushq $142 + jmp common + .align 16 entry143: - pushq $0 - pushq $143 - jmp common - .align 16 + pushq $0 + pushq $143 + jmp common + .align 16 entry144: - pushq $0 - pushq $144 - jmp common - .align 16 + pushq $0 + pushq $144 + jmp common + .align 16 entry145: - pushq $0 - pushq $145 - jmp common - .align 16 + pushq $0 + pushq $145 + jmp common + .align 16 entry146: - pushq $0 - pushq $146 - jmp common - .align 16 + pushq $0 + pushq $146 + jmp common + .align 16 entry147: - pushq $0 - pushq $147 - jmp common - .align 16 + pushq $0 + pushq $147 + jmp common + .align 16 entry148: - pushq $0 - pushq $148 - jmp common - .align 16 + pushq $0 + pushq $148 + jmp common + .align 16 entry149: - pushq $0 - pushq $149 - jmp common - .align 16 + pushq $0 + pushq $149 + jmp common + .align 16 entry150: - pushq $0 - pushq $150 - jmp common - .align 16 + pushq $0 + pushq $150 + jmp common + .align 16 entry151: - pushq $0 - pushq $151 - jmp common - .align 16 + pushq $0 + pushq $151 + jmp common + .align 16 entry152: - pushq $0 - pushq $152 - jmp common - .align 16 + pushq $0 + pushq $152 + jmp common + .align 16 entry153: - pushq $0 - pushq $153 - jmp common - .align 16 + pushq $0 + pushq $153 + jmp common + .align 16 entry154: - pushq $0 - pushq $154 - jmp common - .align 16 + pushq $0 + pushq $154 + jmp common + .align 16 entry155: - pushq $0 - pushq $155 - jmp common - .align 16 + pushq $0 + pushq $155 + jmp common + .align 16 entry156: - pushq $0 - pushq $156 - jmp common - .align 16 + pushq $0 + pushq $156 + jmp common + .align 16 entry157: - pushq $0 - pushq $157 - jmp common - .align 16 + pushq $0 + pushq $157 + jmp common + .align 16 entry158: - pushq $0 - pushq $158 - jmp common - .align 16 + pushq $0 + pushq $158 + jmp common + .align 16 entry159: - pushq $0 - pushq $159 - jmp common - .align 16 + pushq $0 + pushq $159 + jmp common + .align 16 entry160: - pushq $0 - pushq $160 - jmp common - .align 16 + pushq $0 + pushq $160 + jmp common + .align 16 entry161: - pushq $0 - pushq $161 - jmp common - .align 16 + pushq $0 + pushq $161 + jmp common + .align 16 entry162: - pushq $0 - pushq $162 - jmp common - .align 16 + pushq $0 + pushq $162 + jmp common + .align 16 entry163: - pushq $0 - pushq $163 - jmp common - .align 16 + pushq $0 + pushq $163 + jmp common + .align 16 entry164: - pushq $0 - pushq $164 - jmp common - .align 16 + pushq $0 + pushq $164 + jmp common + .align 16 entry165: - pushq $0 - pushq $165 - jmp common - .align 16 + pushq $0 + pushq $165 + jmp common + .align 16 entry166: - pushq $0 - pushq $166 - jmp common - .align 16 + pushq $0 + pushq $166 + jmp common + .align 16 entry167: - pushq $0 - pushq $167 - jmp common - .align 16 + pushq $0 + pushq $167 + jmp common + .align 16 entry168: - pushq $0 - pushq $168 - jmp common - .align 16 + pushq $0 + pushq $168 + jmp common + .align 16 entry169: - pushq $0 - pushq $169 - jmp common - .align 16 + pushq $0 + pushq $169 + jmp common + .align 16 entry170: - pushq $0 - pushq $170 - jmp common - .align 16 + pushq $0 + pushq $170 + jmp common + .align 16 entry171: - pushq $0 - pushq $171 - jmp common - .align 16 + pushq $0 + pushq $171 + jmp common + .align 16 entry172: - pushq $0 - pushq $172 - jmp common - .align 16 + pushq $0 + pushq $172 + jmp common + .align 16 entry173: - pushq $0 - pushq $173 - jmp common - .align 16 + pushq $0 + pushq $173 + jmp common + .align 16 entry174: - pushq $0 - pushq $174 - jmp common - .align 16 + pushq $0 + pushq $174 + jmp common + .align 16 entry175: - pushq $0 - pushq $175 - jmp common - .align 16 + pushq $0 + pushq $175 + jmp common + .align 16 entry176: - pushq $0 - pushq $176 - jmp common - .align 16 + pushq $0 + pushq $176 + jmp common + .align 16 entry177: - pushq $0 - pushq $177 - jmp common - .align 16 + pushq $0 + pushq $177 + jmp common + .align 16 entry178: - pushq $0 - pushq $178 - jmp common - .align 16 + pushq $0 + pushq $178 + jmp common + .align 16 entry179: - pushq $0 - pushq $179 - jmp common - .align 16 + pushq $0 + pushq $179 + jmp common + .align 16 entry180: - pushq $0 - pushq $180 - jmp common - .align 16 + pushq $0 + pushq $180 + jmp common + .align 16 entry181: - pushq $0 - pushq $181 - jmp common - .align 16 + pushq $0 + pushq $181 + jmp common + .align 16 entry182: - pushq $0 - pushq $182 - jmp common - .align 16 + pushq $0 + pushq $182 + jmp common + .align 16 entry183: - pushq $0 - pushq $183 - jmp common - .align 16 + pushq $0 + pushq $183 + jmp common + .align 16 entry184: - pushq $0 - pushq $184 - jmp common - .align 16 + pushq $0 + pushq $184 + jmp common + .align 16 entry185: - pushq $0 - pushq $185 - jmp common - .align 16 + pushq $0 + pushq $185 + jmp common + .align 16 entry186: - pushq $0 - pushq $186 - jmp common - .align 16 + pushq $0 + pushq $186 + jmp common + .align 16 entry187: - pushq $0 - pushq $187 - jmp common - .align 16 + pushq $0 + pushq $187 + jmp common + .align 16 entry188: - pushq $0 - pushq $188 - jmp common - .align 16 + pushq $0 + pushq $188 + jmp common + .align 16 entry189: - pushq $0 - pushq $189 - jmp common - .align 16 + pushq $0 + pushq $189 + jmp common + .align 16 entry190: - pushq $0 - pushq $190 - jmp common - .align 16 + pushq $0 + pushq $190 + jmp common + .align 16 entry191: - pushq $0 - pushq $191 - jmp common - .align 16 + pushq $0 + pushq $191 + jmp common + .align 16 entry192: - pushq $0 - pushq $192 - jmp common - .align 16 + pushq $0 + pushq $192 + jmp common + .align 16 entry193: - pushq $0 - pushq $193 - jmp common - .align 16 + pushq $0 + pushq $193 + jmp common + .align 16 entry194: - pushq $0 - pushq $194 - jmp common - .align 16 + pushq $0 + pushq $194 + jmp common + .align 16 entry195: - pushq $0 - pushq $195 - jmp common - .align 16 + pushq $0 + pushq $195 + jmp common + .align 16 entry196: - pushq $0 - pushq $196 - jmp common - .align 16 + pushq $0 + pushq $196 + jmp common + .align 16 entry197: - pushq $0 - pushq $197 - jmp common - .align 16 + pushq $0 + pushq $197 + jmp common + .align 16 entry198: - pushq $0 - pushq $198 - jmp common - .align 16 + pushq $0 + pushq $198 + jmp common + .align 16 entry199: - pushq $0 - pushq $199 - jmp common - .align 16 + pushq $0 + pushq $199 + jmp common + .align 16 entry200: - pushq $0 - pushq $200 - jmp common - .align 16 + pushq $0 + pushq $200 + jmp common + .align 16 entry201: - pushq $0 - pushq $201 - jmp common - .align 16 + pushq $0 + pushq $201 + jmp common + .align 16 entry202: - pushq $0 - pushq $202 - jmp common - .align 16 + pushq $0 + pushq $202 + jmp common + .align 16 entry203: - pushq $0 - pushq $203 - jmp common - .align 16 + pushq $0 + pushq $203 + jmp common + .align 16 entry204: - pushq $0 - pushq $204 - jmp common - .align 16 + pushq $0 + pushq $204 + jmp common + .align 16 entry205: - pushq $0 - pushq $205 - jmp common - .align 16 + pushq $0 + pushq $205 + jmp common + .align 16 entry206: - pushq $0 - pushq $206 - jmp common - .align 16 + pushq $0 + pushq $206 + jmp common + .align 16 entry207: - pushq $0 - pushq $207 - jmp common - .align 16 + pushq $0 + pushq $207 + jmp common + .align 16 entry208: - pushq $0 - pushq $208 - jmp common - .align 16 + pushq $0 + pushq $208 + jmp common + .align 16 entry209: - pushq $0 - pushq $209 - jmp common - .align 16 + pushq $0 + pushq $209 + jmp common + .align 16 entry210: - pushq $0 - pushq $210 - jmp common - .align 16 + pushq $0 + pushq $210 + jmp common + .align 16 entry211: - pushq $0 - pushq $211 - jmp common - .align 16 + pushq $0 + pushq $211 + jmp common + .align 16 entry212: - pushq $0 - pushq $212 - jmp common - .align 16 + pushq $0 + pushq $212 + jmp common + .align 16 entry213: - pushq $0 - pushq $213 - jmp common - .align 16 + pushq $0 + pushq $213 + jmp common + .align 16 entry214: - pushq $0 - pushq $214 - jmp common - .align 16 + pushq $0 + pushq $214 + jmp common + .align 16 entry215: - pushq $0 - pushq $215 - jmp common - .align 16 + pushq $0 + pushq $215 + jmp common + .align 16 entry216: - pushq $0 - pushq $216 - jmp common - .align 16 + pushq $0 + pushq $216 + jmp common + .align 16 entry217: - pushq $0 - pushq $217 - jmp common - .align 16 + pushq $0 + pushq $217 + jmp common + .align 16 entry218: - pushq $0 - pushq $218 - jmp common - .align 16 + pushq $0 + pushq $218 + jmp common + .align 16 entry219: - pushq $0 - pushq $219 - jmp common - .align 16 + pushq $0 + pushq $219 + jmp common + .align 16 entry220: - pushq $0 - pushq $220 - jmp common - .align 16 + pushq $0 + pushq $220 + jmp common + .align 16 entry221: - pushq $0 - pushq $221 - jmp common - .align 16 + pushq $0 + pushq $221 + jmp common + .align 16 entry222: - pushq $0 - pushq $222 - jmp common - .align 16 + pushq $0 + pushq $222 + jmp common + .align 16 entry223: - pushq $0 - pushq $223 - jmp common - .align 16 + pushq $0 + pushq $223 + jmp common + .align 16 entry224: - pushq $0 - pushq $224 - jmp common - .align 16 + pushq $0 + pushq $224 + jmp common + .align 16 entry225: - pushq $0 - pushq $225 - jmp common - .align 16 + pushq $0 + pushq $225 + jmp common + .align 16 entry226: - pushq $0 - pushq $226 - jmp common - .align 16 + pushq $0 + pushq $226 + jmp common + .align 16 entry227: - pushq $0 - pushq $227 - jmp common - .align 16 + pushq $0 + pushq $227 + jmp common + .align 16 entry228: - pushq $0 - pushq $228 - jmp common - .align 16 + pushq $0 + pushq $228 + jmp common + .align 16 entry229: - pushq $0 - pushq $229 - jmp common - .align 16 + pushq $0 + pushq $229 + jmp common + .align 16 entry230: - pushq $0 - pushq $230 - jmp common - .align 16 + pushq $0 + pushq $230 + jmp common + .align 16 entry231: - pushq $0 - pushq $231 - jmp common - .align 16 + pushq $0 + pushq $231 + jmp common + .align 16 entry232: - pushq $0 - pushq $232 - jmp common - .align 16 + pushq $0 + pushq $232 + jmp common + .align 16 entry233: - pushq $0 - pushq $233 - jmp common - .align 16 + pushq $0 + pushq $233 + jmp common + .align 16 entry234: - pushq $0 - pushq $234 - jmp common - .align 16 + pushq $0 + pushq $234 + jmp common + .align 16 entry235: - pushq $0 - pushq $235 - jmp common - .align 16 + pushq $0 + pushq $235 + jmp common + .align 16 entry236: - pushq $0 - pushq $236 - jmp common - .align 16 + pushq $0 + pushq $236 + jmp common + .align 16 entry237: - pushq $0 - pushq $237 - jmp common - .align 16 + pushq $0 + pushq $237 + jmp common + .align 16 entry238: - pushq $0 - pushq $238 - jmp common - .align 16 + pushq $0 + pushq $238 + jmp common + .align 16 entry239: - pushq $0 - pushq $239 - jmp common - .align 16 + pushq $0 + pushq $239 + jmp common + .align 16 entry240: - pushq $0 - pushq $240 - jmp common - .align 16 + pushq $0 + pushq $240 + jmp common + .align 16 entry241: - pushq $0 - pushq $241 - jmp common - .align 16 + pushq $0 + pushq $241 + jmp common + .align 16 entry242: - pushq $0 - pushq $242 - jmp common - .align 16 + pushq $0 + pushq $242 + jmp common + .align 16 entry243: - pushq $0 - pushq $243 - jmp common - .align 16 + pushq $0 + pushq $243 + jmp common + .align 16 entry244: - pushq $0 - pushq $244 - jmp common - .align 16 + pushq $0 + pushq $244 + jmp common + .align 16 entry245: - pushq $0 - pushq $245 - jmp common - .align 16 + pushq $0 + pushq $245 + jmp common + .align 16 entry246: - pushq $0 - pushq $246 - jmp common - .align 16 + pushq $0 + pushq $246 + jmp common + .align 16 entry247: - pushq $0 - pushq $247 - jmp common - .align 16 + pushq $0 + pushq $247 + jmp common + .align 16 entry248: - pushq $0 - pushq $248 - jmp common - .align 16 + pushq $0 + pushq $248 + jmp common + .align 16 entry249: - pushq $0 - pushq $249 - jmp common - .align 16 + pushq $0 + pushq $249 + jmp common + .align 16 entry250: - pushq $0 - pushq $250 - jmp common - .align 16 + pushq $0 + pushq $250 + jmp common + .align 16 entry251: - pushq $0 - pushq $251 - jmp common - .align 16 + pushq $0 + pushq $251 + jmp common + .align 16 entry252: - pushq $0 - pushq $252 - jmp common - .align 16 + pushq $0 + pushq $252 + jmp common + .align 16 entry253: - pushq $0 - pushq $253 - jmp common - .align 16 + pushq $0 + pushq $253 + jmp common + .align 16 entry254: - pushq $0 - pushq $254 - jmp common - .align 16 + pushq $0 + pushq $254 + jmp common + .align 16 entry255: - pushq $0 - pushq $255 - jmp common - .align 16 + pushq $0 + pushq $255 + jmp common + .align 16 isr_stubs: - .quad entry0 - .quad entry1 - .quad entry2 - .quad entry3 - .quad entry4 - .quad entry5 - .quad entry6 - .quad entry7 - .quad entry8 - .quad entry9 - .quad entry10 - .quad entry11 - .quad entry12 - .quad entry13 - .quad entry14 - .quad entry15 - .quad entry16 - .quad entry17 - .quad entry18 - .quad entry19 - .quad entry20 - .quad entry21 - .quad entry22 - .quad entry23 - .quad entry24 - .quad entry25 - .quad entry26 - .quad entry27 - .quad entry28 - .quad entry29 - .quad entry30 - .quad entry31 - .quad entry32 - .quad entry33 - .quad entry34 - .quad entry35 - .quad entry36 - .quad entry37 - .quad entry38 - .quad entry39 - .quad entry40 - .quad entry41 - .quad entry42 - .quad entry43 - .quad entry44 - .quad entry45 - .quad entry46 - .quad entry47 - .quad entry48 - .quad entry49 - .quad entry50 - .quad entry51 - .quad entry52 - .quad entry53 - .quad entry54 - .quad entry55 - .quad entry56 - .quad entry57 - .quad entry58 - .quad entry59 - .quad entry60 - .quad entry61 - .quad entry62 - .quad entry63 - .quad entry64 - .quad entry65 - .quad entry66 - .quad entry67 - .quad entry68 - .quad entry69 - .quad entry70 - .quad entry71 - .quad entry72 - .quad entry73 - .quad entry74 - .quad entry75 - .quad entry76 - .quad entry77 - .quad entry78 - .quad entry79 - .quad entry80 - .quad entry81 - .quad entry82 - .quad entry83 - .quad entry84 - .quad entry85 - .quad entry86 - .quad entry87 - .quad entry88 - .quad entry89 - .quad entry90 - .quad entry91 - .quad entry92 - .quad entry93 - .quad entry94 - .quad entry95 - .quad entry96 - .quad entry97 - .quad entry98 - .quad entry99 - .quad entry100 - .quad entry101 - .quad entry102 - .quad entry103 - .quad entry104 - .quad entry105 - .quad entry106 - .quad entry107 - .quad entry108 - .quad entry109 - .quad entry110 - .quad entry111 - .quad entry112 - .quad entry113 - .quad entry114 - .quad entry115 - .quad entry116 - .quad entry117 - .quad entry118 - .quad entry119 - .quad entry120 - .quad entry121 - .quad entry122 - .quad entry123 - .quad entry124 - .quad entry125 - .quad entry126 - .quad entry127 - .quad entry128 - .quad entry129 - .quad entry130 - .quad entry131 - .quad entry132 - .quad entry133 - .quad entry134 - .quad entry135 - .quad entry136 - .quad entry137 - .quad entry138 - .quad entry139 - .quad entry140 - .quad entry141 - .quad entry142 - .quad entry143 - .quad entry144 - .quad entry145 - .quad entry146 - .quad entry147 - .quad entry148 - .quad entry149 - .quad entry150 - .quad entry151 - .quad entry152 - .quad entry153 - .quad entry154 - .quad entry155 - .quad entry156 - .quad entry157 - .quad entry158 - .quad entry159 - .quad entry160 - .quad entry161 - .quad entry162 - .quad entry163 - .quad entry164 - .quad entry165 - .quad entry166 - .quad entry167 - .quad entry168 - .quad entry169 - .quad entry170 - .quad entry171 - .quad entry172 - .quad entry173 - .quad entry174 - .quad entry175 - .quad entry176 - .quad entry177 - .quad entry178 - .quad entry179 - .quad entry180 - .quad entry181 - .quad entry182 - .quad entry183 - .quad entry184 - .quad entry185 - .quad entry186 - .quad entry187 - .quad entry188 - .quad entry189 - .quad entry190 - .quad entry191 - .quad entry192 - .quad entry193 - .quad entry194 - .quad entry195 - .quad entry196 - .quad entry197 - .quad entry198 - .quad entry199 - .quad entry200 - .quad entry201 - .quad entry202 - .quad entry203 - .quad entry204 - .quad entry205 - .quad entry206 - .quad entry207 - .quad entry208 - .quad entry209 - .quad entry210 - .quad entry211 - .quad entry212 - .quad entry213 - .quad entry214 - .quad entry215 - .quad entry216 - .quad entry217 - .quad entry218 - .quad entry219 - .quad entry220 - .quad entry221 - .quad entry222 - .quad entry223 - .quad entry224 - .quad entry225 - .quad entry226 - .quad entry227 - .quad entry228 - .quad entry229 - .quad entry230 - .quad entry231 - .quad entry232 - .quad entry233 - .quad entry234 - .quad entry235 - .quad entry236 - .quad entry237 - .quad entry238 - .quad entry239 - .quad entry240 - .quad entry241 - .quad entry242 - .quad entry243 - .quad entry244 - .quad entry245 - .quad entry246 - .quad entry247 - .quad entry248 - .quad entry249 - .quad entry250 - .quad entry251 - .quad entry252 - .quad entry253 - .quad entry254 - .quad entry255 + .quad entry0 + .quad entry1 + .quad entry2 + .quad entry3 + .quad entry4 + .quad entry5 + .quad entry6 + .quad entry7 + .quad entry8 + .quad entry9 + .quad entry10 + .quad entry11 + .quad entry12 + .quad entry13 + .quad entry14 + .quad entry15 + .quad entry16 + .quad entry17 + .quad entry18 + .quad entry19 + .quad entry20 + .quad entry21 + .quad entry22 + .quad entry23 + .quad entry24 + .quad entry25 + .quad entry26 + .quad entry27 + .quad entry28 + .quad entry29 + .quad entry30 + .quad entry31 + .quad entry32 + .quad entry33 + .quad entry34 + .quad entry35 + .quad entry36 + .quad entry37 + .quad entry38 + .quad entry39 + .quad entry40 + .quad entry41 + .quad entry42 + .quad entry43 + .quad entry44 + .quad entry45 + .quad entry46 + .quad entry47 + .quad entry48 + .quad entry49 + .quad entry50 + .quad entry51 + .quad entry52 + .quad entry53 + .quad entry54 + .quad entry55 + .quad entry56 + .quad entry57 + .quad entry58 + .quad entry59 + .quad entry60 + .quad entry61 + .quad entry62 + .quad entry63 + .quad entry64 + .quad entry65 + .quad entry66 + .quad entry67 + .quad entry68 + .quad entry69 + .quad entry70 + .quad entry71 + .quad entry72 + .quad entry73 + .quad entry74 + .quad entry75 + .quad entry76 + .quad entry77 + .quad entry78 + .quad entry79 + .quad entry80 + .quad entry81 + .quad entry82 + .quad entry83 + .quad entry84 + .quad entry85 + .quad entry86 + .quad entry87 + .quad entry88 + .quad entry89 + .quad entry90 + .quad entry91 + .quad entry92 + .quad entry93 + .quad entry94 + .quad entry95 + .quad entry96 + .quad entry97 + .quad entry98 + .quad entry99 + .quad entry100 + .quad entry101 + .quad entry102 + .quad entry103 + .quad entry104 + .quad entry105 + .quad entry106 + .quad entry107 + .quad entry108 + .quad entry109 + .quad entry110 + .quad entry111 + .quad entry112 + .quad entry113 + .quad entry114 + .quad entry115 + .quad entry116 + .quad entry117 + .quad entry118 + .quad entry119 + .quad entry120 + .quad entry121 + .quad entry122 + .quad entry123 + .quad entry124 + .quad entry125 + .quad entry126 + .quad entry127 + .quad entry128 + .quad entry129 + .quad entry130 + .quad entry131 + .quad entry132 + .quad entry133 + .quad entry134 + .quad entry135 + .quad entry136 + .quad entry137 + .quad entry138 + .quad entry139 + .quad entry140 + .quad entry141 + .quad entry142 + .quad entry143 + .quad entry144 + .quad entry145 + .quad entry146 + .quad entry147 + .quad entry148 + .quad entry149 + .quad entry150 + .quad entry151 + .quad entry152 + .quad entry153 + .quad entry154 + .quad entry155 + .quad entry156 + .quad entry157 + .quad entry158 + .quad entry159 + .quad entry160 + .quad entry161 + .quad entry162 + .quad entry163 + .quad entry164 + .quad entry165 + .quad entry166 + .quad entry167 + .quad entry168 + .quad entry169 + .quad entry170 + .quad entry171 + .quad entry172 + .quad entry173 + .quad entry174 + .quad entry175 + .quad entry176 + .quad entry177 + .quad entry178 + .quad entry179 + .quad entry180 + .quad entry181 + .quad entry182 + .quad entry183 + .quad entry184 + .quad entry185 + .quad entry186 + .quad entry187 + .quad entry188 + .quad entry189 + .quad entry190 + .quad entry191 + .quad entry192 + .quad entry193 + .quad entry194 + .quad entry195 + .quad entry196 + .quad entry197 + .quad entry198 + .quad entry199 + .quad entry200 + .quad entry201 + .quad entry202 + .quad entry203 + .quad entry204 + .quad entry205 + .quad entry206 + .quad entry207 + .quad entry208 + .quad entry209 + .quad entry210 + .quad entry211 + .quad entry212 + .quad entry213 + .quad entry214 + .quad entry215 + .quad entry216 + .quad entry217 + .quad entry218 + .quad entry219 + .quad entry220 + .quad entry221 + .quad entry222 + .quad entry223 + .quad entry224 + .quad entry225 + .quad entry226 + .quad entry227 + .quad entry228 + .quad entry229 + .quad entry230 + .quad entry231 + .quad entry232 + .quad entry233 + .quad entry234 + .quad entry235 + .quad entry236 + .quad entry237 + .quad entry238 + .quad entry239 + .quad entry240 + .quad entry241 + .quad entry242 + .quad entry243 + .quad entry244 + .quad entry245 + .quad entry246 + .quad entry247 + .quad entry248 + .quad entry249 + .quad entry250 + .quad entry251 + .quad entry252 + .quad entry253 + .quad entry254 + .quad entry255 diff --git a/kernel/arch/pic.c b/kernel/arch/pic.c new file mode 100644 index 0000000..99deec9 --- /dev/null +++ b/kernel/arch/pic.c @@ -0,0 +1,28 @@ +/** + * pic.c + * Программируемый контроллер прерываний + * + * Настройка PIC (Программируемый контроллер прерываний) + * + */ + +#include +#include + +void pic_init( ) { + outb(0x20, 0x11); + outb(0xA0, 0x11); + io_wait( ); + outb(0x21, 0x20); + outb(0xA1, 0x28); + io_wait( ); + outb(0x21, 0x04); + outb(0xA1, 0x02); + io_wait( ); + outb(0x21, 0x01); + outb(0xA1, 0x01); + io_wait( ); + outb(0x21, 0x00); + outb(0xA1, 0x00); + LOG("Программируемый контроллер прерываний инициализирован\n"); +} \ No newline at end of file