Commit Graph

939 Commits

Author SHA1 Message Date
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
94cbacc998 Kernel: PIT now has very barebones sleep 2023-02-16 17:53:25 +02:00
Bananymous
1b45b4d728 Kernel: Remove unnecessary BOCKS_BREAK() 2023-02-16 17:52:39 +02:00
Bananymous
6a133782ed All: Move to c++20 2023-02-09 23:05:26 +02:00
Bananymous
fb7fe73d49 Kernel: Add inw and outw to IO 2023-02-04 23:37:34 +02:00
Bananymous
6fab26692b Kernel: remove unnecessary function from x86_64 Thread.S 2023-02-02 23:48:18 +02:00
Bananymous
2161528cb6 Kernel: Shell is now launched as a capturing lambda 2023-02-02 23:27:51 +02:00
Bananymous
cdbad56ed7 Kernel: Update shell thread command to run following command as thread
'thread echo "Hello World"' runs the command 'echo "Hello World"' after
5 seconds have passed. This was just my test code for threading
2023-02-02 23:26:19 +02:00
Bananymous
5b5e620d8a Kernel: Improve multithreading support
We can now use arbitary BAN::function<void(...)> as the Thread.
I also implemented multithreading for i386 since it was not done
on the initial multithreading commit.
2023-02-02 23:24:12 +02:00
Bananymous
777ede328e Kernel: Add helper functions for reading current rsp and rbp 2023-02-02 23:19:44 +02:00
Bananymous
c85b97abee Kernel: fix some of i368 IDT. This was really broken 2023-02-02 15:52:06 +02:00
Bananymous
117d1de038 Kernel: panic does not need to include <kernel/kprint.h>
This allows us to not have kprint available literally everywhere
2023-02-02 15:51:15 +02:00
Bananymous
6cbad718fb Kernel: Add some more cxxabi functionality
We can now declate static variables in functions
2023-02-02 15:50:26 +02:00
Bananymous
f6b05212e0 Kernel: Add is_locked() to spinlock
I think this is atomic read
2023-02-02 15:49:30 +02:00
Bananymous
01f267a321 Kernel: fix spinlock for i386 2023-02-02 15:49:00 +02:00
Bananymous
9b8de5025a All: rename every function from UpperCamelCase to snake_case
This was a mess since I didn't know which to use but now I decided
to go with snake_case :)
2023-02-01 21:05:44 +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
be502ae616 Kernel: Debug stacktrace now detects if it kernel panics itself 2023-01-31 18:43:09 +02:00
Bananymous
cb3b62d665 Kernel: Only allocate single GDT entry during boot.S
When we need more, we should probably initialize rest of them
in cpp code
2023-01-31 18:43:09 +02:00
Bananymous
1954f223ad Kernel: Add no sse and sse2 for kernel code 2023-01-31 18:43:09 +02:00
Bananymous
1687028ed5 Kernel: Add constructor and destructor to MMU 2023-01-30 18:54:04 +02:00
Bananymous
6dc22b7251 Kernel: Add actual register values to x86_64 kernel panic
Very hackish implementation, but we now get actual registers at the
time of the interrupt happening
2023-01-30 18:52:38 +02:00
Bananymous
bfe3426f6d Kernel: Add processor dump flag to APIC 2023-01-26 13:13:46 +02:00
Bananymous
6418d7cfc3 Kernel: Add Other GDT entries to x86_64 2023-01-26 12:53:04 +02:00
Bananymous
f0093ed2fd Kernel: kmalloc_eternal now updates the used/free values
I also improved the kmalloc_dump_info() formatting. We format the
values as 8-digit hex numbers since (atleast for now) the kmalloc
will always be under 4 GiB address and size :)
2023-01-26 03:04:19 +02:00
Bananymous
e00d18029d Kernel: rewrite some of APIC since it didn't work with xsdts for some reason 2023-01-26 02:57:14 +02:00
Bananymous
35d2e27292 Kernel: Improve MMU
We don't have to invalidate page in AllocatePage() if we don't make
any changes. We also should not assert on deallocating non-present
pages, just return early :)
2023-01-26 02:57:14 +02:00
Bananymous
589f338357 Kernel: Cleanup IDT register dump inline assembly 2023-01-26 02:57:14 +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
e87026f01d Kernel: I have no idea what this commit does
I had committed a change in IDT but reverted it now.

This propably only adds a spurious interrupt detection to common cpp
interrupt handler?
2023-01-26 02:55:37 +02:00
Bananymous
9c31790359 Kernel: Add option to disable Serial output
This makes all debug output to appear on the TTY
2023-01-25 22:51:42 +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
b315fdc27f Kernel: Finally managed to get 64-bit working
I had weird problems with interrupts but everything should work now
2023-01-25 19:19:28 +02:00
Bananymous
c4670f49d4 Kernel: Refactor some IDT code 2023-01-25 19:19:28 +02:00
Bananymous
48348c9e57 Kernel: Cleanup APIC code. Remove unnecessary defines and add consts 2023-01-25 19:00:41 +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
b50bb03ed4 Kernel: Panic now halts machine even if we get spurious irqs 2023-01-23 18:25:48 +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
10c7ef7baa Kernel: MMU rename weird variable 2023-01-22 20:16:44 +02:00
Bananymous
b67bbab083 Kernel: fix dump_stacktrace 2023-01-22 20:05:24 +02:00
Bananymous
62469c529f Kernel: IDT now allocates descriptors with kmalloc_eternal 2023-01-22 03:18:42 +02:00
Bananymous
026fdc251c Kernel: Add kmalloc_eternal back 2023-01-22 03:10:48 +02:00
Bananymous
cdd27ae3db Kernel: rename MMU::m_page_directory_pointer_table -> m_highest_paging_stuct
This might not always be pdpt. In x86_64 it is pml4/pml5
2023-01-22 03:03:58 +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
fbfb3d6b70 Kernel: IDT cleanup GateDesctiptor usage
And move everything to IDT namespace
2023-01-22 02:06:43 +02:00
Bananymous
558374a47c Kernel: IDT flush only once in initialization 2023-01-22 02:06:43 +02:00