Bananymous 
							
						 
						
							
								9314528b9b 
								
							 
						 
						
							
							
								
								Kernel: Improve syscall handling  
							
							... 
							
							
							
							Syscalls are now called from a list of function pointers 
							
						 
						
							2024-02-12 21:51:11 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								139bb5c2a5 
								
							 
						 
						
							
							
								
								Kernel: Fix linker script  
							
							... 
							
							
							
							I have no idea why rodata was executable :D 
							
						 
						
							2024-01-30 17:32:50 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								dfe5a2d665 
								
							 
						 
						
							
							
								
								All: Cleanup all files  
							
							... 
							
							
							
							Add newline to end of files and remove whitespace from end of lines 
							
						 
						
							2024-01-24 15:53:38 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								b0ff2392a1 
								
							 
						 
						
							
							
								
								Kernel: Add some helpful debug prints  
							
							... 
							
							
							
							Log RIP when stack pointer is out of bounds.
Log all syscalls that return ENOTSUP 
							
						 
						
							2024-01-03 02:08:01 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								001e95f973 
								
							 
						 
						
							
							
								
								Kernel: Optimize sse saving/loading  
							
							... 
							
							
							
							Only save and load sse when new thread is trying to execute sse
instruction. There is no need to do that every time we enter kernel. 
							
						 
						
							2024-01-03 02:06:49 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								4307968182 
								
							 
						 
						
							
							
								
								All: Start work again on sse support  
							
							
							
						 
						
							2023-12-28 19:14:42 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								284a012509 
								
							 
						 
						
							
							
								
								Kernel: Add framebuffer information to kernel image  
							
							
							
						 
						
							2023-12-09 17:33:58 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								1c78671078 
								
							 
						 
						
							
							
								
								Kernel: Rework all signal code  
							
							... 
							
							
							
							Signal handling code was way too complex. Now everything is
simplified and there is no need for ThreadBlockers.
Only complication that this patch includes is that blocking syscalls
have to manually be made interruptable by signal. There might be some
clever solution to combat this is make this happen automatically. 
							
						 
						
							2023-12-06 13:02:17 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								84040e64b8 
								
							 
						 
						
							
							
								
								Kernel: Don't use multiboot2 explicitly. Parse it to common structure  
							
							... 
							
							
							
							This allows support of multiple different bootloaders 
							
						 
						
							2023-11-17 18:54:59 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								ca34ece8ef 
								
							 
						 
						
							
							
								
								BAN: Update ASSERT api  
							
							... 
							
							
							
							its now much harder to mix < with <= and > with >= 
							
						 
						
							2023-11-02 00:01:12 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								71ecdd7245 
								
							 
						 
						
							
							
								
								Kernel: Canonicalize vaddr before using it  
							
							
							
						 
						
							2023-10-30 19:20:17 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								42772611ce 
								
							 
						 
						
							
							
								
								Kernel: Add fast page to page table  
							
							... 
							
							
							
							Add "fast page" to KERNEL_OFFSET. This is always present in page
tables and only requires changing the page table entry to map. This
requires no interrupts since it should only be for very operations
like memcpy.
I used to map all temporary mappings to vaddr 0, but this is much
better. C++ standard always says that nullptr access is undefined
and this gets rid of it.
Fixed some bugs I found along the way 
							
						 
						
							2023-10-30 19:02:09 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								0c590821ed 
								
							 
						 
						
							
							
								
								Kernel: only map kernel from g_kernel_start onwards  
							
							
							
						 
						
							2023-10-30 16:22:02 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								6ef153b6ca 
								
							 
						 
						
							
							
								
								Kernel: Enable Write Protect. This seems to be good for security  
							
							
							
						 
						
							2023-10-30 12:23:22 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								130a69bac6 
								
							 
						 
						
							
							
								
								Kernel: Fix stack OOB detection  
							
							... 
							
							
							
							I now check both interrupt and normal stack to detect OOB. Processes
are killed if they encouner stack over/under flow. 
							
						 
						
							2023-10-30 12:17:08 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								0b5fcb3f88 
								
							 
						 
						
							
							
								
								Kernel/LibC: Add crt* files to LibC and remove crt0 from kernel  
							
							... 
							
							
							
							There was no reason for libc get crt0 from kernel. 
							
						 
						
							2023-10-30 11:06:13 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								c17cdb39d5 
								
							 
						 
						
							
							
								
								Kernel: Map multiboot2 memory in PageTable initialization  
							
							... 
							
							
							
							It cannot be assumed that multiboot data lies between kernel_end
and 2 GiB mark, so I properly allocate virtual address space for it. 
							
						 
						
							2023-10-17 01:15:08 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								69a39b7077 
								
							 
						 
						
							
							
								
								Kernel: Start using multiboot2 instead of multiboot  
							
							... 
							
							
							
							This allows better compatibility with (U)EFI and gives RSDP location
instead of me having to scan ram to find it. 
							
						 
						
							2023-10-17 01:06:24 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								128202a55a 
								
							 
						 
						
							
							
								
								Kernel: Cleanup GDT code  
							
							
							
						 
						
							2023-10-13 16:18:22 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								518fd3fad0 
								
							 
						 
						
							
							
								
								Kernel: Add 16 more irq handlers  
							
							... 
							
							
							
							IDT will now panic if trying to assing handler for non supported
irq. 
							
						 
						
							2023-10-13 16:17:27 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								27eb5af6f0 
								
							 
						 
						
							
							
								
								Kernel: Rework interrupt mechanism  
							
							... 
							
							
							
							All interruptrable classes now inherit from Interruptable which
has methdo handle_irq which is called on a interrupt. 
							
						 
						
							2023-10-05 18:53:45 +03:00  
				
					
						
							
							
								 
						
							
								245f58cc3a 
								
							 
						 
						
							
							
								
								Kernel: mmap regions are now demand paged  
							
							... 
							
							
							
							mmap will not actually take any memory unless you use the given
memory. 
							
						 
						
							2023-09-28 21:07:14 +03:00  
				
					
						
							
							
								 
						
							
								d7ecf94347 
								
							 
						 
						
							
							
								
								Kernel: Reboot will now always succeed  
							
							... 
							
							
							
							If acpi reset fails, we forcefully trigger a triple fault to restart
the system. 
							
						 
						
							2023-09-28 13:53:03 +03:00  
				
					
						
							
							
								 
						
							
								976114fde1 
								
							 
						 
						
							
							
								
								Kernel: Print more detailed output on ISR  
							
							
							
						 
						
							2023-09-25 20:33:07 +03:00  
				
					
						
							
							
								 
						
							
								7a7c5e433e 
								
							 
						 
						
							
							
								
								Kernel/LibC: add flag to enable/disable sse support  
							
							... 
							
							
							
							SSE support is very experimental and causes GP. I decided to make
SSE not default until I get to fixing it :) 
							
						 
						
							2023-09-23 02:28:25 +03:00  
				
					
						
							
							
								 
						
							
								dd0b8c4140 
								
							 
						 
						
							
							
								
								Kernel: Add pointer validation API to page table  
							
							
							
						 
						
							2023-09-22 17:20:35 +03:00  
				
					
						
							
							
								 
						
							
								7ec860a3d4 
								
							 
						 
						
							
							
								
								Kernel: Print stack trace on isr  
							
							
							
						 
						
							2023-09-11 01:20:55 +03:00  
				
					
						
							
							
								 
						
							
								921d95d18f 
								
							 
						 
						
							
							
								
								All: Clear lines with only whitspace in them  
							
							
							
						 
						
							2023-09-10 00:31:42 +03:00  
				
					
						
							
							
								 
						
							
								f75adab9d8 
								
							 
						 
						
							
							
								
								Kernel: Move structures in boot.S to .data section  
							
							
							
						 
						
							2023-08-11 00:26:12 +03:00  
				
					
						
							
							
								 
						
							
								0b8396b1a6 
								
							 
						 
						
							
							
								
								Kernel: IDT now sends EOI for every interrupt  
							
							... 
							
							
							
							EOI is sent before calling the interrupt handler. This should be fine
since all interrupts are processed with interrupts disabled 
							
						 
						
							2023-08-09 09:57:02 +03:00  
				
					
						
							
							
								 
						
							
								6fcb191ca0 
								
							 
						 
						
							
							
								
								Kernel: Add PageTable::Flags::CacheDisable  
							
							... 
							
							
							
							Also fix multiple places where we were using uint8_t as page table
flags instead of PageTable::flags_t which we promoted to uint16_t
while back. 
							
						 
						
							2023-08-06 23:59:30 +03:00  
				
					
						
							
							
								 
						
							
								659adb89a6 
								
							 
						 
						
							
							
								
								Kernel: Start work on abstracting Timers  
							
							
							
						 
						
							2023-08-04 10:29:42 +03:00  
				
					
						
							
							
								 
						
							
								643e87a076 
								
							 
						 
						
							
							
								
								Kernel: Threads are deleted sooner and cleaner  
							
							... 
							
							
							
							We now delete threads when
    1. it is marked as Terminated and is the current thread
    2. it tries to start execution in Terminated state
This allows us to never have thread executing in Terminated state 
							
						 
						
							2023-08-04 10:29:42 +03:00  
				
					
						
							
							
								 
						
							
								20eafb4cc4 
								
							 
						 
						
							
							
								
								Kernel: align userspace stacks  
							
							... 
							
							
							
							I was getting #GP on sse instructions 
							
						 
						
							2023-08-03 18:09:48 +03:00  
				
					
						
							
							
								 
						
							
								3139391e06 
								
							 
						 
						
							
							
								
								Kernel: Change PageTable API  
							
							... 
							
							
							
							Getting free pages not reserves them, so you don't have to hold
the page table lock :) 
							
						 
						
							2023-08-02 22:09:14 +03:00  
				
					
						
							
							
								 
						
							
								64ad752e73 
								
							 
						 
						
							
							
								
								Kernel: PageTable now supports reserved pages  
							
							... 
							
							
							
							You can now map pages as reserved, so that they will not be given
from get_free_page() or get_free_contiguous_pages(). 
							
						 
						
							2023-08-01 16:35:54 +03:00  
				
					
						
							
							
								 
						
							
								a78a7ed156 
								
							 
						 
						
							
							
								
								Kernel: Cleanup returns from any kind on interrupts  
							
							
							
						 
						
							2023-08-01 14:23:50 +03:00  
				
					
						
							
							
								 
						
							
								b245a55ea0 
								
							 
						 
						
							
							
								
								Kernel: store/load sse/mmx/fpu state on isr/irq/syscall  
							
							... 
							
							
							
							I haven't tested this yet but should be fine. This will be optimized
to only save state from threads that are using it 
							
						 
						
							2023-07-31 22:28:57 +03:00  
				
					
						
							
							
								 
						
							
								c4f6c859c1 
								
							 
						 
						
							
							
								
								Kernel: Generally improve signals  
							
							
							
						 
						
							2023-07-31 22:28:18 +03:00  
				
					
						
							
							
								 
						
							
								1a6100f083 
								
							 
						 
						
							
							
								
								Kernel: Cleanup signal trampoline  
							
							
							
						 
						
							2023-07-30 15:58:35 +03:00  
				
					
						
							
							
								 
						
							
								de927b6b05 
								
							 
						 
						
							
							
								
								Kernel: Remove is_in_syscall from Thread  
							
							
							
						 
						
							2023-07-30 14:49:51 +03:00  
				
					
						
							
							
								 
						
							
								1d7795e22c 
								
							 
						 
						
							
							
								
								Kernel: Hardware exceptions  now sends signals to userspace  
							
							
							
						 
						
							2023-07-30 14:34:15 +03:00  
				
					
						
							
							
								 
						
							
								9729e5a05b 
								
							 
						 
						
							
							
								
								Kernel: Change signal kernel API  
							
							... 
							
							
							
							return rsp and rip are now stored per thread 
							
						 
						
							2023-07-23 18:33:10 +03:00  
				
					
						
							
							
								 
						
							
								2dce0a0415 
								
							 
						 
						
							
							
								
								Kernel: Userspace signal handlers are now called one at a time  
							
							... 
							
							
							
							I added a syscall for telling the kernel when signal execution has
finished. We should send a random hash or id to the signal trampoline
that we would include in the syscall, so validity of signal exit can
be confirmed. 
							
						 
						
							2023-07-23 13:34:53 +03:00  
				
					
						
							
							
								 
						
							
								8063700d7b 
								
							 
						 
						
							
							
								
								Kernel: add default signal actions  
							
							
							
						 
						
							2023-07-21 18:02:35 +03:00  
				
					
						
							
							
								 
						
							
								c2cf98e32f 
								
							 
						 
						
							
							
								
								Kernel/LibC: Add bareboness signals  
							
							... 
							
							
							
							You can now call raise() to raise a signal. Signal handlers are
not yet supported, but the handling works :) 
							
						 
						
							2023-07-21 15:45:02 +03:00  
				
					
						
							
							
								 
						
							
								a1db032ba9 
								
							 
						 
						
							
							
								
								Kernel: kernel memory takes now full pml4e  
							
							... 
							
							
							
							This allows flags to work properly 
							
						 
						
							2023-07-21 13:47:05 +03:00  
				
					
						
							
							
								 
						
							
								5babd7b4f2 
								
							 
						 
						
							
							
								
								Kernel: remove PAGE_FLAGS_MASK as that was not correct anymore  
							
							... 
							
							
							
							After I added NXE bit, the flags mask is no longer valid 
							
						 
						
							2023-07-21 12:01:50 +03:00  
				
					
						
							
							
								 
						
							
								c0029a2fa2 
								
							 
						 
						
							
							
								
								Kernel: Don't map kernel executable memory as writable  
							
							
							
						 
						
							2023-07-21 11:17:39 +03:00  
				
					
						
							
							
								 
						
							
								4e35b8b49d 
								
							 
						 
						
							
							
								
								Kernel: Syscalls now get the interrupt stack  
							
							
							
						 
						
							2023-07-21 11:04:16 +03:00