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