Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void _load_interrupt_descriptor_table() {
- uint32_t idt_size;
- struct {
- uint16_t number;
- uint32_t base;
- } __attribute__((packed)) _idt_pointer;
- idt_size = IDT_number * sizeof(struct interrupt_descriptor_table);
- memset(&_idt, 0, idt_size);
- _idt_pointer.number = idt_size - 1;
- _idt_pointer.base = (uint32_t)&_idt;
- __asm__ __volatile__(
- "lidt %0"
- :
- : "m" (_idt_pointer)
- );
- }
- set_interrupt_handler(0x20, (uint32_t)&timer_int_handler, 0x08, 0x8E);
- struct interrupt_frame {
- uint16_t ip;
- uint16_t cs;
- uint16_t flags;
- uint16_t sp;
- uint16_t ss;
- };
- __attribute__((interrupt)) void timer_int_handler(struct interrupt_frame* frame) {
- driver_tty_output_string("Timer interrupt handler!n");
- }
- cc -m32 -std=c89 -nostdlib -nostdinc -fno-builtin -fno-stack-protector -g -Wall -pedantic -I include/ -I include/libc/ -c -o kernel/interrupts.o kernel/interrupts.c
- kernel/interrupts.c:93:58: warning: ‘interrupt’ attribute directive ignored [-Wattributes]
- __attribute__((interrupt)) void timer_int_handler(struct interrupt_frame* frame) {
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement