1/* 2 * Copyright 2001-2002, Travis Geiselbrecht. All rights reserved. 3 * Distributed under the terms of the NewOS License. 4 */ 5#ifndef _KERNEL_ARCH_RISCV64_KERNEL_H 6#define _KERNEL_ARCH_RISCV64_KERNEL_H 7 8 9#ifndef _ASSEMBLER 10#ifdef __cplusplus 11# include <arch/cpu.h> 12#endif 13#endif 14 15 16// memory layout 17#define KERNEL_LOAD_BASE 0xffffffc000000000 18 19 20#if (defined(__riscv) && __riscv_xlen == 64) 21 22// Base of the kernel address space. 23#define KERNEL_BASE 0xffffffc000000000 24#define KERNEL_SIZE 0x0000004000000000 25#define KERNEL_TOP (KERNEL_BASE + (KERNEL_SIZE - 1)) 26 27// Userspace address space layout. 28#define USER_BASE (0x0000000000000000 + 0x1000) 29#define USER_BASE_ANY USER_BASE 30#define USER_TOP (0x0000004000000000 - 1) 31#define USER_SIZE (USER_TOP - USER_BASE + 1) 32 33#define KERNEL_USER_DATA_BASE (USER_BASE + 0x3000000000) 34#define USER_STACK_REGION (USER_BASE + 0x3000000000) 35#define USER_STACK_REGION_SIZE ((USER_TOP - USER_STACK_REGION) + 1) 36 37#else /* ! riscv64 */ 38 #warning Unknown RISC-V Architecture! 39#endif 40 41#endif /* _KERNEL_ARCH_RISCV64_KERNEL_H */ 42