banan-os/kernel/kernel
Bananymous 4af9699b22 Kernel: Only save/load sse state when it is used
There is no need to save and load sse state on every interrupt. Instead
we can use CR0.TS to make threads trigger an interrupt when they use sse
instructions. This can be used to only save and load sse state when
needed.

Processor now keeps track of its current "sse thread" and the scheduler
either enabled or disabled sse based on which thread it is starting up.
When a thread dies, it checks if it was the current sse thread to avoid
use after free bugs. When load balancing, processor has to save the
thread's sse state before sending it to a new processor (if it was the
current sse thread). This ensures thread's sse state will be correct
when the new processor ends up loading it.
2026-01-11 03:06:39 +02:00
..
ACPI Kernel: Add support for SA_SIGINFO 2025-11-17 05:26:07 +02:00
Audio Kernel: Add ioctls to select audio device's output pin 2026-01-06 22:26:11 +02:00
Device Kernel: Implement proper memory region splitting 2025-11-13 04:20:53 +02:00
FS Kernel: Fix deadlock in ext2 filesystem 2026-01-10 00:30:30 +02:00
Input Kernel: Add support for DualShock 3 controllers 2026-01-03 20:07:08 +02:00
Lock Kernel: Track the number of recursive spinlocks a thread is holding 2025-06-06 06:51:15 +03:00
Memory Kernel: Fix bitmap byte index calculation in PMM 2026-01-04 01:16:43 +02:00
Networking Kernel: Rework socket binding to an address 2025-12-31 19:28:55 +02:00
Storage Kernel: Rework storage device and disk cache locking 2026-01-02 18:06:56 +02:00
Terminal Kernel: Implement FIONREAD for tty and pty 2025-11-24 18:15:10 +02:00
Timer Kernel/LibC: Use builtin functions over inline asm 2026-01-09 15:39:19 +02:00
USB Kernel/LibInput: Rework Joystick handling 2026-01-07 19:01:07 +02:00
APIC.cpp Kernel: Fix IOAPIC max redirection entry fetching 2025-08-25 17:15:55 +03:00
BootInfo.cpp Kernel: Add support for multiboot 2025-08-05 03:09:24 +03:00
CPUID.cpp Kernel: Add syscall-less clock_gettime 2026-01-08 17:13:59 +02:00
Credentials.cpp Kernel/LibC: Implement {get,set,init}groups 2025-08-10 19:57:31 +03:00
Debug.cpp Kernel: Show QR code with panic logs on kernel panic 2025-10-28 05:50:19 +02:00
ELF.cpp Kernel/LibC: Implement chroot 2025-08-11 14:07:37 +03:00
Epoll.cpp Kernel: Remove minimum timeout of 100 ms from epoll 2025-08-15 18:28:11 +03:00
Errors.cpp Kernel: Add support for ATA CHS addressing and cleanup code 2024-11-19 20:39:32 +02:00
GDT.cpp Kernel: Use syscall/sysret for syscalls in x86_64 2026-01-09 15:18:58 +02:00
IDT.cpp Kernel: Only save/load sse state when it is used 2026-01-11 03:06:39 +02:00
InterruptController.cpp Kernel: Remove lai as a dependecy 2024-04-10 04:39:48 +03:00
Interruptable.cpp Kernel: Fix interrupt system 2024-09-27 15:31:31 +03:00
OpenFileDescriptorSet.cpp Kernel: Implement basic F_{GET,SET}LK{,W} 2026-01-06 21:58:56 +02:00
PCI.cpp Kernel: Implement basic AC97 driver 2025-07-15 14:17:49 +03:00
PIC.cpp Kernel: Start all processors on kernel boot 2024-03-03 02:19:43 +02:00
Panic.cpp BAN/Kernel: Rework assertion/panic system 2024-03-04 11:41:54 +02:00
Process.cpp Kernel: Optimize futexes 2026-01-09 22:27:59 +02:00
Processor.cpp Kernel: Only save/load sse state when it is used 2026-01-11 03:06:39 +02:00
Random.cpp Kernel: Clobber flags in `rdrand` 2025-07-18 19:36:37 +03:00
SSP.cpp All: Cleanup all files 2024-01-24 15:53:38 +02:00
Scheduler.cpp Kernel: Only save/load sse state when it is used 2026-01-11 03:06:39 +02:00
Syscall.cpp Kernel: Use syscall/sysret for syscalls in x86_64 2026-01-09 15:18:58 +02:00
Thread.cpp Kernel: Only save/load sse state when it is used 2026-01-11 03:06:39 +02:00
ThreadBlocker.cpp Kernel: Rewrite ThreadBlocker 2025-07-02 00:17:42 +03:00
kernel.cpp Kernel: Use syscall/sysret for syscalls in x86_64 2026-01-09 15:18:58 +02:00