Commit Graph
100 Commits
Author SHA1 Message Date
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
josh d04c5444c7 fontgen: put character number before character data 2023-09-13 08:54:09 -04:00
josh 209658ee09 Use cache to mkdir_p for HulkBinObj builder 2023-09-10 09:48:07 -04:00
josh f3f45445b3 Determine XHCI controller addresses 2023-09-07 14:04:30 -04:00
josh 459d5c36aa Set alignment of XSDT table pointers to 4 instead of 8 2023-09-07 12:57:26 -04:00
josh 22c9891c4f Add page_address() 2023-09-07 12:51:41 -04:00
josh 2a832bfb8b Print progress messages for cross compiler toolchain installation 2023-09-06 22:58:18 -04:00
josh 496445e533 Fix linker script section placement 2023-09-06 16:40:17 -04:00
josh 156642293f Debug output HULK memory range end addresses 2023-09-04 21:20:10 -04:00
josh 4e46b98efc Capture QEMU serial port output 2023-09-04 21:13:35 -04:00
josh ce3e2c55df Store QEMU files in local qemu directory 2023-09-04 21:12:36 -04:00
josh cb24d00e5f Document running in QEMU in README 2023-09-04 21:04:30 -04:00
josh 4500f3cbca Write HELLO memory map debug data to serial port 2023-09-04 20:59:38 -04:00
josh 0781962e9f Rework HELLO console module to use hulk.writef 2023-09-04 16:17:47 -04:00
josh e25d28ebc7 Add serial module 2023-09-04 14:56:12 -04:00
josh 93a4065dea Add path to OVMF.fd for Arch 2023-09-04 14:07:05 -04:00
josh 5b017fb810 Add some xHCI register structures 2023-06-11 17:22:50 -04:00
josh 37814b4f86 Start on XHCI struct 2023-06-10 22:55:08 -04:00
josh 238659e94b Store PCI device mapped memory ranges 2023-06-10 22:22:09 -04:00
josh c16aa0e9c3 Add hulk.range 2023-06-10 22:21:55 -04:00
josh 2935903bae Map PCI device memory regions 2023-06-10 20:12:46 -04:00
josh 5179b5881b Read PCI device header type 2023-06-10 12:01:06 -04:00
josh a0c62937ff Remove Pci.init_device() for now 2023-06-10 11:28:51 -04:00
josh 657287c160 Move Pci.scan() recursion into scan() itself 2023-06-10 11:20:50 -04:00
josh d600e089e5 Add Pci.Device class 2023-06-10 11:16:27 -04:00
josh dd07a08388 Fix A1 allocator to map the correct pages 2023-06-10 11:06:41 -04:00
josh 63fbbc9051 Use ulong for round_up_power_2() 2023-06-10 10:59:46 -04:00
josh 3e32802862 Add A1.allocate() template to allocate struct/class instances 2023-06-10 10:30:56 -04:00
josh 40ff805f7d Add Pci.Address struct 2023-06-10 09:35:52 -04:00
josh 9ac69c9003 Add Pci.write_config_register() 2023-06-10 09:19:58 -04:00
josh 7aa28da1ef Allow pointers or integers for Hurl.*map_range() 2023-06-09 23:38:52 -04:00
josh 222a1efea4 Fix address calculation in Hurl.identity_map_range() 2023-06-09 23:27:20 -04:00
josh 7a4edf38f0 Scan for multi-function PCI devices 2023-06-08 20:28:32 -04:00
josh dda1b6379f Fix in32()/out32() to use uint instead of ulong 2023-06-08 16:07:44 -04:00
josh 98134957e7 Print APIC table signatures found 2023-06-08 13:21:43 -04:00
josh 22463e729b writef: add %c format specifier support 2023-06-08 13:21:24 -04:00
josh 8de86dd647 Add Pci.init_device() skeleton 2023-06-07 16:49:54 -04:00
josh f6fde01b06 Fix build error -- import hulk.util 2023-04-05 01:08:55 -04:00
josh ea6f485bd9 Add hulk.util and round_up_power_2() 2023-02-24 21:15:33 -05:00
josh 2ab388f2e9 Remove seconds counter printout 2023-02-24 20:58:11 -05:00
josh cc891f6d4d Assign PCI header fields to named variables 2023-02-24 20:53:46 -05:00
josh f5e5c40c12 Reduce Hurl.map() template overhead 2023-01-02 20:46:12 -05:00
josh 7b09c9beed Add A1 memory allocator 2023-01-01 22:02:48 -05:00
josh 103205bff2 Move address constants into Hurl struct 2023-01-01 21:04:29 -05:00