Commit Graph

1434 Commits

Author SHA1 Message Date
5127da9ecc BAN: Add more traits 2023-02-01 01:22:19 +02:00
56d6b2af3d BAN: TRY() now returns the error itself and not ErrorOr<>
This allows us to use TRY with different ErrorOr<> templates
2023-02-01 01:21:14 +02:00
3a1f068bac BAN: Add needed include to Function 2023-01-31 18:43:24 +02:00
be502ae616 Kernel: Debug stacktrace now detects if it kernel panics itself 2023-01-31 18:43:09 +02:00
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
1954f223ad Kernel: Add no sse and sse2 for kernel code 2023-01-31 18:43:09 +02:00
f10a57dcec BAN: Add RefCounted<> and Unique<>
We have now maybe functional smart pointers
2023-01-31 18:43:09 +02:00
1687028ed5 Kernel: Add constructor and destructor to MMU 2023-01-30 18:54:04 +02:00
3d5f1b5a86 Kernel: Change default host to x86_64 2023-01-30 18:53:30 +02:00
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
bfe3426f6d Kernel: Add processor dump flag to APIC 2023-01-26 13:13:46 +02:00
6418d7cfc3 Kernel: Add Other GDT entries to x86_64 2023-01-26 12:53:04 +02:00
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
e00d18029d Kernel: rewrite some of APIC since it didn't work with xsdts for some reason 2023-01-26 02:57:14 +02:00
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
589f338357 Kernel: Cleanup IDT register dump inline assembly 2023-01-26 02:57:14 +02:00
05b48fa71c Kernel: add gcc option to make sure we have (r/e)bp saved on stack 2023-01-26 02:57:14 +02:00
aa0757e135 Kernel: Move dump_stacktrace from panic -> debug 2023-01-26 02:57:14 +02:00
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
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
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
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
c4670f49d4 Kernel: Refactor some IDT code 2023-01-25 19:19:28 +02:00
48348c9e57 Kernel: Cleanup APIC code. Remove unnecessary defines and add consts 2023-01-25 19:00:41 +02:00
ba53582f23 Kernel: Rewrite APIC and PIC more OOP friendly
x86_64 port is slowly coming together
2023-01-23 20:13:57 +02:00
b50bb03ed4 Kernel: Panic now halts machine even if we get spurious irqs 2023-01-23 18:25:48 +02:00
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
7c6d474a3a BAN: Add basic ScopeGuard 2023-01-23 17:41:34 +02:00
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
10c7ef7baa Kernel: MMU rename weird variable 2023-01-22 20:16:44 +02:00
b67bbab083 Kernel: fix dump_stacktrace 2023-01-22 20:05:24 +02:00
62469c529f Kernel: IDT now allocates descriptors with kmalloc_eternal 2023-01-22 03:18:42 +02:00
026fdc251c Kernel: Add kmalloc_eternal back 2023-01-22 03:10:48 +02:00
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
6ec4ba3dc9 Kernel: Move dump_backtrace() out of arch.
I discovered __builtin_frame_address()
2023-01-22 03:00:13 +02:00
fbfb3d6b70 Kernel: IDT cleanup GateDesctiptor usage
And move everything to IDT namespace
2023-01-22 02:06:43 +02:00
558374a47c Kernel: IDT flush only once in initialization 2023-01-22 02:06:43 +02:00
6e24ef8323 Kernel: IDT cleanup Kernel panic messages 2023-01-22 02:06:43 +02:00
3e8fbbaabd Kernel: Fix small typos in IDT 2023-01-22 01:12:47 +02:00
491610db2c Kernel: move GDT initialization to boot.S 2023-01-22 00:48:12 +02:00
aac7595a47 Kernel: cleanup boot.S code and enable SSE 2023-01-21 23:44:23 +02:00
fdbc04f29d Kernel: kmalloc now uses the actual kernel end location 2023-01-21 22:40:23 +02:00
9088f7b305 Kernel: kmalloc prints addresses on panic 2023-01-21 22:29:44 +02:00
b5453fad5c Kernel: dump_stacktrace uses now "\r\n" line endings for bochs 2023-01-21 22:21:38 +02:00
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
9e092c80c0 Kernel: Cleanup boot.S 2023-01-21 22:16:01 +02:00
c9e32b1b5b BAN: Cleanup Queue AddressOf functions 2023-01-18 17:19:57 +02:00
64f0cc0d42 BAN: fix Vector code
one return value was missing and AddressOf functions were kinda ugly
2023-01-18 17:18:54 +02:00
dd607ce86f BAN: Add basic lambda support for BAN::Function 2023-01-18 14:39:31 +02:00
ef2e8f1a2f BAN: Move RemoveReference and IsLValueReference to their own header
Also implement basic Less, Equal, Greater
2023-01-18 13:39:08 +02:00