100 Commits
Author SHA1 Message Date
josh bb65def53c XHCI: set dcbaap 2025-05-23 10:16:49 -04:00
josh 0d970a6d25 XHCI: allocate scratchpad buffers 2025-05-23 10:13:54 -04:00
josh ea159db100 XHCI: allocate device context buffer for each slot 2025-05-23 09:21:48 -04:00
josh e3f27812ad Allocate memory regions for XHCI 2025-02-23 20:52:36 -05:00
josh d78669df9c Check for pkg-config 2025-02-23 20:46:31 -05:00
josh 7313b01732 Allow allocating arbitrarily aligned physical memory regions
This will be needed for USB (XHCI controller driver).
2025-02-21 15:31:48 -05:00
josh b2497d1ee0 HIPPO: store memory regions in addition to individual free pages 2025-02-21 12:31:03 -05:00
josh 30078417b6 Turn off test thread 2025-02-20 15:50:57 -05:00
josh c18cbf7be3 Remove unsupported avx CPU flags 2025-02-20 11:30:53 -05:00
josh 2d95371aa1 Add hulk.volatile 2024-12-03 00:18:45 -05:00
josh 13b6f39e1a Add OVMF search location 2024-12-02 10:54:02 -05:00
josh 30aedfc97b Map framebuffer with write-combining access mode to speed up physical hardware 2024-07-29 00:01:47 -04:00
josh 26bb071b4d Update base address to build with kernel code model 2024-07-28 23:14:24 -04:00
josh 3a75e0505f Prepare for future XHCI setup 2024-02-20 11:41:23 -05:00
josh a02df12924 Add XHCI.reset() 2024-02-20 11:23:12 -05:00
josh 699f53ac15 Initialize USB after enabling interrupts so Time can be used 2024-02-20 11:17:29 -05:00
josh 1119855215 Fix mapping PCI regions as writable 2024-02-20 11:17:01 -05:00
josh 0c82250bd2 Fix Time.msleep() when inlined in a loop 2024-02-20 11:16:34 -05:00
josh 2a66443a49 Add DoorbellRegister comment 2024-02-09 13:02:05 -05:00
josh 9874802ee4 Add new threads to runnable threads list
More safely handle nested interrupts.
Switch to newly created thread immediately.
2023-12-08 12:16:35 -05:00
josh 44a305721e Allow use of {suspend,resume}_interrupts() from within an ISR
Move functions from hulk.cpu to hulk.him.
2023-12-01 07:54:37 -05:00
josh 73f4d6b728 Rename hulk.idt to hulk.him 2023-12-01 07:49:52 -05:00
josh 0efe8af5aa Commonize ISR handling as much as possible 2023-11-30 20:32:06 -05:00
josh edc9b2c3ff Remove thread test 2023-11-28 10:47:44 -05:00
josh c8a9fcf0d5 idt: add INT_KERNEL_SWINT 2023-11-28 10:30:16 -05:00
josh dc231741b7 cpu: add swint() 2023-11-28 10:30:03 -05:00
josh fbaf9df59f Add kernel threading test
Kernel multithreading is working!
Threads cannot exit for now.
Scheduling is round-robin for now.
2023-11-27 20:07:08 -05:00
josh 58a74e4859 Fix PCI device list 2023-11-27 19:37:14 -05:00
josh cc1753a75d Move system time display to Rtc.initialize() 2023-11-27 19:36:04 -05:00
josh 3c8587acf5 Redesign List as a mixin template 2023-11-27 15:30:09 -05:00
josh db2814596b Move PIT test to test module 2023-11-25 21:01:46 -05:00
josh 8cfa7bc009 Add hulk.thread module 2023-11-25 20:58:11 -05:00
josh d100ab53a8 Add read_rflags() 2023-11-25 13:02:27 -05:00
josh 35e5aa2ee5 Add hulk.test module to test kernel functionality 2023-11-22 20:47:21 -05:00
josh cd9a3a7284 Rework List to allow removing nodes 2023-11-22 20:46:48 -05:00
josh 294500fb70 Squelch linker warning about a RWX segment 2023-11-21 12:13:29 -05:00
josh bb4404df23 Add suspend_interrupts() and resume_interrupts() 2023-11-21 11:36:22 -05:00
josh aa5ca83889 Disable the red zone
This fixes the interrupt handler from clobbering local variables.
2023-11-20 16:18:41 -05:00
josh f2839cdd0f Handle all APIC IRQ redirects specified in MADT 2023-11-07 17:19:56 -05:00
josh 31bf82e2ae Store all registers in interrupt stack frame
Do not clear console when printing interrupt stack frame
2023-11-02 16:32:42 -04:00
josh 4f9206af91 Build with debugging symbols 2023-11-02 11:54:08 -04:00
josh 2eec448653 Update gcc and binutils 2023-11-02 11:53:35 -04:00
josh 9932b92963 Change orange screen of death to red bar 2023-11-02 10:34:29 -04:00
josh 5d8343ed40 Preserve registers and align stack in interrupt handlers 2023-11-02 10:29:27 -04:00
josh 2fa4193517 Pass exception stack frame pointer to exception handler
Show exception stack frame contents on exception
2023-11-01 21:22:54 -04:00
josh 01c73f8474 Add check that PIT ISR is firing 2023-11-01 14:45:43 -04:00
josh 7264a31ff3 Rework scanning MADT table entries
Get I/O APIC address from MADT entry.
Add DEBUG flag for APIC.
Show number of CPUs found.
2023-10-31 13:29:23 -04:00
josh c0a00b528e Run in QEMU with 4 CPUs by default 2023-10-31 11:56:39 -04:00
josh 9f8a4ea100 Add hulk.time and msleep() 2023-10-26 16:18:26 -04:00
josh 6251fee3ff Store item in List rather than pointer to item 2023-10-25 21:28:27 -04:00
josh f5c6a35cef Move MCFG ACPI table processing from ACPI to PCI 2023-10-25 21:18:36 -04:00
josh e32282f6f0 Move MADT table processing from ACPI to APIC 2023-10-25 21:11:21 -04:00
josh 2b87792c67 Store ACPI table pointers in list 2023-10-25 19:13:36 -04:00
josh e480bd0ed0 Enable PIT ISR to count milliseconds 2023-10-25 12:02:44 -04:00
josh e357f2ba44 Initialize USB controllers from Usb instead of Pci 2023-10-24 10:44:48 -04:00
josh f8f9b72588 Store PCI addresses and types as 32-bit uints 2023-10-24 10:25:16 -04:00
josh d86bf47211 Store a List of discovered PCI devices 2023-10-24 08:49:11 -04:00
josh 757f8f8c65 Make A1.allocate() zero returned memory 2023-10-24 08:48:26 -04:00
josh 8303451929 Add List class 2023-10-24 08:48:00 -04:00
josh 1c6c922b45 Add Pci.Type struct 2023-10-22 21:30:36 -04:00
josh 7632445d43 Add console escape sequences to draw headings 2023-10-21 22:13:20 -04:00
josh 601ea50e4b Console: delay newline rendering until non newline character 2023-10-21 21:21:46 -04:00
josh 722494af44 Console: do not index nonexistent character codes 2023-10-21 21:04:18 -04:00
josh e1f38bd5ea Initialize RTC after APIC 2023-10-21 20:47:15 -04:00
josh bcf1bd3bde HELLO: Zero HULK BSS region after mapping it 2023-10-21 20:46:27 -04:00
josh f7dde241ad Split console into two pages 2023-10-21 20:15:11 -04:00
josh 8638840cd8 Add console header line 2023-10-21 17:08:45 -04:00
josh 4273c703e9 writef: split into writef() and writefv() 2023-10-21 16:45:41 -04:00
josh b2597fb5da Add hulk.ver module 2023-10-18 19:33:43 -04:00
josh 291ba2bc1c Remove xHCI TODO 2023-10-13 14:17:34 -04:00
josh 71bc3543a1 fontgen: show more error info for invalid character metrics 2023-09-26 12:00:22 -04:00
josh a87d24d417 Reduce kernel console font size slightly 2023-09-26 09:59:22 -04:00
josh 6fcc6da022 Remove APIC debug outputs 2023-09-24 11:03:21 -04:00
josh dc07fd0255 Document xHCI runtime registers and interrupter registers 2023-09-23 19:48:14 -04:00
josh eb0a4b2a4d Document xHCI port registers 2023-09-23 19:28:35 -04:00
josh 0ae3c6c96d Document xHCI operational registers 2023-09-23 11:59:20 -04:00
josh 4814b51daf Dump xHCI extended capabilities 2023-09-19 11:07:18 -04:00
josh 14bb3adf37 Document xHCI capability registers 2023-09-19 11:07:02 -04:00
josh cda45b205d Remove legacy PCI bus scanning 2023-09-17 16:13:37 -04:00
josh cfd42550fc Add struct definitions for all PCI header types 2023-09-17 15:22:58 -04:00
josh 673ce8f097 Scan PCI devices via MCFG table 2023-09-17 14:49:02 -04:00
josh ba0befa21b Check that needed ACPI tables are found 2023-09-17 13:40:26 -04:00
josh fa4de31aa4 Store pertinent ACPI table pointers 2023-09-17 11:22:58 -04:00
josh 3412d9ece9 Add Klog.fatal_error() 2023-09-17 11:15:02 -04:00
josh e8978c73f2 Move PCI initialization after ACPI/APIC/RTC 2023-09-17 11:00:48 -04:00
josh f79b0098c5 Map ACPI tables as disable cache + no execute 2023-09-17 09:12:20 -04:00
josh 10d7e7f0c6 Move parsing of ACPI tables into table structures
Move mapping ACPI table memory into common location
2023-09-17 09:08:01 -04:00
josh e088f942d1 Use Acpi.Header in ACPI table structures 2023-09-17 08:53:34 -04:00
josh 6514af8e94 Begin parsing MCFG ACPI table 2023-09-17 08:41:08 -04:00
josh 602a7525d2 Add %p format specifier for printing pointers 2023-09-16 17:09:55 -04:00
josh 617b861524 Size to hulk.elf.size 2023-09-15 13:38:25 -04:00
josh 2f968de7ed Disassemble to hulk.elf.txt 2023-09-15 13:37:48 -04:00
josh 68e85999fb Drop unused sections when linking HULK 2023-09-15 13:37:00 -04:00
josh 6b1445935c Update mk-vmdk task to have a file template since VBoxManage createmedium command was failing 2023-09-15 11:04:36 -04:00
josh 665d8aef80 Update qemu command to change machine to q35
This enables PCIe
2023-09-15 11:04:12 -04:00
josh af5ad73cf7 Update instructions for VirtualBox to change machine chipset
This enables PCIe
2023-09-15 11:03:39 -04:00
josh 4c67faaad4 Rework Kfont to store glyph top as offset from top of text row 2023-09-13 13:48:11 -04:00
josh 4fcea6a283 Reverse framebuffer vertical coordinates to start with 0 at top 2023-09-13 11:57:47 -04:00
josh c958b9ffcc Remove alpha-blending framebuffer functions 2023-09-13 10:57:45 -04:00
josh 3d911ab191 Adjust console text height by font baseline offset
This fixes having leftover pixels on screen bottom when scrolling the
console up.
2023-09-13 10:52:24 -04:00