aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv64/config.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/riscv64/config.h')
-rw-r--r--arch/riscv64/config.h53
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)