Move address constants into Hurl struct

This commit is contained in:
Josh Holtrop 2023-01-01 21:04:29 -05:00
parent 25ee1775f0
commit 103205bff2
2 changed files with 16 additions and 16 deletions

View File

@ -29,9 +29,9 @@ private __gshared HulkHeader hulk_header = {
&_hulk_bss_size, /* hulk_bss_size */ &_hulk_bss_size, /* hulk_bss_size */
&hulk_start, /* entry */ &hulk_start, /* entry */
16u * 1024u, /* stack_size */ 16u * 1024u, /* stack_size */
HULK_VIRTUAL_BASE_ADDRESS, /* virt_base */ Hurl.HULK_BASE, /* virt_base */
HULK_VIRTUAL_STACK_TOP_ADDRESS, /* virt_stack_top */ Hurl.HULK_STACK_TOP, /* virt_stack_top */
HULK_VIRTUAL_FRAMEBUFFER_ADDRESS, /* virt_fb_buffer */ Hurl.HULK_FRAMEBUFFER, /* virt_fb_buffer */
}; };
private void initialize_cpu() private void initialize_cpu()
@ -58,7 +58,7 @@ void hulk_start()
initialize_cpu(); initialize_cpu();
Gdt.initialize(); Gdt.initialize();
Idt.initialize(); Idt.initialize();
Fb.initialize(cast(uint *)HULK_VIRTUAL_FRAMEBUFFER_ADDRESS, Fb.initialize(cast(uint *)Hurl.HULK_FRAMEBUFFER,
cast(uint *)hulk_header.bootinfo.fb_buffer1_phys, cast(uint *)hulk_header.bootinfo.fb_buffer1_phys,
hulk_header.bootinfo.fb.width, hulk_header.bootinfo.fb.width,
hulk_header.bootinfo.fb.height, hulk_header.bootinfo.fb.height,

View File

@ -14,17 +14,17 @@ import hulk.bootinfo;
import hulk.header; import hulk.header;
import hulk.linker_addresses; import hulk.linker_addresses;
/** HULK virtual base address. */
enum ulong HULK_VIRTUAL_BASE_ADDRESS = 0xFFFF_8000_0000_0000u;
/** HULK virtual stack top address. */
enum ulong HULK_VIRTUAL_STACK_TOP_ADDRESS = 0xFFFF_A000_0000_0000u;
/** HULK virtual framebuffer address. */
enum ulong HULK_VIRTUAL_FRAMEBUFFER_ADDRESS = 0xFFFF_A000_0000_0000u;
struct Hurl struct Hurl
{ {
/** HULK base address. */
enum ulong HULK_BASE = 0xFFFF_8000_0000_0000u;
/** HULK stack top address. */
enum ulong HULK_STACK_TOP = 0xFFFF_8001_0000_0000u;
/** HULK framebuffer address. */
enum ulong HULK_FRAMEBUFFER = 0xFFFF_8001_0000_0000u;
/** /**
* Pointer to the base page table. * Pointer to the base page table.
*/ */
@ -45,7 +45,7 @@ struct Hurl
physical_address_limit, physical_address_limit,
PT_WRITABLE | PT_NO_EXECUTE); PT_WRITABLE | PT_NO_EXECUTE);
ulong phys_address = header.bootinfo.hulk_phys; ulong phys_address = header.bootinfo.hulk_phys;
ulong virt_address = HULK_VIRTUAL_BASE_ADDRESS; ulong virt_address = HULK_BASE;
/* Map HULK header region. */ /* Map HULK header region. */
map_range(virt_address, map_range(virt_address,
phys_address, phys_address,
@ -79,12 +79,12 @@ struct Hurl
LinkerAddresses.hulk_bss_size, LinkerAddresses.hulk_bss_size,
PT_WRITABLE | PT_NO_EXECUTE); PT_WRITABLE | PT_NO_EXECUTE);
/* Map HULK stack. */ /* Map HULK stack. */
map_range(HULK_VIRTUAL_STACK_TOP_ADDRESS - header.stack_size, map_range(HULK_STACK_TOP - header.stack_size,
header.bootinfo.stack_phys, header.bootinfo.stack_phys,
header.stack_size, header.stack_size,
PT_WRITABLE | PT_NO_EXECUTE); PT_WRITABLE | PT_NO_EXECUTE);
/* Map device framebuffer. */ /* Map device framebuffer. */
map_range(HULK_VIRTUAL_FRAMEBUFFER_ADDRESS, map_range(HULK_FRAMEBUFFER,
cast(ulong)header.bootinfo.fb.buffer, cast(ulong)header.bootinfo.fb.buffer,
header.bootinfo.fb.height * header.bootinfo.fb.stride * 4u, header.bootinfo.fb.height * header.bootinfo.fb.stride * 4u,
PT_WRITABLE | PT_NO_EXECUTE); PT_WRITABLE | PT_NO_EXECUTE);