diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-09-25 12:24:24 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-09-25 12:24:24 +0300 |
| commit | 13fe461374c0716404e2ee7726781b9cd12dbaa7 (patch) | |
| tree | 8081e42fbebe8561d87f4e685e0f2c38b40fc0c4 /arch/riscv/init/init.c | |
| parent | 68fcd6d027b88581992b4fb10ee1edc301e30678 (diff) | |
| download | kmi-13fe461374c0716404e2ee7726781b9cd12dbaa7.tar.gz kmi-13fe461374c0716404e2ee7726781b9cd12dbaa7.zip | |
Added default stack location
Diffstat (limited to 'arch/riscv/init/init.c')
| -rw-r--r-- | arch/riscv/init/init.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/riscv/init/init.c b/arch/riscv/init/init.c index 5612d0b..86c2563 100644 --- a/arch/riscv/init/init.c +++ b/arch/riscv/init/init.c @@ -112,8 +112,8 @@ static pm_t get_kerneltop() /* interesting, for some reason if I define these to be just char * pointers I get some wacky values. Not sure why that would be, but * this works. */ - extern char __init_end[], __kernel_size[]; - return (pm_t)__init_end + (pm_t)__kernel_size; + extern char __init_end, __kernel_size; + return (pm_t)&__init_end + (pm_t)&__kernel_size; } static pm_t get_initrdtop(void *fdt) @@ -146,11 +146,16 @@ static void setup_pmem(void *fdt) dbg("kernel_top:\t%#lx\n", kernel_top); dbg("fdt_top:\t%#lx\n", fdt_top); + /* TODO: check that pmap placement doesn't overwrite anything, such as + * stack or go over top address of memory */ /* riscv handles two byte boundaries better than one byte, so align * upwards */ populate_pmap(pmem.base, pmem.top - pmem.base, align_up(top + 1, 2)); /* TODO: mark used pages */ + + /* mark init stack */ + mark_used(PM_STACK_BASE, MM_MPAGE); } void init(void *fdt) |
