From a78033acc941fc4bcf6188f1d48fd8e012673fff Mon Sep 17 00:00:00 2001 From: EmulatedSeasons <89668582+EmulatedSeasons@users.noreply.github.com> Date: Thu, 15 Jun 2023 22:36:39 -0400 Subject: initial commit --- kernel/include/arch/i386/pic.h | 9 +++++++++ kernel/include/arch/i386/ps2_controller.h | 11 +++++++++++ kernel/include/arch/i386/tmtty.h | 22 +++++++++++++++++++++ kernel/include/dev/ps2kbd.h | 6 ++++++ kernel/include/io.h | 32 +++++++++++++++++++++++++++++++ kernel/include/stdio.h | 18 +++++++++++++++++ kernel/include/stdlib.h | 15 +++++++++++++++ kernel/include/string.h | 20 +++++++++++++++++++ kernel/include/sys/cdefs.h | 6 ++++++ 9 files changed, 139 insertions(+) create mode 100644 kernel/include/arch/i386/pic.h create mode 100644 kernel/include/arch/i386/ps2_controller.h create mode 100644 kernel/include/arch/i386/tmtty.h create mode 100644 kernel/include/dev/ps2kbd.h create mode 100644 kernel/include/io.h create mode 100644 kernel/include/stdio.h create mode 100644 kernel/include/stdlib.h create mode 100644 kernel/include/string.h create mode 100644 kernel/include/sys/cdefs.h (limited to 'kernel/include') diff --git a/kernel/include/arch/i386/pic.h b/kernel/include/arch/i386/pic.h new file mode 100644 index 0000000..5389086 --- /dev/null +++ b/kernel/include/arch/i386/pic.h @@ -0,0 +1,9 @@ +#ifndef i386_PIC_H +#define i386_PIC_H + +extern "C" void pic_remap(int, int); +void pic_send_eoi(unsigned char); +void irq_set_mask(unsigned char); +void irq_clear_mask(unsigned char); + +#endif \ No newline at end of file diff --git a/kernel/include/arch/i386/ps2_controller.h b/kernel/include/arch/i386/ps2_controller.h new file mode 100644 index 0000000..6faa45d --- /dev/null +++ b/kernel/include/arch/i386/ps2_controller.h @@ -0,0 +1,11 @@ +#ifndef PS2_CONTROLLER_H +#define PS2_CONTROLLER_H + +void initialize_ps2_controller(); +int ps2_dev_send_command(int, unsigned char); +void inputbuffer_wait(); +void outputbuffer_wait(); +bool inputbuffer_check(); +bool outputbuffer_check(); + +#endif \ No newline at end of file diff --git a/kernel/include/arch/i386/tmtty.h b/kernel/include/arch/i386/tmtty.h new file mode 100644 index 0000000..6c65d25 --- /dev/null +++ b/kernel/include/arch/i386/tmtty.h @@ -0,0 +1,22 @@ +#ifndef TEXTMODE_TTY_H +#define TEXTMODE_TTY_H + +#include + +/* Text mode tty */ + +#ifdef __cplusplus +extern "C" +{ +#endif + +void terminal_initialize(void); +void terminal_putchar(char c); +void terminal_write(const char* data, size_t size); +void terminal_writestring(const char* data); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/kernel/include/dev/ps2kbd.h b/kernel/include/dev/ps2kbd.h new file mode 100644 index 0000000..2d1ecc2 --- /dev/null +++ b/kernel/include/dev/ps2kbd.h @@ -0,0 +1,6 @@ +#ifndef PS2_KBD_H +#define PS2_KBD_H + +void keyboard_init(); + +#endif \ No newline at end of file diff --git a/kernel/include/io.h b/kernel/include/io.h new file mode 100644 index 0000000..b99f0ef --- /dev/null +++ b/kernel/include/io.h @@ -0,0 +1,32 @@ +#ifndef HW_IO_H +#define HW_IO_H + +#include + +// Used for io access + +static inline void outb(uint16_t port, uint8_t val) +{ + asm volatile ( "outb %0, %1" : : "a"(val), "Nd"(port) :"memory"); + /* There's an outb %al, $imm8 encoding, for compile-time constant port numbers that fit in 8b. (N constraint). + * Wider immediate constants would be truncated at assemble-time (e.g. "i" constraint). + * The outb %al, %dx encoding is the only option for all other cases. + * %1 expands to %dx because port is a uint16_t. %w1 could be used if we had the port number a wider C type */ +} + +static inline uint8_t inb(uint16_t port) +{ + uint8_t ret; + asm volatile ( "inb %1, %0" + : "=a"(ret) + : "Nd"(port) + : "memory"); + return ret; +} + +static inline void io_wait(void) +{ + outb(0x80, 0); +} + +#endif \ No newline at end of file diff --git a/kernel/include/stdio.h b/kernel/include/stdio.h new file mode 100644 index 0000000..eb4e45b --- /dev/null +++ b/kernel/include/stdio.h @@ -0,0 +1,18 @@ +#ifndef _STDIO_H +#define _STDIO_H 1 + +#define EOF (-1) + +#ifdef __cplusplus +extern "C" { +#endif + +int printf(const char* __restrict, ...); +int putchar(int); +int puts(const char*); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/kernel/include/stdlib.h b/kernel/include/stdlib.h new file mode 100644 index 0000000..1d1ee32 --- /dev/null +++ b/kernel/include/stdlib.h @@ -0,0 +1,15 @@ +#ifndef _STDLIB_H +#define _STDLIB_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +__attribute__((__noreturn__)) +void abort(void); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/kernel/include/string.h b/kernel/include/string.h new file mode 100644 index 0000000..4f6b5bd --- /dev/null +++ b/kernel/include/string.h @@ -0,0 +1,20 @@ +#ifndef _STRING_H +#define _STRING_H 1 + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int memcmp(const void*, const void*, size_t); +void* memcpy(void* __restrict, const void* __restrict, size_t); +void* memmove(void*, const void*, size_t); +void* memset(void*, int, size_t); +size_t strlen(const char*); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/kernel/include/sys/cdefs.h b/kernel/include/sys/cdefs.h new file mode 100644 index 0000000..1e2c277 --- /dev/null +++ b/kernel/include/sys/cdefs.h @@ -0,0 +1,6 @@ +#ifndef _SYS_CDEFS_H +#define _SYS_CDEFS_H 1 + + + +#endif \ No newline at end of file -- cgit v1.2.3-70-g09d2