1687028ed5
Kernel: Add constructor and destructor to MMU
2023-01-30 18:54:04 +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
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
53a5ad3cf9
BAN: Function now properly forward arguments
2023-01-17 11:16:46 +02:00
b9a4530e54
Kernel: Kernel::Panic now dumps stacktrace to com1
2023-01-16 21:50:50 +02:00
7540fa0385
Kernel: Shell now 'properly' parses commandline
2023-01-16 20:09:22 +02:00
e307db47eb
Kernel: Kernel::Panic() will now always print to serial output
2023-01-16 15:44:27 +02:00
73abc3b2ee
fixup! Kernel: Move GDT to its own namespace and cleanup
2023-01-16 15:24:59 +02:00
46e5b3f3d6
Kernel: Move GDT to its own namespace and cleanup
2023-01-16 15:24:10 +02:00
b46fa0d116
Kernel: Shell can now dump kmalloc info
2023-01-16 15:17:00 +02:00
8881c1e117
Kernel: Shell is no longer singleton
2023-01-16 15:16:39 +02:00
1545850be3
Kernel: Input callbacks use the new BAN::Function
2023-01-16 15:15:02 +02:00
d5e162b1ea
Kernel: fix kmalloc header
2023-01-16 12:10:50 +02:00
689338b506
Kernel: kmalloc can now dump current memory usage
2023-01-13 17:42:19 +02:00
f547a788f2
Kernel: Add support for arrow keys in Shell
2023-01-13 15:07:24 +02:00
bf4b26d1fd
Kernel: kmalloc now returns nullptr if you try to allocate over kmalloc size
2023-01-13 15:04:06 +02:00