zeroing bss and changing init ordering
This commit is contained in:
parent
df0e78ede2
commit
19d981c878
3 changed files with 18 additions and 7 deletions
|
|
@ -8,14 +8,13 @@
|
||||||
|
|
||||||
void kmain()
|
void kmain()
|
||||||
{
|
{
|
||||||
kputs("----------------------");
|
zero_bss();
|
||||||
kprintf("Hello, from %s!", "SquidgeOS");
|
|
||||||
kputs("----------------------");
|
|
||||||
knewline();
|
|
||||||
plic_init();
|
plic_init();
|
||||||
uart_init();
|
uart_init();
|
||||||
page_init();
|
page_init();
|
||||||
interrupt_init();
|
interrupt_init();
|
||||||
|
kputs("----------------------");
|
||||||
kpanic_force();
|
kprintf("Hello, from %s!", "SquidgeOS");
|
||||||
|
kputs("----------------------");
|
||||||
|
knewline();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,16 +2,27 @@
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include "drivers/uart.h"
|
#include "drivers/uart.h"
|
||||||
#include "memory.h"
|
#include "memory.h"
|
||||||
|
#include "lib/string.h"
|
||||||
#include "interrupts.h"
|
#include "interrupts.h"
|
||||||
|
|
||||||
static struct Page *free_list = NULL;
|
static struct Page *free_list = NULL;
|
||||||
|
|
||||||
HeapHeader *heap_free_list;
|
HeapHeader *heap_free_list;
|
||||||
extern uint8_t _heap_start[]; // named in the linker script
|
|
||||||
|
// named in the linker script
|
||||||
|
extern uint8_t _heap_start[];
|
||||||
|
extern uint8_t _bss_start[];
|
||||||
|
extern uint8_t _bss_end[];
|
||||||
|
|
||||||
|
void zero_bss()
|
||||||
|
{
|
||||||
|
memset(_bss_start, 0, (size_t)_bss_end - (size_t)_bss_start);
|
||||||
|
}
|
||||||
|
|
||||||
void page_init()
|
void page_init()
|
||||||
{
|
{
|
||||||
kprint("Initialising page allocator...");
|
kprint("Initialising page allocator...");
|
||||||
|
|
||||||
uintptr_t start = ((uintptr_t)_heap_start + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1);
|
uintptr_t start = ((uintptr_t)_heap_start + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1);
|
||||||
uintptr_t end = 0x88000000; // Default QEMU RAM limit
|
uintptr_t end = 0x88000000; // Default QEMU RAM limit
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ typedef struct HeapHeader
|
||||||
struct HeapHeader *prev;
|
struct HeapHeader *prev;
|
||||||
} HeapHeader;
|
} HeapHeader;
|
||||||
|
|
||||||
|
void zero_bss();
|
||||||
void page_init();
|
void page_init();
|
||||||
void page_free(void *addr);
|
void page_free(void *addr);
|
||||||
void *page_alloc();
|
void *page_alloc();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue