MOS Source Code
Loading...
Searching...
No Matches
platform_defs.hpp
Go to the documentation of this file.
1
// SPDX-License-Identifier: GPL-3.0-or-later
2
3
#pragma once
4
5
#include <
mos/types.hpp
>
6
#include <
mos_string.hpp
>
7
8
#define MOS_PLATFORM_PAGING_LEVELS 4
9
10
#define MOS_PLATFORM_HAS_FDT 1
11
12
#define PML2_HUGE_CAPABLE 1
13
#define PML3_HUGE_CAPABLE 1
14
#define PML4_HUGE_CAPABLE 1
15
16
#define PML1_SHIFT 12
17
#define PML2_SHIFT 21
18
#define PML3_SHIFT 30
19
#define PML4_SHIFT 39
20
21
#define PML1_MASK 0x1FFULL
22
#define PML2_MASK 0x1FFULL
23
#define PML3_MASK 0x1FFULL
24
#define PML4_MASK 0x1FFULL
25
26
#define PML1_ENTRIES 512
27
#define PML2_ENTRIES 512
28
#define PML3_ENTRIES 512
29
#define PML4_ENTRIES 512
30
31
#define MOS_USER_END_VADDR 0x00007FFFFFFFFFFF
32
#define MOS_KERNEL_START_VADDR 0xFFFF800000000000
33
34
#define MOS_ELF_PLATFORM EM_RISCV
35
36
#define MOS_PLATFORM_PANIC_INSTR "unimp"
37
38
// clang-format off
39
#define MOS_PLATFORM_PANIC_POINT_ASM \
40
".quad 1b\n\t" \
41
".quad %0\n\t" \
42
".quad %1\n\t" \
43
".quad %2\n\t"
44
// clang-format on
45
46
#define MOS_PLATFORM_DEBUG_MODULES(X) \
47
X(riscv64_startup) \
48
/**/
49
50
#define MOS_PLATFORM_MEMORY_BARRIER() __asm__ __volatile__("fence.i" ::: "memory")
51
52
struct
platform_regs_t
:
mos::NamedType
<"Platform.Registers">
53
{
54
platform_regs_t
()
55
{
56
memzero
(
this
,
sizeof
(*
this
));
57
}
58
59
platform_regs_t
(
const
platform_regs_t
*regs)
60
{
61
*
this
= *regs;
62
}
63
64
reg_t
ra
,
sp
,
gp
,
tp
;
65
reg_t
t0
,
t1
,
t2
;
66
reg_t
fp
,
s1
;
67
reg_t
a0
,
a1
,
a2
,
a3
,
a4
,
a5
,
a6
,
a7
;
68
reg_t
s2
,
s3
,
s4
,
s5
,
s6
,
s7
,
s8
,
s9
,
s10
,
s11
;
69
reg_t
t3
,
t4
,
t5
,
t6
;
70
71
// below are the CSR registers
72
reg_t
sstatus
,
sepc
;
73
};
74
75
typedef
struct
_platform_process_options
76
{
77
int
__unused
;
78
}
platform_process_options_t
;
79
80
typedef
struct
_platform_thread_options
81
{
82
reg64_t
f
[32];
// f0-f31
83
reg32_t
fcsr
;
// fcsr
84
}
platform_thread_options_t
;
85
86
typedef
struct
_platform_cpuinfo
87
{
88
int
__unused
;
89
}
platform_cpuinfo_t
;
90
91
typedef
struct
_platform_arch_info
92
{
93
void
*
fdt
;
94
ptr_t
rsdp_addr
;
95
u32
rsdp_revision
;
96
}
platform_arch_info_t
;
mos_string.hpp
memzero
#define memzero(ptr, size)
Definition
rpc_server.cpp:48
mos::NamedType
Definition
type_utils.hpp:39
platform_arch_info_t
Definition
platform_defs.hpp:92
platform_arch_info_t::rsdp_revision
u32 rsdp_revision
Definition
platform_defs.hpp:95
platform_arch_info_t::rsdp_addr
ptr_t rsdp_addr
Definition
platform_defs.hpp:94
platform_arch_info_t::fdt
void * fdt
pointer to the device tree
Definition
platform_defs.hpp:93
platform_cpuinfo_t
Definition
platform_defs.hpp:87
platform_cpuinfo_t::__unused
int __unused
Definition
platform_defs.hpp:88
platform_process_options_t
Definition
platform_defs.hpp:76
platform_process_options_t::__unused
int __unused
Definition
platform_defs.hpp:77
platform_regs_t::s4
reg_t s4
Definition
platform_defs.hpp:68
platform_regs_t::t4
reg_t t4
Definition
platform_defs.hpp:69
platform_regs_t::s1
reg_t s1
Definition
platform_defs.hpp:66
platform_regs_t::tp
reg_t tp
Definition
platform_defs.hpp:64
platform_regs_t::sepc
reg_t sepc
Definition
platform_defs.hpp:72
platform_regs_t::a7
reg_t a7
Definition
platform_defs.hpp:67
platform_regs_t::s2
reg_t s2
Definition
platform_defs.hpp:68
platform_regs_t::s6
reg_t s6
Definition
platform_defs.hpp:68
platform_regs_t::t6
reg_t t6
Definition
platform_defs.hpp:69
platform_regs_t::sstatus
reg_t sstatus
Definition
platform_defs.hpp:72
platform_regs_t::s8
reg_t s8
Definition
platform_defs.hpp:68
platform_regs_t::t3
reg_t t3
Definition
platform_defs.hpp:69
platform_regs_t::a4
reg_t a4
Definition
platform_defs.hpp:67
platform_regs_t::t1
reg_t t1
Definition
platform_defs.hpp:65
platform_regs_t::ra
reg_t ra
Definition
platform_defs.hpp:64
platform_regs_t::a0
reg_t a0
Definition
platform_defs.hpp:67
platform_regs_t::s9
reg_t s9
Definition
platform_defs.hpp:68
platform_regs_t::sp
reg_t sp
Definition
platform_defs.hpp:64
platform_regs_t::a5
reg_t a5
Definition
platform_defs.hpp:67
platform_regs_t::gp
reg_t gp
Definition
platform_defs.hpp:64
platform_regs_t::s10
reg_t s10
Definition
platform_defs.hpp:68
platform_regs_t::t0
reg_t t0
Definition
platform_defs.hpp:65
platform_regs_t::t2
reg_t t2
Definition
platform_defs.hpp:65
platform_regs_t::a3
reg_t a3
Definition
platform_defs.hpp:67
platform_regs_t::a1
reg_t a1
Definition
platform_defs.hpp:67
platform_regs_t::s5
reg_t s5
Definition
platform_defs.hpp:68
platform_regs_t::platform_regs_t
platform_regs_t(const platform_regs_t *regs)
Definition
platform_defs.hpp:59
platform_regs_t::t5
reg_t t5
Definition
platform_defs.hpp:69
platform_regs_t::a2
reg_t a2
Definition
platform_defs.hpp:67
platform_regs_t::platform_regs_t
platform_regs_t()
Definition
platform_defs.hpp:54
platform_regs_t::s7
reg_t s7
Definition
platform_defs.hpp:68
platform_regs_t::s11
reg_t s11
Definition
platform_defs.hpp:68
platform_regs_t::fp
reg_t fp
Definition
platform_defs.hpp:66
platform_regs_t::s3
reg_t s3
Definition
platform_defs.hpp:68
platform_regs_t::a6
reg_t a6
Definition
platform_defs.hpp:67
platform_thread_options_t
Definition
platform_defs.hpp:81
platform_thread_options_t::fcsr
reg32_t fcsr
Definition
platform_defs.hpp:83
platform_thread_options_t::f
reg64_t f[32]
Definition
platform_defs.hpp:82
reg_t
uintn reg_t
Definition
types.h:47
u32
unsigned int u32
Definition
types.h:17
reg32_t
u32 reg32_t
Definition
types.h:49
reg64_t
u64 reg64_t
Definition
types.h:50
ptr_t
unsigned long ptr_t
Definition
types.h:21
types.hpp
kernel
arch
riscv64
include
private
mos
platform
platform_defs.hpp
Generated on
for MOS Source Code by
1.14.0