Add HURL; relocate kernel virtual regions

This commit is contained in:
josh committed 2022-03-26 10:41:53 -04:00
1 parent f761d0a445
commit 8498de6b62
6 files changed
+61 -26

No files matched your search

+1 -4
View File
@@ -13,7 +13,7 @@ struct BootInfo
*/
struct Framebuffer
{
/** Framebuffer base address. */
/** Framebuffer physical base address. */
uint * buffer;
/** Horizontal resolution. */
uint width;
@@ -68,6 +68,3 @@ struct BootInfo
/* Physical address of stack while jumping to HULK. */
ulong stack_phys;
}
/** HULK base virtual address. */
enum ulong HULK_VIRTUAL_START = 0x0000_4000_0000_0000u;
+9
View File
@@ -23,4 +23,13 @@ struct Header
/** Stack size. */
ulong stack_size;
/** Virtual base address. */
ulong virt_base;
/** Stack top virtual address. */
ulong virt_stack_top;
/** Framebuffer virtual address. */
ulong virt_fb_buffer;
}
+8 -4
View File
@@ -11,14 +11,18 @@ import hos.memory;
import ldc.attributes;
import hulk.kfont;
import hulk.klog;
import hulk.hurl;
extern extern(C) __gshared ubyte _hulk_total_size;
@(ldc.attributes.section(".hulk_header"))
private __gshared Header hulk_header = {
&_hulk_total_size,
&hulk_start,
16u * 1024u,
&_hulk_total_size, /* total_size */
&hulk_start, /* entry */
16u * 1024u, /* stack_size */
HULK_VIRTUAL_BASE_ADDRESS, /* virt_base */
HULK_VIRTUAL_STACK_TOP_ADDRESS, /* virt_stack_top */
HULK_VIRTUAL_FRAMEBUFFER_ADDRESS, /* virt_fb_buffer */
};
/**
@@ -28,7 +32,7 @@ private __gshared Header hulk_header = {
*/
void hulk_start(BootInfo * bootinfo)
{
fb.initialize(bootinfo.fb.buffer, bootinfo.fb.width, bootinfo.fb.height, bootinfo.fb.stride);
fb.initialize(cast(uint *)HULK_VIRTUAL_FRAMEBUFFER_ADDRESS, bootinfo.fb.width, bootinfo.fb.height, bootinfo.fb.stride);
console.initialize();
console.clear();
klog.initialize();
+1 -1
View File
@@ -1,6 +1,6 @@
SECTIONS
{
. = 0x0000400000000000;
. = 0xFFFF800000000000;
_hulk_mem_start = .;
.rodata BLOCK(4K) : ALIGN(4K)
+15
View File
@@ -0,0 +1,15 @@
/**
* HURL, the HOS Unreal Region Locator.
*
* HURL provides virtual memory management for HULK.
*/
module hulk.hurl;
/** 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;