version splash

This commit is contained in:
2026-01-04 11:00:30 +01:00
parent be1be41a64
commit d9dfd4c749
3 changed files with 28 additions and 20 deletions

View File

@@ -1,6 +1,10 @@
#ifndef KERNEL_H
#define KERNEL_H
#define PEPPEROS_VERSION_MAJOR "0"
#define PEPPEROS_VERSION_MINOR "0"
#define PEPPEROS_VERSION_PATCH "1"
enum ErrorCodes
{
ENOMEM,
@@ -20,4 +24,12 @@ enum ErrorCodes
void hcf();
#define assert(check) do { if(!(check)) hcf(); } while(0)
struct boot_context
{
struct limine_framebuffer* fb;
struct limine_memmap_response* mmap;
struct limine_hhdm_response* hhdm;
struct limine_kernel_address_response* kaddr;
};
#endif

View File

@@ -64,28 +64,27 @@ void hcf()
}
}
struct boot_context boot_ctx;
// This is our entry point
void kmain()
{
if (!LIMINE_BASE_REVISION_SUPPORTED) hcf();
if (framebuffer_request.response == NULL || framebuffer_request.response->framebuffer_count < 1) hcf();
// We should probably grab all the boot info in a boot context struct
// that would be a bit cleaner than this mess
// Populate boot context
boot_ctx.fb = framebuffer_request.response ? framebuffer_request.response->framebuffers[0] : NULL;
boot_ctx.mmap = memmap_request.response ? memmap_request.response : NULL;
boot_ctx.hhdm = hhdm_request.response ? hhdm_request.response : NULL;
boot_ctx.kaddr = kerneladdr_request.response ? kerneladdr_request.response : NULL;
// Get the first framebuffer from the response
framebuffer = framebuffer_request.response->framebuffers[0];
serial_init();
if (memmap_request.response == NULL) hcf();
memmap_display(memmap_request.response);
if (hhdm_request.response == NULL) hcf();
hhdm_display(hhdm_request.response);
if (kerneladdr_request.response == NULL) hcf();
DEBUG("kernel: phys_base=0x%p virt_base=0x%p", kerneladdr_request.response->physical_base, kerneladdr_request.response->virtual_base);
memmap_display(boot_ctx.mmap);
hhdm_display(boot_ctx.hhdm);
DEBUG("kernel: phys_base=0x%p virt_base=0x%p", boot_ctx.kaddr->physical_base, boot_ctx.kaddr->virtual_base);
CLEAR_INTERRUPTS;
gdt_init();
@@ -93,10 +92,10 @@ void kmain()
timer_init();
SET_INTERRUPTS;
pmm_init(memmap_request.response, hhdm_request.response);
pmm_init(boot_ctx.mmap, boot_ctx.hhdm);
// Remap kernel , HHDM and framebuffer
paging_init(kerneladdr_request.response, framebuffer);
paging_init(boot_ctx.kaddr, boot_ctx.fb);
kheap_init();
@@ -110,10 +109,7 @@ void kmain()
keyboard_init(FR);
term_init();
// Draw something
printf("%s, %s!\n", "Hello", "world");
// Yoohoooooo!
//DEBUG("kernel initialized successfully! hanging... wow=%d", 42);
printf("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non justo a magna bibendum auctor viverra rutrum diam. In hac habitasse platea dictumst. Vestibulum suscipit ipsum eget tortor maximus lobortis. Donec vel ipsum id lacus fringilla bibendum id eget risus. Fusce vestibulum diam sit amet nunc ultricies, nec rutrum nibh congue. Donec fringilla a dui sit amet ullamcorper. Donec pharetra quis tortor id congue. Aliquam erat volutpat. Duis suscipit nulla vel ligula iaculis, in gravida mauris pellentesque. Vestibulum nunc nisl, posuere eu eros et, dictum molestie dolor. Donec posuere laoreet hendrerit. Suspendisse potenti. Proin fringilla vehicula malesuada. Quisque a dui est. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Curabitur nec aliquam lacus, at lacinia enim. ");
kputs("pepperOS version "PEPPEROS_VERSION_MAJOR"."PEPPEROS_VERSION_MINOR"."PEPPEROS_VERSION_PATCH"\n");
hcf();
}

View File

@@ -49,7 +49,7 @@ void vmm_setup_pt_root()
DEBUG("VMM setup: vmm_pt_root=0x%p (phys=0x%p)", vmm_pt_root, phys);
}
void* vmm_alloc(size_t length, size_t flags)
/* void* vmm_alloc(size_t length, size_t flags)
{
// We will try to allocate at least length bytes, which have to be rounded UP to
// the next page so its coherent with the PMM
@@ -58,7 +58,7 @@ void* vmm_alloc(size_t length, size_t flags)
// Need to implement this (as linked list)
// but for now kernel heap is sufficient
// The VMM will prob be more useful when we have userspace
}
} */
void vmm_init()
{