Commit Graph

2550 Commits

Author SHA1 Message Date
Bananymous 2e3b917192 Kernel: Cleanup PS2 mouse button event generation 2025-04-01 23:09:30 +03:00
Bananymous 95f262b3e6 Kernel: Print process pid through /dev/debug 2025-04-01 23:09:30 +03:00
Bananymous aebacb6b6a Kernel: Bypass PS2 detection if scancode set is forced 2025-04-01 23:09:30 +03:00
Bananymous 27613da5ea Kernel: Route PCI Interrupt Link Device interrupts 2025-04-01 23:09:30 +03:00
Bananymous 28ac6c2267 Kernel: Implement AML FindSet{Left,Right}Bit 2025-04-01 23:09:30 +03:00
Bananymous 1c1fc65c7c Kernel: Add API to reserve GSI instead of irq
This also fixes a bug with IOAPIC gsi_base != 0
2025-04-01 23:09:30 +03:00
Bananymous ba74b352bd Kernel: Make BufferField actually access the buffer and not copy 2025-04-01 23:09:30 +03:00
Bananymous 0474ac4262 Kernel: Expose ACPI resolve_package_element to outside 2025-04-01 23:09:30 +03:00
Bananymous aba49cc93f Kernel: Add API to get ACPI reference paths 2025-04-01 23:09:30 +03:00
Bananymous b3b5b40163 Kernel: Add _OS an _REV to ACPI namespace 2025-04-01 23:09:30 +03:00
Bananymous 0e085b30cc Kernel: ACPI add easier API for calling methods with arguments 2025-04-01 23:09:30 +03:00
Bananymous 35149b6960 Kernel: Add helper functions to create AML String and Buffer 2025-04-01 23:09:30 +03:00
Bananymous 3800d5420e Kernel: Collect created AML nodes in add_{named,alias}...
This makes it harder to miss adding scoped objects. Before I was not
deleting all types of nodes on method return
2025-04-01 23:09:25 +03:00
Bananymous b145c1ab64 Kernel: Add easier api for evaluating ACPI nodes 2025-04-01 23:09:20 +03:00
Bananymous b8a3439219 Kernel: Add getter for ACPI namespace 2025-04-01 23:09:15 +03:00
Bananymous 1a153b835c BAN: Nullterminate encoded UTF8 data 2025-04-01 22:39:56 +03:00
Bananymous 73c292c4e9 BAN: Fix negative floating point value printing 2025-04-01 22:39:21 +03:00
Bananymous d8bb0b53f8 LibImage: Fix PNG palette decoding
I was only loading third of the palette to wrong indices :D
2025-02-12 10:09:03 +02:00
Bananymous 83c66901f8 Kernel: Fix reboot when ACPI is disabled
If ACPI was disabled ACPI::reset() would page fault when accessing
namespace instead of checking wheter namespace is initialized :D
2025-02-11 21:53:20 +02:00
Bananymous 088f77a226 Kernel: Add super basic support for USB keyboard LEDs
This is very hacky but it seems to mostly work. Also for some reason
this fixed my Razer Mamba mouse????
2025-02-11 02:18:50 +02:00
Bananymous 4dd6c85df2 Kernel: Fix USB keyboard Scroll lock
I was using 8 bit modifier and ScrollLock bit does not fit this. Also I
was not generating ScrollLock keypresses
2025-02-11 02:16:38 +02:00
Bananymous d0452a3510 Kernel: Fix xHCI controller destruction
Port updater task was not actually able to exit without a kernel panic.
This patch makes controller wait until port updater exits itself :D
2025-02-10 22:58:57 +02:00
Bananymous 11310e7615 Kernel: Don't manually clear xHCI interrupt flag if using MSI 2025-02-10 22:58:14 +02:00
Bananymous 22b32a0fe5 Kernel: Expose PCI interrupt mechanism from PCIDevice 2025-02-10 22:57:25 +02:00
Bananymous ad143c184f Kernel: Add basic support for USB hubs
This is still buggy and some hubs lead to usb transaction errors. I'll
have to debug this but this shouldn't prevent any already working device
from working
2025-02-10 22:56:25 +02:00
Bananymous 803a4cd163 Kernel: Don't enable ACPI devices when ACPI is disabled
This really didn't make any sense. There are no ACPI device to be
initialized when AML is not parsed :D
2025-02-07 21:35:25 +02:00
Bananymous 267fdf9fa1 Kernel: Remove storage devices after unplugging them 2025-02-07 18:04:54 +02:00
Bananymous 26d2a4420e Kernel: Don't limit xHCI TRB transfer length to max packet size
This made no sense and just used a ton of TRBs.

This patch also fixes some incorrectly set flags in data/status stage
TRBs.
2025-02-06 23:18:14 +02:00
Bananymous c623ad7da0 Kernel: Use correct USB endpoint field to determine interval
I was using the wrong endpoint descriptor field which caused intervals
to be messed up.
2025-02-06 23:18:14 +02:00
Bananymous 7de689055c Kernel: Pass xHCI device information in structs
This makes code more readable and extendable
2025-02-06 23:18:14 +02:00
Bananymous 63b15a8855 Kernel: Rename USB initialize_endpoint -> configure_endpoint
This makes more sense as the USB command is CONFIGURE_ENDPOINT

Also configure_endpoint can be called multiple times on the same
endpoint. There was no reason to limit this to only one call.
2025-02-06 22:10:00 +02:00
Bananymous a2a7302964 Kernel: Make sure USB class driver is deinitialized before xhci device 2025-02-06 22:00:26 +02:00
Bananymous 6a5367dbe3 Kernel: Don't initialize USB alternate interfaces 2025-02-06 21:43:15 +02:00
Bananymous 6768a18475 Kernel: Don't parse xHCI custom slot_types
xHCI spec mandates that slot_type for USB protocol is 0.
2025-02-06 21:41:44 +02:00
Bananymous 242ed4a3c2 Kernel: Remove support for custom xHCI speed_ids
This gets really weird with hubs and I don't think even linux handles
them.
2025-02-06 21:38:30 +02:00
Bananymous f9b70d1b5b Kernel: Don't enter infinite loop on unexpected serial behaviour 2025-02-06 20:59:17 +02:00
Bananymous faa5252191 Kernel: Fix TTY ANSI CSI m and prevent crash :) 2025-02-06 20:58:03 +02:00
Bananymous 4212f48d7a bootloader: Cleanup memcpy and memset
There isn't really any reason to do 32 bit moves
2025-02-06 20:56:35 +02:00
Bananymous b30a79c7fe Kernel: Temporary hack to "fix" munmap
My current munmap implementation does not support partial unmaps and
GCC relies on this behaviour. This patch removes unmapping if the
address and len does not fully contain the mmap region.
2025-02-01 22:25:22 +02:00
Bananymous 22374ac8f7 ports: Add make port 2025-01-28 22:50:11 +02:00
Bananymous 17014bb8de LibC: Fix strndup
I did not null terminate short strndup copies :D
2025-01-28 22:40:06 +02:00
Bananymous d1c3d3d5aa Kernel: Fix ANSI CSI L
With my new memcpy implementation this crashed. I have no idea how this
was not crashing before :D
2025-01-28 18:41:53 +02:00
Bananymous 7fedd94cc5 ln: Don't require link target to exist for symlinks 2025-01-28 17:46:36 +02:00
Bananymous 48eca3d031 LibC: Make libc usable with tcc
tcc does not provide its own stdint.h but defines everything in
stddef.h. Also tcc does not support [[noreturn]] attribute syntax.
2025-01-28 17:27:41 +02:00
Bananymous 21d3cf91a0 LibC: Implement some missing signal.h functions 2025-01-28 17:27:41 +02:00
Bananymous 5938cc4086 Kernel: Support pselect sigmask 2025-01-28 17:17:59 +02:00
Bananymous 7c57d736c6 Kernel/LibC: Fix dirent functions
dirent functions used to fail if a directory contained more than 128
files :D
2025-01-28 17:15:11 +02:00
Bananymous cbe3f2a4ac BuildSystem: Cleanup and fix cmake files
I now set library SONAME so i don't have to build them in build root.

Creating font now makes sure the install directory exists. This allows
building using make files.

LibC now links agains ligcc
2025-01-28 17:11:21 +02:00
Bananymous 7a10e0e347 Kernel: Fix TmpFS inode linking
TmpFS now looks for empty entries in directories instead of always
appending files to the end of directories. This makes kernel not crash
after process pid 126 is created :D
2025-01-28 17:06:35 +02:00
Bananymous efb577769e ports: Add nasm port 2025-01-25 23:10:04 +02:00