Commit Graph

243 Commits

Author SHA1 Message Date
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
337569b0ca Kernel: Implement basic SpinLock 2023-02-01 01:52:52 +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
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
6418d7cfc3 Kernel: Add Other GDT entries to x86_64 2023-01-26 12:53:04 +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
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
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
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
10c7ef7baa Kernel: MMU rename weird variable 2023-01-22 20:16:44 +02:00
Bananymous
62469c529f Kernel: IDT now allocates descriptors with kmalloc_eternal 2023-01-22 03:18:42 +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
Bananymous
6e24ef8323 Kernel: IDT cleanup Kernel panic messages 2023-01-22 02:06:43 +02:00
Bananymous
3e8fbbaabd Kernel: Fix small typos in IDT 2023-01-22 01:12:47 +02:00
Bananymous
491610db2c Kernel: move GDT initialization to boot.S 2023-01-22 00:48:12 +02:00
Bananymous
aac7595a47 Kernel: cleanup boot.S code and enable SSE 2023-01-21 23:44:23 +02:00
Bananymous
b5453fad5c Kernel: dump_stacktrace uses now "\r\n" line endings for bochs 2023-01-21 22:21:38 +02:00
Bananymous
bb051604a1 Kernel: Move dump_stacktrace() to arch folder
It uses mov instruction which has different register on x86/x86-64
2023-01-21 22:16:31 +02:00
Bananymous
9e092c80c0 Kernel: Cleanup boot.S 2023-01-21 22:16:01 +02:00
Bananymous
b9a4530e54 Kernel: Kernel::Panic now dumps stacktrace to com1 2023-01-16 21:50:50 +02:00
Bananymous
73abc3b2ee fixup! Kernel: Move GDT to its own namespace and cleanup 2023-01-16 15:24:59 +02:00
Bananymous
46e5b3f3d6 Kernel: Move GDT to its own namespace and cleanup 2023-01-16 15:24:10 +02:00
Bananymous
32453daf66 Kernel: actually dont map page 0 2023-01-13 15:04:06 +02:00
Bananymous
416a41745f Kernel: Kernel::Panic now checks that TTY is initialized instead of VESA 2023-01-13 15:04:06 +02:00
Bananymous
77e82de51e Kernel: Make IDT exceptions use a single Kernel:Panic
This allows IDT to print exceptions even when we dont have TTY
2023-01-13 15:04:06 +02:00
Bananymous
75ee592fb5 Kernel: remove debug print from MMU 2023-01-13 00:04:50 +02:00
Bananymous
7f01eaa936 Kernel: Move CPUID feature strings to cpp file 2023-01-13 00:03:37 +02:00
Bananymous
4c7950cd3e Kernel: remove unused function from IDT 2023-01-13 00:02:39 +02:00
Bananymous
4ae4ad528a Kernel: APIC use dprintln instead of kprintln
VESA drivers will be initialized much later now so kprintln
will not be available when initializing APIC
2023-01-12 13:52:22 +02:00
Bananymous
f412c164b3 Kernel: Rename ACPI debug print macro 2023-01-12 13:48:05 +02:00
Bananymous
5493d1bae1 Kernel: Add debug print to MMU and fix comment 2023-01-12 13:46:02 +02:00
Bananymous
301ad89783 Kernel: Unallocate RSDT after we are done with it 2023-01-12 13:45:01 +02:00
Bananymous
8fd51fb47d Kernel: Replace Paging{.h,.cpp} with better MMU{.h,.cpp} 2023-01-12 13:24:36 +02:00
Bananymous
64c57ea3d0 Kernel: Remove obsole CPUID::IsAvailable
This is now a harware requirement that is verified already in boot.S
2023-01-10 21:28:59 +02:00
Bananymous
6f9552d673 BAN: Add math to its own namespace 2023-01-10 19:11:27 +02:00
Bananymous
181478119e Kernel: Paging is now enabled by boot.S 2023-01-10 17:53:29 +02:00
Bananymous
c6467b8ebc Kernel: Multiboot data and kernel command lines are now global variables 2023-01-10 17:50:24 +02:00
Bananymous
efd8638a96 Kernel: Improve kernel panic message and rename it 'panic'->'Panic' 2023-01-09 21:57:03 +02:00
Bananymous
531f470132 Kernel: Add helper to map pages with base address and size
This allows us to easily map enough pages for buffer with known size

VESA driver can now allocate enough memory for whole framebuffer if it
doesn't fit in a single page (1920x1080 for example)
2023-01-05 03:44:41 +02:00
Bananymous
086f0c7cf6 Kernel: Better error reporting from VESA and fix texmode rendering 2023-01-05 03:36:20 +02:00