diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2022-05-29 01:07:48 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2022-05-29 01:07:48 +0300 |
| commit | 0f4a751e60a6c8ac40592ff44c74f1c9e4846d9a (patch) | |
| tree | 96fb1e8479261a128f065ee493ee3a97a3b91949 /arch/riscv64/config.h | |
| parent | 013a27aec9370221e8afae188a8ed08ed2d406b0 (diff) | |
| download | kmi-0f4a751e60a6c8ac40592ff44c74f1c9e4846d9a.tar.gz kmi-0f4a751e60a6c8ac40592ff44c74f1c9e4846d9a.zip | |
continue documentation efforts.
Diffstat (limited to 'arch/riscv64/config.h')
| -rw-r--r-- | arch/riscv64/config.h | 53 |
1 files changed, 40 insertions, 13 deletions
diff --git a/arch/riscv64/config.h b/arch/riscv64/config.h index 33c84a0..bdf31ae 100644 --- a/arch/riscv64/config.h +++ b/arch/riscv64/config.h @@ -7,44 +7,74 @@ * and immutable parameters. Included on the command line by * -include. * + * Assume Sv39, probably wouldn't be too difficult to use runtime parameters + * instead. First 4K is reserved for NULL, but I suppose it could be mapped + * later if *absolutely* necessary. + * * @todo Consider separating user-specified and immutable parameters. + * @todo Write more thorough documentation, maybe a separate .md file? */ #include <apos/sizes.h> /* --- START ARCH USER CONFIG VALUES --- */ -/* physical address to which the kernel will be loaded */ +/** Physical address to where the OS image will be loaded. */ #define RAM_BASE 0x80000000 +/* --- END ARCH USER CONFIG VALUES --- */ + +/* don't touch >:( */ + +/** Physical address to where the kernel proper will be relocated. */ #define PM_KERN_BASE (RAM_BASE + SZ_512K) + +/** Maximum size of the kernel proper. Largely arbitrary. */ #define PM_KERN_SIZE (SZ_256K) + +/** Highest allowed physical address where kernel stuff may lie. */ #define PM_KERN_TOP (PM_KERN_BASE + PM_KERN_SIZE) -/* --- END ARCH USER CONFIG VALUES --- */ -/* don't touch >:( */ +/** Physical memory stack base. In this case, right after the kernel. */ +#define PM_STACK_BASE (PM_KERN_BASE + PM_KERN_SIZE) -#define PM_STACK_BASE (PM_KERN_BASE + SZ_256K) +/** Size of physical memory stack. */ #define PM_STACK_SIZE (SZ_256K) + +/** Top of physical memory stack. */ #define PM_STACK_TOP (PM_STACK_BASE + PM_STACK_SIZE) -#if __riscv_xlen == 64 +#if defined(riscv64) /* 64bit */ + +/** Direct map offset. */ #define VM_DMAP (0xffffffc000000000) /* testing for now */ + +/** Virtual address of kernel proper inside direct mapping. */ #define VM_KERN (VM_DMAP + SZ_256K) +/** Page reserved for kernel I/O. */ #define IO_PAGE 511UL + +/** Direct mapping starts from this page. */ #define KSTART_PAGE 256UL + +/** The RPC stack page. */ #define CSTACK_PAGE 255UL -/* assume Sv39, probably wouldn't be too difficult to use runtime parameters - * instead. First 4K is reserved for NULL, but I suppose it could be mapped - * later if *absolutely* necessary. */ +/** User virtual memory space start. */ #define UVMEM_START (SZ_4K) + +/** User virtual memory space end. */ #define UVMEM_END (SZ_256G - SZ_1G) -#define PROC_STACK_TOP (SZ_256G) -#define PROC_STACK_BASE (SZ_256G - SZ_1G) +/** RPC stack top. */ +#define RPC_STACK_TOP (SZ_256G) + +/** RPC stack base. */ +#define RPC_STACK_BASE (SZ_256G - SZ_1G) + #else /* 32bit */ + /* TODO: figure this stuff out */ #define VM_DMAP (0x000000000) #define VM_KERN (VM_DMAP + SZ_256K) @@ -55,9 +85,6 @@ #define KSTART_PAGE 512UL #define CSTACK_PAGE 511UL -/* assume Sv39, probably wouldn't be too difficult to use runtime parameters - * instead. First 4K is reserved for NULL, but I suppose it could be mapped - * later if *absolutely* necessary. */ #define UVMEM_START (SZ_4K) #define UVMEM_END (SZ_4G - SZ_8M) |
