diff options
author | Marvin Borner | 2021-02-26 21:05:42 +0100 |
---|---|---|
committer | Marvin Borner | 2021-02-26 21:05:42 +0100 |
commit | 50123cd5368602f68b9650890735947eb7ec501e (patch) | |
tree | f78117baf425b341fd5c8fd38ccdfd9528d236f3 /kernel/drivers | |
parent | dc3ae2d551ed9e427d5a99739ec30e97749bd5bc (diff) |
Removed serial driver from userspace
Diffstat (limited to 'kernel/drivers')
-rw-r--r-- | kernel/drivers/serial.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/kernel/drivers/serial.c b/kernel/drivers/serial.c new file mode 100644 index 0000000..98108eb --- /dev/null +++ b/kernel/drivers/serial.c @@ -0,0 +1,35 @@ +// MIT License, Copyright (c) 2020 Marvin Borner + +#include <cpu.h> +#include <def.h> +#include <serial.h> +#include <str.h> + +void serial_install(void) +{ + outb(0x3f8 + 1, 0x00); + outb(0x3f8 + 3, 0x80); + outb(0x3f8 + 0, 0x03); + outb(0x3f8 + 1, 0x00); + outb(0x3f8 + 3, 0x03); + outb(0x3f8 + 2, 0xC7); + outb(0x3f8 + 4, 0x0B); +} + +static int is_transmit_empty(void) +{ + return inb(0x3f8 + 5) & 0x20; +} + +void serial_put(char ch) +{ + while (is_transmit_empty() == 0) + ; + outb(0x3f8, (u8)ch); +} + +void serial_print(const char *data) +{ + for (u32 i = 0; i < strlen(data); i++) + serial_put(data[i]); +} |