Commit Graph
100 Commits
Author SHA1 Message Date
josh d49f9e32cd dev checkpoint 2022-12-14 19:40:22 -05:00
josh b1a8f8d348 Handle local APIC exceptions 2022-12-07 23:24:01 -05:00
josh 9b52ae58e8 Get local APIC timer ready to run 2022-12-07 23:13:51 -05:00
josh 5799f94efe Configure local APIC interrupt vectors 2022-12-06 22:06:57 -05:00
josh 400a7b22db Enable local APIC interrupts 2022-12-06 21:22:56 -05:00
josh 2bba0dfca4 Add hulk.mtrr module 2022-11-08 21:49:41 -05:00
josh edba40b2c6 Implement frame buffer double-buffering
This slowed down drawing to video in QEMU/VirtualBox but greatly sped up
doing so on real hardware (no longer reading from video memory).
Despite the speed-up, it is still quite slow though.
2022-11-08 06:19:03 -05:00
josh 55604468c8 Allocate framebuffer buffer1 in HELLO 2022-11-07 21:27:52 -05:00
josh 71c30fa932 Reclaim bootloader page table pages 2022-11-06 21:59:42 -05:00
josh b3fb599b25 Move EFER initialization to initialize_cpu() 2022-11-05 22:49:57 -04:00
josh d357aada75 Map HULK regions separately 2022-11-05 22:45:35 -04:00
josh 1fef8ada29 Define acpi structs as static 2022-11-05 22:26:21 -04:00
josh 5231930543 Clean up ApicRegister 2022-11-05 22:22:09 -04:00
josh 95b9e4558a Move hulk.writef buffer variables to stack
Previously ldc2 was emitting AVX/SSE instructions to initialize these
buffers.
2022-11-05 22:06:18 -04:00
josh 354555d7f1 Disable AVX and SSE instruction generation for HULK 2022-11-05 22:03:13 -04:00
josh 1b69810e8f Turn on OSXSAVE 2022-11-05 21:17:30 -04:00
josh 64190b04cb Add initialize_cpu() 2022-11-05 20:27:48 -04:00
josh d7b12c7896 Run qemu with maximum supported host CPU features 2022-11-05 20:15:30 -04:00
josh 11f922da33 Add write_cr0() 2022-11-05 19:58:10 -04:00
josh 59e084c234 Add cpuid1() and output bit enums 2022-11-04 19:28:34 -04:00
josh f21ee0d149 Add enums for a few CPU register bits 2022-11-04 00:08:40 -04:00
josh 2a7c783bba Add write_cr4() 2022-11-03 23:31:55 -04:00
josh 1f2a2bea48 Add xgetbv()/xsetbv() 2022-11-03 22:45:35 -04:00
josh 8eedf4e267 Switch klog buffer to ubyte array to move it to bss section 2022-11-03 16:34:03 -04:00
josh ae49c29c75 Fail build if thread-local data is found 2022-11-03 16:17:42 -04:00
josh 4d88810fc1 Move hulk.writef hex character strings out of data section 2022-11-03 16:03:12 -04:00
josh ba9cf30e67 Clean up linker script symbols 2022-11-03 15:41:14 -04:00
josh b9675019e7 Rename BOOTX64.EFI -> HOS.EFI 2022-11-03 13:54:42 -04:00
josh aa9809e0ed README: add building instructions 2022-11-03 13:34:21 -04:00
josh 07202b902b README: fix headings 2022-11-03 13:30:09 -04:00
josh 08501e86bb README: Add HOS System Requirements 2022-11-03 13:29:05 -04:00
josh 10a2d63e08 Add instructions to run HOS from GRUB 2022-11-03 13:27:24 -04:00
josh 8aa01ba122 Build HELLO page tables from unused memory instead of scratch buffer 2022-11-02 22:49:42 -04:00
josh 0b326e2e36 Move PAGE_SIZE from hulk.hippo to hulk.pagetable 2022-11-01 22:23:26 -04:00
josh e49c27cbbc Increase scratch space to 10MB 2022-10-30 21:29:19 -04:00
josh 49677c8499 PageTableEntry improvements
- fix alias this
- add properties for dirty/accessed
- add opIndex for direct indexing
2022-10-29 22:07:38 -04:00
josh 1e1c389caf Turn on EFER NXE bit to allow no-execute pages 2022-10-27 23:42:18 -04:00
josh 7b531e36ea Fix HELLO check that HULK bss and stack region could be found 2022-10-26 23:26:25 -04:00
josh 7540d4302e Add a couple more page table flags 2022-10-26 23:18:08 -04:00
josh ba7c2996d5 Add MSR_EFER and rdmsr() 2022-10-26 22:45:09 -04:00
josh 707d42bec4 Remove PageTable.opIndex and .opIndexAssign, use .entry 2022-10-26 21:58:22 -04:00
josh 476ae7d6fd Move hos.* modules to hulk.* 2022-10-26 00:16:07 -04:00
josh 4a431f7d93 Use hulk.pagetable from hello 2022-10-26 00:05:49 -04:00
josh 555ec9b627 Split PageTable struct out from hulk.hurl to hulk.pagetable 2022-10-25 23:30:17 -04:00
josh c11361d40f Build new page tables in HULK 2022-10-19 23:59:11 -04:00
josh c8a81b1101 Add PAGE_SIZE constant 2022-10-18 21:53:38 -04:00
josh 41531cf4d2 Rename Hurl to hurl for consistency 2022-10-18 20:59:13 -04:00
josh edbe33bcfa Add ApicRegisters structure 2022-10-18 20:48:46 -04:00
josh 747e824dae Fix calcuation of reserved HULK binary pages 2022-10-18 16:23:13 -04:00
josh b1be5b888f Add apic module that does not do anything yet 2022-10-18 12:56:02 -04:00
josh dba58b2277 acpi: show APIC address found 2022-10-18 12:55:41 -04:00
josh 72b83b0c3c Hurl.debug_lookup(): show page table entry index 2022-10-18 12:54:27 -04:00
josh 90711adada Actually calling Hurl.initialize() helps a lot 2022-10-18 12:51:08 -04:00
josh 4f98c469b7 Add Hurl.debug_lookup() 2022-10-18 11:18:19 -04:00
josh 7d2b535df5 Add hulk.acpi module 2022-10-18 00:48:56 -04:00
josh 2f1a12be81 Add Hurl.map_range() 2022-10-18 00:48:40 -04:00
josh 5ca95a5662 memcpy*() should take const src ptr 2022-10-18 00:47:46 -04:00
josh 7471a846ec Locate the ACPI XSDT 2022-10-17 21:48:43 -04:00
josh 2ee920fdd2 Reset console position on OSOD 2022-10-14 17:10:32 -04:00
josh d24eafbd63 Tweak VirtualBox instructions 2022-10-14 16:05:35 -04:00
josh 6f94bc3ddd Add VirtualBox instructions and task to create a VMDK 2022-10-14 15:57:26 -04:00
josh 777820d471 Tell rscons the map files are side-effect files 2022-10-14 15:28:38 -04:00
josh b3ca9af48a Disable PIC 2022-09-06 22:35:41 -04:00
josh 43d945b5e8 Enable interrupts and halt CPU 2022-09-04 23:03:20 -04:00
josh bc7fd3f2fc Add idt module and set up IDT 2022-09-04 22:25:46 -04:00
josh b72c69ef1c Clear interrupts on HULK startup just in case 2022-09-01 15:50:59 -04:00
josh 66bd51ffb0 Add hulk.gdt module and create our own GDT 2022-09-01 15:43:00 -04:00
josh 16143a727a Avoid using SSE instructions in writef functions 2022-08-23 22:48:52 -04:00
josh 63e6fd4bb5 Add run-vb task 2022-08-20 19:57:10 -04:00
josh b4a4638a82 Create HOS.img with a GPT partition table and EFI partition 2022-08-20 19:01:25 -04:00
josh 93763917c1 Rename hos.img -> HOS.img 2022-08-18 23:03:16 -04:00
josh 743cf9ffef Update to rscons 3.1.0 2022-08-11 15:08:49 -04:00
josh b9f051017c Rename max_physical_address -> physical_address_limit 2022-05-03 19:46:46 -04:00
josh 59890868c1 Fix efibootmgr command to install HOS to physical machine 2022-05-03 16:18:47 -04:00
josh 6b715c9051 Add README.md with installation instructions 2022-05-01 16:17:11 -04:00
josh 89f7d2120f Add Hurl struct with map() method 2022-05-01 09:26:33 -04:00
josh 7515ebdf1c Fix hippo.allocate_page() 2022-05-01 09:20:41 -04:00
josh b0e59b3e26 Add hippo.allocate_page() 2022-04-26 21:45:17 -04:00
josh 153a8d43f1 Add hulk.linker_addresses module 2022-04-26 19:37:05 -04:00
josh bf9a005dbc Launch qemu with a USB XHCI controller and USB tablet device 2022-04-13 21:55:06 -04:00
josh 53e2e52bbe Scan for PCI devices 2022-04-13 21:54:28 -04:00
josh 12067b8e1a Remove src-old 2022-04-13 17:12:16 -04:00
josh 8278c4211b Add HIPPO module and starting tracking free physical pages 2022-03-29 22:24:14 -04:00
josh 3bdc5bccdd Pass page table address range to HULK on boot 2022-03-28 21:22:10 -04:00
josh f904ec2b48 Convert hello.console to use a namespacing struct 2022-03-28 15:18:31 -04:00
josh bcec23ef89 Update hello.scratch to use namespacing struct 2022-03-28 15:17:07 -04:00
josh d86745d91d Move bootinfo into HULK header 2022-03-27 16:14:54 -04:00
josh cf5956dcd3 Rename Header to HulkHeader 2022-03-27 09:45:09 -04:00
josh 8498de6b62 Add HURL; relocate kernel virtual regions 2022-03-26 10:41:53 -04:00
josh f761d0a445 Jump to HULK from assembly 2022-03-26 00:36:23 -04:00
josh f29bd9d00c Allocate HULK stack region from HELLO, translate memory region types 2022-03-26 00:29:19 -04:00
josh f236a64b21 HELLO: Be more welcoming 2022-03-25 13:17:22 -04:00
josh 1225e98276 Pass HULK physical memory info to kernel from HELLO 2022-03-25 13:16:36 -04:00
josh cb31e36e90 Clean up console 2022-03-25 12:37:18 -04:00
josh 0568a813f2 HELLO: Zero out HULK bss section 2022-03-25 11:53:01 -04:00
josh 37d5621e41 HULK console: clear last row when shifting rows up 2022-03-25 10:51:52 -04:00
josh 98e992aad0 Convert fb, console, klog to "static instance" namespacing structs 2022-03-25 10:48:32 -04:00
josh 06242a0c9f Add console, klog, and writef modules.
They are not complete, but adding to checkpoint progress.
2022-03-24 17:52:39 -04:00
josh e214a9c3de Fix call to fb.blend_alpha_bitmap() 2022-03-24 09:52:26 -04:00
josh c259ae4cee Add Framebuffer.copy_rows_up() 2022-03-23 22:12:38 -04:00