From 7eb20457ff3d80cc81d54204ffd2c9edaf991905 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Wed, 17 Nov 2021 17:38:58 -0800 Subject: automated platform specific code parsing --- sys/linux/riscv64/arch/bits.h | 18 ++ sys/linux/riscv64/syscall.h | 376 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 394 insertions(+) create mode 100644 sys/linux/riscv64/arch/bits.h create mode 100644 sys/linux/riscv64/syscall.h (limited to 'sys/linux/riscv64') diff --git a/sys/linux/riscv64/arch/bits.h b/sys/linux/riscv64/arch/bits.h new file mode 100644 index 0000000..b09b933 --- /dev/null +++ b/sys/linux/riscv64/arch/bits.h @@ -0,0 +1,18 @@ +#pragma once + +/* base types */ +#define INT8 char +#define INT16 short +#define INT32 int +#define INT64 long +#define ADDR long + +/* abi */ +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +#define UINTPTR_MAX UINT64_MAX +#define UINTPTR_MAX UINT64_MAX +#define PTRDIFF_MIN INT64_MIN +#define PTRDIFF_MAX INT64_MAX +#define SIZE_MAX UINT64_MAX +#define LONG_MAX 0x7fffffffffffffffL diff --git a/sys/linux/riscv64/syscall.h b/sys/linux/riscv64/syscall.h new file mode 100644 index 0000000..b4f419c --- /dev/null +++ b/sys/linux/riscv64/syscall.h @@ -0,0 +1,376 @@ +#define ·IoSetUp 0 +#define ·IoDestroy 1 +#define ·IoSubmit 2 +#define ·IoCancel 3 +#define ·IoGetEvents 4 +#define ·SetXAttr 5 +#define ·LSetXAttr 6 +#define ·FSetXAttr 7 +#define ·GetXAttr 8 +#define ·LGetXAttr 9 +#define ·FGetXAttr 10 +#define ·ListXAttr 11 +#define ·LListXAttr 12 +#define ·FListXAttr 13 +#define ·RemoveXAttr 14 +#define ·LRemoveXAttr 15 +#define ·FRemoveXAttr 16 +#define ·GetCwd 17 +#define ·LookupDCookie 18 +#define ·EventFd2 19 +#define ·EPollCreate1 20 +#define ·EPollCtl 21 +#define ·EPollPWait 22 +#define ·Dup 23 +#define ·Dup3 24 +#define ·FCntl 25 +#define ·INotifyInIt1 26 +#define ·INotifyAddWatch 27 +#define ·INotifyRmWatch 28 +#define ·IoCtl 29 +#define ·IoPrIoSet 30 +#define ·IoPrIoGet 31 +#define ·FLock 32 +#define ·MkNodAt 33 +#define ·MkdirAt 34 +#define ·UnlinkAt 35 +#define ·SymLinkAt 36 +#define ·LinkAt 37 +#define ·UMount2 39 +#define ·Mount 40 +#define ·PivotRoot 41 +#define ·NfsServCtl 42 +#define ·StatFs 43 +#define ·FStatFs 44 +#define ·Truncate 45 +#define ·FTruncate 46 +#define ·FAllocate 47 +#define ·FAccessAt 48 +#define ·Chdir 49 +#define ·FChdir 50 +#define ·Chroot 51 +#define ·FChmod 52 +#define ·FChmodAt 53 +#define ·FChownAt 54 +#define ·FChown 55 +#define ·OpenAt 56 +#define ·Close 57 +#define ·VHangUp 58 +#define ·Pipe2 59 +#define ·QuotaCtl 60 +#define ·GetDents64 61 +#define ·LSeek 62 +#define ·Read 63 +#define ·Write 64 +#define ·ReadV 65 +#define ·WriteV 66 +#define ·PRead64 67 +#define ·PWrite64 68 +#define ·PreAdv 69 +#define ·PWriteV 70 +#define ·SendFile 71 +#define ·PSelect6 72 +#define ·PPoll 73 +#define ·SignalFd4 74 +#define ·VmSplice 75 +#define ·Splice 76 +#define ·Tee 77 +#define ·ReadLinkAt 78 +#define ·FStatAt 79 +#define ·FStat 80 +#define ·Sync 81 +#define ·FSync 82 +#define ·FdAtAsync 83 +#define ·SyncFileRange 84 +#define ·TimerFdCreate 85 +#define ·TimerFdSetTime 86 +#define ·TimerFdGetTime 87 +#define ·UTimeNsAt 88 +#define ·Acct 89 +#define ·CapGet 90 +#define ·CapSet 91 +#define ·Personality 92 +#define ·Exit 93 +#define ·ExitGroup 94 +#define ·WaitId 95 +#define ·SetTIdAddress 96 +#define ·UnShare 97 +#define ·Futex 98 +#define ·SetRobustList 99 +#define ·GetRobustList 100 +#define ·NanoSleep 101 +#define ·GetITimer 102 +#define ·SetITimer 103 +#define ·KExecLoad 104 +#define ·InItModule 105 +#define ·DeleteModule 106 +#define ·TimerCreate 107 +#define ·TimerGetTime 108 +#define ·TimerGetOverrun 109 +#define ·TimerSetTime 110 +#define ·TimerDelete 111 +#define ·ClockSetTime 112 +#define ·ClockGetTime 113 +#define ·ClockGetRes 114 +#define ·ClockNanoSleep 115 +#define ·SysLog 116 +#define ·PTrace 117 +#define ·SchedSetParam 118 +#define ·SchedSetScheduler 119 +#define ·SchedGetScheduler 120 +#define ·SchedGetParam 121 +#define ·SchedSetAffinity 122 +#define ·SchedGetAffinity 123 +#define ·SchedYield 124 +#define ·SchedGetPriorityMax 125 +#define ·SchedGetPriorityMin 126 +#define ·SchedRrGetInterval 127 +#define ·RestartSysCall 128 +#define ·Kill 129 +#define ·TKill 130 +#define ·TgKill 131 +#define ·SiGaltStack 132 +#define ·RtSigSuspend 133 +#define ·RtSigAction 134 +#define ·RtSigProcMask 135 +#define ·RtSigPending 136 +#define ·RtSigTimedWait 137 +#define ·RtSigQueueInfo 138 +#define ·RtSigReturn 139 +#define ·SetPriority 140 +#define ·GetPriority 141 +#define ·Reboot 142 +#define ·SetReGid 143 +#define ·SetGid 144 +#define ·SetReUid 145 +#define ·SetUid 146 +#define ·SetResUid 147 +#define ·GetResUid 148 +#define ·SetResGid 149 +#define ·GetResGid 150 +#define ·SetFsUid 151 +#define ·SetFsGid 152 +#define ·Times 153 +#define ·SetPGid 154 +#define ·GetPGid 155 +#define ·GetsId 156 +#define ·SetSId 157 +#define ·GetGroups 158 +#define ·SetGroups 159 +#define ·UName 160 +#define ·SetHostname 161 +#define ·SetDomainName 162 +#define ·GetRLimit 163 +#define ·SetRLimit 164 +#define ·GetRUsage 165 +#define ·UMask 166 +#define ·PrCtl 167 +#define ·GetCpu 168 +#define ·GetTimeOfDay 169 +#define ·SetTimeOfDay 170 +#define ·AdjTimex 171 +#define ·GetPid 172 +#define ·GetPPid 173 +#define ·GetUid 174 +#define ·GetEUid 175 +#define ·GetGid 176 +#define ·GetEGid 177 +#define ·GetTId 178 +#define ·SysInfo 179 +#define ·MQOpen 180 +#define ·MQUnlink 181 +#define ·MQTimedSend 182 +#define ·MQTimedReceive 183 +#define ·MQNotify 184 +#define ·MQGetSetAttr 185 +#define ·MsgGet 186 +#define ·MsgCtl 187 +#define ·MsgRecv 188 +#define ·MsgSend 189 +#define ·SemGet 190 +#define ·SemCtl 191 +#define ·SemTimeDop 192 +#define ·SemOp 193 +#define ·ShmGet 194 +#define ·ShmCtl 195 +#define ·ShmAt 196 +#define ·ShmDt 197 +#define ·Socket 198 +#define ·SocketPair 199 +#define ·Bind 200 +#define ·Listen 201 +#define ·Accept 202 +#define ·Connect 203 +#define ·GetSockName 204 +#define ·GetPeerName 205 +#define ·SendTo 206 +#define ·RecvFrom 207 +#define ·SetSockOpt 208 +#define ·GetSockOpt 209 +#define ·Shutdown 210 +#define ·SendMsg 211 +#define ·RecvMsg 212 +#define ·ReadAhead 213 +#define ·Brk 214 +#define ·MUnmap 215 +#define ·MRemap 216 +#define ·AddKey 217 +#define ·RequestKey 218 +#define ·KeyCtl 219 +#define ·Clone 220 +#define ·ExecVe 221 +#define ·MMap 222 +#define ·FAdvise64 223 +#define ·SwapOn 224 +#define ·SwapOff 225 +#define ·MProtect 226 +#define ·MSync 227 +#define ·MLock 228 +#define ·MUnlock 229 +#define ·MLockAll 230 +#define ·MUnlockAll 231 +#define ·MLoaded 232 +#define ·MAdvise 233 +#define ·RemapFilePages 234 +#define ·MBind 235 +#define ·GetMemPolicy 236 +#define ·SetMemPolicy 237 +#define ·MigratePages 238 +#define ·MovePages 239 +#define ·RtTgSigQueueInfo 240 +#define ·PerFEventOpen 241 +#define ·Accept4 242 +#define ·RecvMMsg 243 +#define ·ArchSpecificSysCall 244 +#define ·Wait4 260 +#define ·PrLimit64 261 +#define ·FaNotifyInIt 262 +#define ·FaNotifyMark 263 +#define ·NameToHandleAt 264 +#define ·OpenByHandleAt 265 +#define ·ClockAdjTime 266 +#define ·SyncFs 267 +#define ·SetNs 268 +#define ·SendMMsg 269 +#define ·ProcessVmReadV 270 +#define ·ProcessVmWriteV 271 +#define ·KCmp 272 +#define ·FinItModule 273 +#define ·SchedSetAttr 274 +#define ·SchedGetAttr 275 +#define ·RenameAt2 276 +#define ·SeccoMp 277 +#define ·GetRandom 278 +#define ·MemFdCreate 279 +#define ·BpF 280 +#define ·ExecVeAt 281 +#define ·UserFaultFd 282 +#define ·MemBarrier 283 +#define ·MLock2 284 +#define ·CopyFileRange 285 +#define ·PreAdv2 286 +#define ·PWriteV2 287 +#define ·PKeyMProtect 288 +#define ·PKeyAllOc 289 +#define ·PKeyFree 290 +#define ·StatX 291 +#define ·IoPGetEvents 292 +#define ·RSeq 293 +#define ·KExecFileLoad 294 +#define ·PidFdSendSignal 424 +#define ·IoUringSetUp 425 +#define ·IoUringEnter 426 +#define ·IoUringRegister 427 +#define ·OpenTree 428 +#define ·MoveMount 429 +#define ·FsOpen 430 +#define ·FsConfig 431 +#define ·FsMount 432 +#define ·FsPick 433 +#define ·PidFdOpen 434 +#define ·Clone3 435 +#define ·CloseRange 436 +#define ·OpenAt2 437 +#define ·PidFdGetFd 438 +#define ·FAccessAt2 439 + +/* assembly routines */ +#define asm __asm__ __volatile__ + +#define __asm_syscall(...) \ + asm("ecall\n\t" \ + : "=r"(a0) : __VA_ARGS__ : "memory"); \ + return a0; \ + +static inline +long _syscall0(long n) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0"); + __asm_syscall("r"(a7)) +} + +static inline +long _syscall1(long n, long a) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + __asm_syscall("r"(a7), "0"(a0)) +} + +static inline +long _syscall2(long n, long a, long b) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + __asm_syscall("r"(a7), "0"(a0), "r"(a1)) +} + +static inline +long _syscall3(long n, long a, long b, long c) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + register long a2 __asm__("a2") = c; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2)) +} + +static inline +long _syscall4(long n, long a, long b, long c, long d) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + register long a2 __asm__("a2") = c; + register long a3 __asm__("a3") = d; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3)) +} + +static inline +long _syscall5(long n, long a, long b, long c, long d, long e) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + register long a2 __asm__("a2") = c; + register long a3 __asm__("a3") = d; + register long a4 __asm__("a4") = e; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4)) +} + +static inline +long _syscall6(long n, long a, long b, long c, long d, long e, long f) +{ + register long a7 __asm__("a7") = n; + register long a0 __asm__("a0") = a; + register long a1 __asm__("a1") = b; + register long a2 __asm__("a2") = c; + register long a3 __asm__("a3") = d; + register long a4 __asm__("a4") = e; + register long a5 __asm__("a5") = f; + __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3), "r"(a4), "r"(a5)) +} + + -- cgit v1.2.1