Commit Graph

168 Commits

Author SHA1 Message Date
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
Bananymous
d6623def32 Kernel: Paging uses now PAE with 2 MiB pages 2023-01-05 02:00:18 +02:00
Bananymous
9d9a6b2fec Kernel: VESA can now print 8x16 bitmaps 2022-12-30 20:47:25 +02:00
Bananymous
f51ca4b642 Kernel: Rewrite IDT exception kernel panic message 2022-12-30 20:03:09 +02:00
Bananymous
fc05642b74 Kernel: Make Render from buffer public tty function 2022-12-30 19:57:44 +02:00
Bananymous
ef0b2010e0 Kernel: Add basic PS/2 Mouse driver 2022-12-30 19:38:21 +02:00
Bananymous
3c92aa45fb Kernel: 'cpuinfo' command in shell now shows wheter you are running on 64-bit cpu 2022-12-28 19:46:37 +02:00
Bananymous
267367333e Kernel: Move paging code to a helper 2022-12-28 19:01:01 +02:00
Bananymous
5d7a767f8b Kernel: Enable basic paging 2022-12-28 04:17:34 +02:00
Bananymous
3e8590687f Kernel: Cleanup code and move kmalloc initialization to later 2022-12-28 04:16:21 +02:00
Bananymous
9169020ad2 Kernel: Remove unnecessary checks from GraphicsPutCharAt() 2022-12-27 18:29:51 +02:00
Bananymous
620b836fc3 Kernel: VESA now somewhat handles Cursor in Graphics mode 2022-12-27 18:29:02 +02:00
Bananymous
2d46281c16 Kernel: TTY scroll is now done using memmove
This will be faster when memory functions will be optimized
2022-12-27 17:45:47 +02:00
Bananymous
5ae1fc58e9 Kernel: Clean code in tty and vesa 2022-12-27 17:22:45 +02:00
Bananymous
2535eb1c4c Kernel: TTY now handles keeping terminal buffer
VESA Driver cannot scroll anymore, this is handled by tty
2022-12-27 17:06:33 +02:00
Bananymous
f7eb85babd Kernel: IDT exceptions print better errors now 2022-12-23 15:56:10 +02:00
Bananymous
d8fd6afd12 Kernel: Make TTY a class 2022-12-23 15:55:45 +02:00
Bananymous
3f7a61a4d2 Kernel: VESA driver has now second buffer for fast scrolling
This allows us to not read from video memory, since it was very slow

I also implemented fast path for graphics clearing and scrolling if bpp is 32
2022-12-20 14:02:44 +02:00
Bananymous
5e2680cade Kernel: You can now disable APIC from the grub commandline 2022-12-20 11:57:09 +02:00
Bananymous
c82caacbaa Kernel: Cleanup APIC code
APIC seems to work on my main machine, but not on other one
2022-12-20 04:45:46 +02:00
Bananymous
64a5a28ff0 Kernel: Add time since boot to Shell 2022-12-19 11:46:38 +02:00
Bananymous
c8866aa88b Kernel: Move GDT and IDT assembly to inline assembly 2022-12-19 11:46:38 +02:00
Bananymous
0bdb01ee04 Kernel: Replace PIC with APIC
If APIC/IOAPIC is not found, we fallback to PIC

Interrupts don't seem to work on real hardware (?)
2022-12-19 11:46:25 +02:00
Bananymous
f244728d33 Kernel: Add unicode support 2022-12-16 03:55:13 +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
9274c9ee2f Kernel: Abstract TTY to use new VESA 2022-12-15 19:05:07 +02:00