This commit is contained in:
2026-06-13 13:27:39 -05:00
parent 00fb70c25b
commit 3ecbcdf369
13 changed files with 106 additions and 14 deletions

0
kernel/drivers/pic/pic.c Normal file
View File

7
kernel/drivers/pic/pic.h Normal file
View File

@@ -0,0 +1,7 @@
#define PIC1_ADDR 0x20
#define PIC2_ADDR 0xA0
#define PIC1_COMMAND PIC1_ADDR
#define PIC1_DATA (PIC1_ADDR+1)
#define PIC2_COMMAND PIC2_ADDR
#define PIC2_DATA (PIC2_ADDR+1)
#define PIC_EOI 0x20

View File

@@ -0,0 +1,51 @@
#include "drivers/pic/pic.h"
.code32
.global init_pic
init_pic:
# init command
mov $0x11, %al
outb %al, $PIC1_COMMAND
outb %al, $PIC2_COMMAND
# vector offsets
mov $0x20, %al
outb %al, $PIC1_DATA
mov $0x28, %al
outb %al, $PIC2_DATA
# cascade
mov $0x04, %al
outb %al, $PIC1_DATA
mov $0x02, %al
outb %al, $PIC2_DATA
# env
mov $0x01, %al
outb %al, $PIC1_DATA
outb %al, $PIC2_DATA
# mask all
mov $0xFC, %al
outb %al, $PIC1_DATA
mov $0xFF, %al
outb %al, $PIC2_DATA
ret
.global io_wait
io_wait:
ret
.global send_eoi_master
send_eoi_master:
mov $0x20, %al
outb %al, $PIC1_COMMAND
ret
.global send_eoi_slave
send_eoi_slave:
mov $0x20, %al
outb %al, $PIC2_COMMAND
call send_eoi_master
ret

0
kernel/drivers/pit/pit.h Normal file
View File

View File

@@ -0,0 +1,16 @@
#include "drivers/pit/pit.h"
.code32
.global init_pit
init_pit: # tickrate: 1193182/1000 = 0x04A9 (1000hz) (1ms)
movb $0x36, %al
outb %al, $0x43
movb $0xA9, %al
outb %al, $0x40
movb $0x04, %al
outb %al, $0x40
ret