Zephyr API Documentation 4.4.0-rc1
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
syscall.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2025 NVIDIA Corporation <jholdsworth@nvidia.com>
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
15
16#ifndef ZEPHYR_INCLUDE_ARCH_OPENRISC_SYSCALL_H_
17#define ZEPHYR_INCLUDE_ARCH_OPENRISC_SYSCALL_H_
18
19/*
20 * Privileged mode system calls
21 */
22#define OR_SYSCALL_RUNTIME_EXCEPT 0
23#define OR_SYSCALL_IRQ_OFFLOAD 1
24
25#ifndef _ASMLANGUAGE
26
27#include <zephyr/types.h>
28#include <stdbool.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/*
35 * Syscall invocation macros. OpenRISC-specific machine constraints used to
36 * ensure args land in the proper registers.
37 */
39 uintptr_t arg3, uintptr_t arg4,
40 uintptr_t arg5, uintptr_t arg6,
41 uintptr_t call_id)
42{
43 register unsigned long r3 __asm__ ("r3") = arg1;
44 register unsigned long r4 __asm__ ("r4") = arg2;
45 register unsigned long r5 __asm__ ("r5") = arg3;
46 register unsigned long r6 __asm__ ("r6") = arg4;
47 register unsigned long r7 __asm__ ("r7") = arg5;
48 register unsigned long r8 __asm__ ("r8") = arg6;
49 register unsigned long r11 __asm__ ("r11") = call_id;
50
51 __asm__ volatile ("l.sys 0"
52 : "+r" (r11)
53 : "r" (r3), "r" (r4), "r" (r5), "r" (r6), "r" (r7),
54 "r" (r8)
55 : "memory");
56 return r11;
57}
58
60 uintptr_t arg3, uintptr_t arg4,
61 uintptr_t arg5,
62 uintptr_t call_id)
63{
64 register unsigned long r3 __asm__ ("r3") = arg1;
65 register unsigned long r4 __asm__ ("r4") = arg2;
66 register unsigned long r5 __asm__ ("r5") = arg3;
67 register unsigned long r6 __asm__ ("r6") = arg4;
68 register unsigned long r7 __asm__ ("r7") = arg5;
69 register unsigned long r11 __asm__ ("r11") = call_id;
70
71 __asm__ volatile ("l.sys 0"
72 : "+r" (r11)
73 : "r" (r3), "r" (r4), "r" (r5), "r" (r6), "r" (r7)
74 : "memory");
75 return r11;
76}
77
79 uintptr_t arg3, uintptr_t arg4,
80 uintptr_t call_id)
81{
82 register unsigned long r3 __asm__ ("r3") = arg1;
83 register unsigned long r4 __asm__ ("r4") = arg2;
84 register unsigned long r5 __asm__ ("r5") = arg3;
85 register unsigned long r6 __asm__ ("r6") = arg4;
86 register unsigned long r11 __asm__ ("r11") = call_id;
87
88 __asm__ volatile ("l.sys 0"
89 : "+r" (r11)
90 : "r" (r3), "r" (r4), "r" (r5), "r" (r6)
91 : "memory");
92 return r11;
93}
94
96 uintptr_t arg3,
97 uintptr_t call_id)
98{
99 register unsigned long r3 __asm__ ("r3") = arg1;
100 register unsigned long r4 __asm__ ("r4") = arg2;
101 register unsigned long r5 __asm__ ("r5") = arg3;
102 register unsigned long r11 __asm__ ("r11") = call_id;
103
104 __asm__ volatile ("l.sys 0"
105 : "+r" (r11)
106 : "r" (r3), "r" (r4), "r" (r5)
107 : "memory");
108 return r11;
109}
110
112 uintptr_t call_id)
113{
114 register unsigned long r3 __asm__ ("r3") = arg1;
115 register unsigned long r4 __asm__ ("r4") = arg2;
116 register unsigned long r11 __asm__ ("r11") = call_id;
117
118 __asm__ volatile ("l.sys 0"
119 : "+r" (r11)
120 : "r" (r3), "r" (r4)
121 : "memory");
122 return r11;
123}
124
126{
127 register unsigned long r3 __asm__ ("r3") = arg1;
128 register unsigned long r11 __asm__ ("r11") = call_id;
129
130 __asm__ volatile ("l.sys 0"
131 : "+r" (r11)
132 : "r" (r3)
133 : "memory");
134 return r11;
135}
136
138{
139 register unsigned long r11 __asm__ ("r11") = call_id;
140
141 __asm__ volatile ("l.sys 0"
142 : "+r" (r11)
143 :
144 : "memory");
145 return r11;
146}
147
148#ifdef __cplusplus
149}
150#endif
151
152#endif /* _ASMLANGUAGE */
153#endif /* ZEPHYR_INCLUDE_ARCH_OPENRISC_SYSCALL_H_ */
static uintptr_t arch_syscall_invoke6(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5, uintptr_t arg6, uintptr_t call_id)
Definition syscall.h:40
static __pinned_func uintptr_t arch_syscall_invoke0(uintptr_t call_id)
Definition syscall.h:132
static __pinned_func uintptr_t arch_syscall_invoke1(uintptr_t arg1, uintptr_t call_id)
Definition syscall.h:118
static __pinned_func uintptr_t arch_syscall_invoke3(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t call_id)
Definition syscall.h:90
static __pinned_func uintptr_t arch_syscall_invoke5(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5, uintptr_t call_id)
Definition syscall.h:59
static __pinned_func uintptr_t arch_syscall_invoke2(uintptr_t arg1, uintptr_t arg2, uintptr_t call_id)
Definition syscall.h:104
static __pinned_func uintptr_t arch_syscall_invoke4(uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t call_id)
Definition syscall.h:75
__UINTPTR_TYPE__ uintptr_t
Definition stdint.h:105