Commit Graph

44 Commits

Author SHA1 Message Date
Bananymous 1b7625581d Kernel: Add basic concept of Processes
We now create Shell as a process that has its own threads
2023-03-16 12:17:04 +02:00
Bananymous 8b8e3cbbf0 Kernel/Userspace: Start initial work on userspace and syscalls 2023-03-13 15:32:46 +02:00
Bananymous 06db890d49 Kernel: Add ubsan
My brain has been melting since I'm getting very random bugs.
I hope I can debug them better with ubsan :)
2023-03-06 23:38:05 +02:00
Bananymous ee5d02aa70 Kernel: Rewrite basically all current disk io stuff
This is a big commit that was kinda hard to split to smaller ones.

Essentially we now look at all the mass storage devices from PCI
and initialize (P)ATA devices. This doesn't provide any more functionality
but better abstractions and everything doesn't have to be on its old
default port that might be different for modern computers.
2023-02-26 03:00:29 +02:00
Bananymous 04bb08d27f Kernel: Add basic PCI enumeration 2023-02-26 02:56:53 +02:00
Bananymous 80f9428337 Kernel: Fix prefs font for 32 bit 2023-02-24 03:19:54 +02:00
Bananymous 390a747768 Kernel: Add prefs font for terminal output before file system 2023-02-23 01:22:50 +02:00
Bananymous a4980acc88 Kernel: Fonts can now be parsed from the filesystem and set to terminal
We currently dont have a fallback font if we cannot get to filesystem
initialization, but that will come later. I can't test on real hardware
for this reason.
2023-02-22 22:29:31 +02:00
Bananymous 80006ea137 Kernel: Initial work on filesystem
We support now ext2 directory listing. File reading is not yet supported.
2023-02-20 01:46:00 +02:00
Bananymous 460fc3a29f Kernel: Start working on filesystem
We have a basic PATA driver (for reading) and gpt parser.
2023-02-16 20:00:31 +02:00
Bananymous 6a9d60a8fb Kernel: Implement somewhat functioning multithread support
This still uses only a single cpu, but we can now have 'parallelization'

This seems to work fine in qemu and bochs, but my own computer did not
like this when I last tried.

I have absolutely no idea how multithreading should actually be
implmemented and I just thought and implemented the most simple one I
could think of. This might not be in any way correct :D
2023-02-01 01:53:35 +02:00
Bananymous 7d8aafa0b5 Kernel: Add macros for current archutecture 2023-02-01 01:52:52 +02:00
Bananymous 337569b0ca Kernel: Implement basic SpinLock 2023-02-01 01:52:52 +02:00
Bananymous 1954f223ad Kernel: Add no sse and sse2 for kernel code 2023-01-31 18:43:09 +02:00
Bananymous 05b48fa71c Kernel: add gcc option to make sure we have (r/e)bp saved on stack 2023-01-26 02:57:14 +02:00
Bananymous aa0757e135 Kernel: Move dump_stacktrace from panic -> debug 2023-01-26 02:57:14 +02:00
Bananymous c0bc002ac6 Kernel: Move debug printing to its own file
It didn't make sense that dprint was defined in Serial.h.
We also now dump dprint to tty if there is no serial and tty is initialized
2023-01-25 22:51:42 +02:00
Bananymous ba53582f23 Kernel: Rewrite APIC and PIC more OOP friendly
x86_64 port is slowly coming together
2023-01-23 20:13:57 +02:00
Bananymous 54043288cb Kernel: Move CPUID out of arch/
CPUID instructions behaves the same on x86 and x86_64. I am not
planning on supporting any non x86 based architectures.
2023-01-23 18:12:52 +02:00
Bananymous 1b9f7aa815 Kernel: Rewrite the whole VESA driver
We dont support vga text mode currently. I might add it later if needed.

I also removed mouse 'support' from Shell since it didn't do anything
and I didn't implement arbitary bitmap rendering to framebuffer
2023-01-23 13:21:53 +02:00
Bananymous 6ec4ba3dc9 Kernel: Move dump_backtrace() out of arch.
I discovered __builtin_frame_address()
2023-01-22 03:00:13 +02:00
Bananymous 6b73547989 All: edit gcc flags 2023-01-13 00:04:15 +02:00
Bananymous efd8638a96 Kernel: Improve kernel panic message and rename it 'panic'->'Panic' 2023-01-09 21:57:03 +02:00
Bananymous ef0b2010e0 Kernel: Add basic PS/2 Mouse driver 2022-12-30 19:38:21 +02:00
Bananymous 6fe0d04f07 Kernel: Implement basic VESA Graphics mode driver
We now support VESA Graphics mode with some bitmap fonts
2022-12-16 00:47:03 +02:00
Bananymous f8224e55b1 Kernel: Force strlen compilation so BAN can use it 2022-12-13 21:33:54 +02:00
Bananymous ced05ff5f2 BAN: use only memcmp when comparing string(view) with const char* 2022-12-13 21:32:51 +02:00
Bananymous 334abe6b27 Kernel: lol 2022-12-13 12:12:15 +02:00
Bananymous e62a626b39 Kernel: Improve keyboard input by a lot
Seems to work on my 2 computerss
2022-12-13 10:45:06 +02:00
Bananymous 2938c85c1a Kernel: Makefile formatting 2022-12-13 00:59:53 +02:00
Bananymous 3d3f12bd30 Kernel: Add new generic Printer class
kprint is now just a #define to Printer::print<terminal_putc>.

This allows us to use same print formatting for serial output :)
2022-12-10 00:57:09 +02:00
Bananymous 817de9f359 Kernel: Properly handle finnish keyboard layout.
You can now type any basic ascii character from keyboard.
Multimedia keys are not yet handled.
2022-12-08 18:05:48 +02:00
Bananymous e998615253 Kernel: Move GDT and IDT files to architecture specific folder 2022-12-08 17:50:04 +02:00
Bananymous 4202c999fa Kernel: IRQs are now working :) 2022-12-07 02:48:44 +02:00
Bananymous c17f61611e Improve buildsystem by making build directory
We now create build directory for kernel and libc so that source
directories are kept more clean.
2022-12-03 18:17:37 +02:00
Bananymous f2b45ba212 Add GDT and IDT 2022-11-16 19:49:09 +02:00
Bananymous b500a8a7ed kmalloc 2022-11-16 19:48:36 +02:00
Bananymous 550ecbc951 Kernel panic uses kprint with parameters 2022-11-16 19:47:19 +02:00
Bananymous 123382eace Fixes :) 2022-11-15 21:42:14 +02:00
Bananymous 9e933a5ec5 Add kernel panic function 2022-11-14 18:53:00 +02:00
Bananymous b185ed4fd3 Libc is now written in C++ 2022-11-14 00:31:24 +02:00
Bananymous db656fe469 Implement Stack Smashing Protection 2022-11-12 23:46:33 +02:00
Bananymous 61609db228 Kernel is now in C++ :) 2022-11-12 21:30:26 +02:00
Bananymous e6b4866ab0 Initial commit. We have a booting kernel 2022-11-12 21:04:47 +02:00