1/*
2 * Copyright 2020, Data61, CSIRO (ABN 41 687 119 230)
3 * Copyright 2015, 2016 Hesham Almatary <heshamelmatary@gmail.com>
4 *
5 * SPDX-License-Identifier: BSD-2-Clause
6 */
7
8#pragma once
9
10#ifdef HAVE_AUTOCONF
11#include <autoconf.h>
12#endif
13
14#define seL4_WordBits           32
15/* log 2 bits in a word */
16#define seL4_WordSizeBits       2
17
18#define seL4_SlotBits           4
19#ifdef CONFIG_KERNEL_MCS
20#define seL4_NotificationBits   5
21#define seL4_ReplyBits          4
22#else
23#define seL4_NotificationBits   4
24#endif
25#define seL4_EndpointBits       4
26#define seL4_IPCBufferSizeBits  9
27#define seL4_TCBBits            9
28
29/* Untyped size limits */
30#define seL4_MinUntypedBits     4
31#define seL4_MaxUntypedBits     29
32
33/* RISC-V Sv32 pages/ptes sizes */
34#define seL4_PageTableEntryBits 2
35#define seL4_PageTableIndexBits 10
36
37#define seL4_PageBits           12
38#define seL4_LargePageBits      22
39#define seL4_PageTableBits      12
40#define seL4_VSpaceBits         seL4_PageTableBits
41
42#define seL4_NumASIDPoolsBits    5
43#define seL4_ASIDPoolIndexBits  4
44#define seL4_ASIDPoolBits       12
45#ifndef __ASSEMBLER__
46
47typedef enum {
48    seL4_VMFault_IP,
49    seL4_VMFault_Addr,
50    seL4_VMFault_PrefetchFault,
51    seL4_VMFault_FSR,
52    seL4_VMFault_Length,
53} seL4_VMFault_Msg;
54
55typedef enum {
56    seL4_UnknownSyscall_FaultIP,
57    seL4_UnknownSyscall_SP,
58    seL4_UnknownSyscall_RA,
59    seL4_UnknownSyscall_A0,
60    seL4_UnknownSyscall_A1,
61    seL4_UnknownSyscall_A2,
62    seL4_UnknownSyscall_A3,
63    seL4_UnknownSyscall_A4,
64    seL4_UnknownSyscall_A5,
65    seL4_UnknownSyscall_A6,
66    seL4_UnknownSyscall_Syscall,
67    seL4_UnknownSyscall_Length,
68} seL4_UnknownSyscall_Msg;
69
70typedef enum {
71    seL4_UserException_FaultIP,
72    seL4_UserException_SP,
73    seL4_UserException_Number,
74    seL4_UserException_Code,
75    seL4_UserException_Length,
76} seL4_UserException_Msg;
77
78#ifdef CONFIG_KERNEL_MCS
79typedef enum {
80    seL4_TimeoutReply_FaultIP,
81    seL4_TimeoutReply_LR,
82    seL4_TimeoutReply_SP,
83    seL4_TimeoutReply_GP,
84    seL4_TimeoutReply_s0,
85    seL4_TimeoutReply_s1,
86    seL4_TimeoutReply_s2,
87    seL4_TimeoutReply_s3,
88    seL4_TimeoutReply_s4,
89    seL4_TimeoutReply_s5,
90    seL4_TimeoutReply_s6,
91    seL4_TimeoutReply_s7,
92    seL4_TimeoutReply_s8,
93    seL4_TimeoutReply_s9,
94    seL4_TimeoutReply_s10,
95    seL4_TimeoutReply_s11,
96    seL4_TimeoutReply_a0,
97    seL4_TimeoutReply_a1,
98    seL4_TimeoutReply_a2,
99    seL4_TimeoutReply_a3,
100    seL4_TimeoutReply_a4,
101    seL4_TimeoutReply_a5,
102    seL4_TimeoutReply_a6,
103    seL4_TimeoutReply_a7,
104    seL4_TimeoutReply_t0,
105    seL4_TimeoutReply_t1,
106    seL4_TimeoutReply_t2,
107    seL4_TimeoutReply_t3,
108    seL4_TimeoutReply_t4,
109    seL4_TimeoutReply_t5,
110    seL4_TimeoutReply_t6,
111    seL4_TimeoutReply_TP,
112    seL4_TimeoutReply_Length,
113} seL4_TimeoutReply_Msg;
114
115typedef enum {
116    seL4_Timeout_Data,
117    seL4_Timeout_Consumed_HighBits,
118    seL4_Timeout_Consumed_LowBits,
119    seL4_Timeout_Length,
120} seL4_TimeoutMsg;
121#endif
122#endif /* __ASSEMBLER__ */
123
124/* First address in the virtual address space that is not accessible to user level */
125#define seL4_UserTop 0x80000000lu
126
127#ifdef CONFIG_ENABLE_BENCHMARKS
128/* size of kernel log buffer in bytes */
129#define seL4_LogBufferSize (LIBSEL4_BIT(20))
130#endif /* CONFIG_ENABLE_BENCHMARKS */
131