Commit Graph

2533 Commits

Author SHA1 Message Date
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
Bananymous 8c569ac7bf 2500th COMMIT: ports: Add gcc port
I've had this laying around locally for a while. binutils was not
working so I didn't feel like this was worth pushing. My new stdio FILE
buffering rewrite fixed binutils and now gcc actually works!
2025-01-25 18:40:16 +02:00
Bananymous a84fb57e32 ports: Add binutils port 2025-01-25 18:40:16 +02:00
Bananymous 7314d2b577 ports: Add mpc port
This will be used by gcc
2025-01-25 18:40:16 +02:00
Bananymous ba83ede0d1 ports: Add mpfr port
This will be used by gcc
2025-01-25 18:40:08 +02:00
Bananymous 42500ce043 ports: Add gmp port
This will be used by gcc
2025-01-25 18:40:04 +02:00
Bananymous caa8c1da90 LibC: Add stub implementations for set{rlimit,priority} 2025-01-25 18:15:50 +02:00
Bananymous cbcb9f9044 Kernel: Warn on unsupport `clock_gettime` `clock_id`s 2025-01-25 17:31:17 +02:00
Bananymous 60bffb5f49 LibC: Implement `clock` in terms of `clock_gettime`
This allows clock to "just work" after I update clock_gettime to support
CLOCK_PROCESS_CPUTIME_ID.
2025-01-24 19:58:44 +02:00
Bananymous 2a16a67aed Kernel: Ignore SA_RESTART flag on sigaction
This is a big hack but a lot of ports set this flag. This seems really
annoying to implement properly
2025-01-24 19:34:22 +02:00
Bananymous c6cd185cb5 DynamicLoader: Fix copy relocations
Weak symbols are now actually resolved to the same strong symbol between
shared objects and copy relocations now work!
2025-01-24 19:23:33 +02:00
Bananymous 58cdcf754c ports: Update curl port
This patch updates curl to version 8.11.1 and adds support for dynamic
libraries
2025-01-24 19:23:33 +02:00
Bananymous d969f5df7b ports: Add zstd port 2025-01-24 19:23:33 +02:00
Bananymous b6455e0661 LibC: Implement stub for clock 2025-01-24 19:23:33 +02:00
Bananymous 15021b442c LibC: Fix memchr and memcmp assembly implementations
These functions did not work with size 0 :D
2025-01-23 21:55:26 +02:00
Bananymous ee078fc638 Kernel: Fix fd status/descriptor flag handling
I was not sharing status and offset on fork and I was sharing descriptor
flags on dup/dup2
2025-01-17 20:12:04 +02:00
Bananymous 9893c90e74 Kernel: Remove SYS_DUP and implement it using fcntl F_DUPFD 2025-01-17 19:29:47 +02:00
Bananymous 82978da5e3 Kernel: Cleanup AML code 2025-01-17 16:20:00 +02:00