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/i386/syscall.h | 505 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 505 insertions(+) create mode 100644 sys/linux/i386/syscall.h (limited to 'sys/linux/i386/syscall.h') diff --git a/sys/linux/i386/syscall.h b/sys/linux/i386/syscall.h new file mode 100644 index 0000000..21894bf --- /dev/null +++ b/sys/linux/i386/syscall.h @@ -0,0 +1,505 @@ +#define ·RestartSysCall 0 +#define ·Exit 1 +#define ·Fork 2 +#define ·Read 3 +#define ·Write 4 +#define ·Open 5 +#define ·Close 6 +#define ·WaitPid 7 +#define ·Create 8 +#define ·Link 9 +#define ·Unlink 10 +#define ·ExecVe 11 +#define ·Chdir 12 +#define ·Time 13 +#define ·MkNod 14 +#define ·Chmod 15 +#define ·LChown 16 +#define ·Break 17 +#define ·OldStat 18 +#define ·LSeek 19 +#define ·GetPid 20 +#define ·Mount 21 +#define ·UMount 22 +#define ·SetUid 23 +#define ·GetUid 24 +#define ·STime 25 +#define ·PTrace 26 +#define ·Alarm 27 +#define ·OldFStat 28 +#define ·Pause 29 +#define ·UTime 30 +#define ·STty 31 +#define ·GTty 32 +#define ·Access 33 +#define ·Nice 34 +#define ·FTime 35 +#define ·Sync 36 +#define ·Kill 37 +#define ·Rename 38 +#define ·Mkdir 39 +#define ·Rmdir 40 +#define ·Dup 41 +#define ·Pipe 42 +#define ·Times 43 +#define ·Prof 44 +#define ·Brk 45 +#define ·SetGid 46 +#define ·GetGid 47 +#define ·Signal 48 +#define ·GetEUid 49 +#define ·GetEGid 50 +#define ·Acct 51 +#define ·UMount2 52 +#define ·Lock 53 +#define ·IoCtl 54 +#define ·FCntl 55 +#define ·MPx 56 +#define ·SetPGid 57 +#define ·ULimit 58 +#define ·OldOldUName 59 +#define ·UMask 60 +#define ·Chroot 61 +#define ·UStat 62 +#define ·Dup2 63 +#define ·GetPPid 64 +#define ·GetPGrp 65 +#define ·SetSId 66 +#define ·SigAction 67 +#define ·SGetMask 68 +#define ·SSetMask 69 +#define ·SetReUid 70 +#define ·SetReGid 71 +#define ·SigSuspend 72 +#define ·SigPending 73 +#define ·SetHostname 74 +#define ·SetRLimit 75 +#define ·GetRUsage 77 +#define ·GetTimeOfDayTime32 78 +#define ·SetTimeOfDayTime32 79 +#define ·GetGroups 80 +#define ·SetGroups 81 +#define ·Select 82 +#define ·SymLink 83 +#define ·OldLStat 84 +#define ·ReadLink 85 +#define ·UseLib 86 +#define ·SwapOn 87 +#define ·Reboot 88 +#define ·ReadDir 89 +#define ·MMap 90 +#define ·MUnmap 91 +#define ·Truncate 92 +#define ·FTruncate 93 +#define ·FChmod 94 +#define ·FChown 95 +#define ·GetPriority 96 +#define ·SetPriority 97 +#define ·ProfIl 98 +#define ·StatFs 99 +#define ·FStatFs 100 +#define ·IoPerm 101 +#define ·SocketCall 102 +#define ·SysLog 103 +#define ·SetITimer 104 +#define ·GetITimer 105 +#define ·Stat 106 +#define ·LStat 107 +#define ·FStat 108 +#define ·OldUName 109 +#define ·IoPl 110 +#define ·VHangUp 111 +#define ·Idle 112 +#define ·Vm86Old 113 +#define ·Wait4 114 +#define ·SwapOff 115 +#define ·SysInfo 116 +#define ·Ipc 117 +#define ·FSync 118 +#define ·SigReturn 119 +#define ·Clone 120 +#define ·SetDomainName 121 +#define ·UName 122 +#define ·ModifyLdT 123 +#define ·AdjTimex 124 +#define ·MProtect 125 +#define ·SigProcMask 126 +#define ·CreateModule 127 +#define ·InItModule 128 +#define ·DeleteModule 129 +#define ·GetKernelSyms 130 +#define ·QuotaCtl 131 +#define ·GetPGid 132 +#define ·FChdir 133 +#define ·BdFlush 134 +#define ·SysFs 135 +#define ·Personality 136 +#define ·AFsSysCall 137 +#define ·SetFsUid 138 +#define ·SetFsGid 139 +#define ·LlSeek 140 +#define ·GetDents 141 +#define ·NewSelect 142 +#define ·FLock 143 +#define ·MSync 144 +#define ·ReadV 145 +#define ·WriteV 146 +#define ·GetsId 147 +#define ·FdAtAsync 148 +#define ·SysCtl 149 +#define ·MLock 150 +#define ·MUnlock 151 +#define ·MLockAll 152 +#define ·MUnlockAll 153 +#define ·SchedSetParam 154 +#define ·SchedGetParam 155 +#define ·SchedSetScheduler 156 +#define ·SchedGetScheduler 157 +#define ·SchedYield 158 +#define ·SchedGetPriorityMax 159 +#define ·SchedGetPriorityMin 160 +#define ·SchedRrGetInterval 161 +#define ·NanoSleep 162 +#define ·MRemap 163 +#define ·SetResUid 164 +#define ·GetResUid 165 +#define ·Vm86 166 +#define ·QueryModule 167 +#define ·Poll 168 +#define ·NfsServCtl 169 +#define ·SetResGid 170 +#define ·GetResGid 171 +#define ·PrCtl 172 +#define ·RtSigReturn 173 +#define ·RtSigAction 174 +#define ·RtSigProcMask 175 +#define ·RtSigPending 176 +#define ·RtSigTimedWait 177 +#define ·RtSigQueueInfo 178 +#define ·RtSigSuspend 179 +#define ·PRead64 180 +#define ·PWrite64 181 +#define ·Chown 182 +#define ·GetCwd 183 +#define ·CapGet 184 +#define ·CapSet 185 +#define ·SiGaltStack 186 +#define ·SendFile 187 +#define ·GetPMsg 188 +#define ·PutPMsg 189 +#define ·VFork 190 +#define ·UGetRLimit 191 +#define ·MMap2 192 +#define ·Truncate64 193 +#define ·FTruncate64 194 +#define ·Stat64 195 +#define ·LStat64 196 +#define ·FStat64 197 +#define ·LChown32 198 +#define ·GetUid32 199 +#define ·GetGid32 200 +#define ·GetEUid32 201 +#define ·GetEGid32 202 +#define ·SetReUid32 203 +#define ·SetReGid32 204 +#define ·GetGroups32 205 +#define ·SetGroups32 206 +#define ·FChown32 207 +#define ·SetResUid32 208 +#define ·GetResUid32 209 +#define ·SetResGid32 210 +#define ·GetResGid32 211 +#define ·Chown32 212 +#define ·SetUid32 213 +#define ·SetGid32 214 +#define ·SetFsUid32 215 +#define ·SetFsGid32 216 +#define ·PivotRoot 217 +#define ·MLoaded 218 +#define ·MAdvise 219 +#define ·GetDents64 220 +#define ·FCntl64 221 +#define ·GetTId 224 +#define ·ReadAhead 225 +#define ·SetXAttr 226 +#define ·LSetXAttr 227 +#define ·FSetXAttr 228 +#define ·GetXAttr 229 +#define ·LGetXAttr 230 +#define ·FGetXAttr 231 +#define ·ListXAttr 232 +#define ·LListXAttr 233 +#define ·FListXAttr 234 +#define ·RemoveXAttr 235 +#define ·LRemoveXAttr 236 +#define ·FRemoveXAttr 237 +#define ·TKill 238 +#define ·SendFile64 239 +#define ·Futex 240 +#define ·SchedSetAffinity 241 +#define ·SchedGetAffinity 242 +#define ·SetThreadArea 243 +#define ·GetThreadArea 244 +#define ·IoSetUp 245 +#define ·IoDestroy 246 +#define ·IoGetEvents 247 +#define ·IoSubmit 248 +#define ·IoCancel 249 +#define ·FAdvise64 250 +#define ·ExitGroup 252 +#define ·LookupDCookie 253 +#define ·EPollCreate 254 +#define ·EPollCtl 255 +#define ·EPollWait 256 +#define ·RemapFilePages 257 +#define ·SetTIdAddress 258 +#define ·TimerCreate 259 +#define ·StatFs64 268 +#define ·FStatFs64 269 +#define ·TgKill 270 +#define ·UTimes 271 +#define ·FAdvise6464 272 +#define ·VServer 273 +#define ·MBind 274 +#define ·GetMemPolicy 275 +#define ·SetMemPolicy 276 +#define ·MQOpen 277 +#define ·KExecLoad 283 +#define ·WaitId 284 +#define ·AddKey 286 +#define ·RequestKey 287 +#define ·KeyCtl 288 +#define ·IoPrIoSet 289 +#define ·IoPrIoGet 290 +#define ·INotifyInIt 291 +#define ·INotifyAddWatch 292 +#define ·INotifyRmWatch 293 +#define ·MigratePages 294 +#define ·OpenAt 295 +#define ·MkdirAt 296 +#define ·MkNodAt 297 +#define ·FChownAt 298 +#define ·FuTimesAt 299 +#define ·FStatAt64 300 +#define ·UnlinkAt 301 +#define ·RenameAt 302 +#define ·LinkAt 303 +#define ·SymLinkAt 304 +#define ·ReadLinkAt 305 +#define ·FChmodAt 306 +#define ·FAccessAt 307 +#define ·PSelect6 308 +#define ·PPoll 309 +#define ·UnShare 310 +#define ·SetRobustList 311 +#define ·GetRobustList 312 +#define ·Splice 313 +#define ·SyncFileRange 314 +#define ·Tee 315 +#define ·VmSplice 316 +#define ·MovePages 317 +#define ·GetCpu 318 +#define ·EPollPWait 319 +#define ·UTimeNsAt 320 +#define ·SignalFd 321 +#define ·TimerFdCreate 322 +#define ·EventFd 323 +#define ·FAllocate 324 +#define ·TimerFdSetTime32 325 +#define ·TimerFdGetTime32 326 +#define ·SignalFd4 327 +#define ·EventFd2 328 +#define ·EPollCreate1 329 +#define ·Dup3 330 +#define ·Pipe2 331 +#define ·INotifyInIt1 332 +#define ·PreAdv 333 +#define ·PWriteV 334 +#define ·RtTgSigQueueInfo 335 +#define ·PerFEventOpen 336 +#define ·RecvMMsg 337 +#define ·FaNotifyInIt 338 +#define ·FaNotifyMark 339 +#define ·PrLimit64 340 +#define ·NameToHandleAt 341 +#define ·OpenByHandleAt 342 +#define ·ClockAdjTime 343 +#define ·SyncFs 344 +#define ·SendMMsg 345 +#define ·SetNs 346 +#define ·ProcessVmReadV 347 +#define ·ProcessVmWriteV 348 +#define ·KCmp 349 +#define ·FinItModule 350 +#define ·SchedSetAttr 351 +#define ·SchedGetAttr 352 +#define ·RenameAt2 353 +#define ·SeccoMp 354 +#define ·GetRandom 355 +#define ·MemFdCreate 356 +#define ·BpF 357 +#define ·ExecVeAt 358 +#define ·Socket 359 +#define ·SocketPair 360 +#define ·Bind 361 +#define ·Connect 362 +#define ·Listen 363 +#define ·Accept4 364 +#define ·GetSockOpt 365 +#define ·SetSockOpt 366 +#define ·GetSockName 367 +#define ·GetPeerName 368 +#define ·SendTo 369 +#define ·SendMsg 370 +#define ·RecvFrom 371 +#define ·RecvMsg 372 +#define ·Shutdown 373 +#define ·UserFaultFd 374 +#define ·MemBarrier 375 +#define ·MLock2 376 +#define ·CopyFileRange 377 +#define ·PreAdv2 378 +#define ·PWriteV2 379 +#define ·PKeyMProtect 380 +#define ·PKeyAllOc 381 +#define ·PKeyFree 382 +#define ·StatX 383 +#define ·ArchPrCtl 384 +#define ·IoPGetEvents 385 +#define ·RSeq 386 +#define ·SemGet 393 +#define ·SemCtl 394 +#define ·ShmGet 395 +#define ·ShmCtl 396 +#define ·ShmAt 397 +#define ·ShmDt 398 +#define ·MsgGet 399 +#define ·MsgSend 400 +#define ·MsgRecv 401 +#define ·MsgCtl 402 +#define ·ClockGetTime64 403 +#define ·ClockSetTime64 404 +#define ·ClockAdjTime64 405 +#define ·ClockGetResTime64 406 +#define ·ClockNanoSleepTime64 407 +#define ·TimerGetTime64 408 +#define ·TimerSetTime64 409 +#define ·TimerFdGetTime64 410 +#define ·TimerFdSetTime64 411 +#define ·UTimeNsAtTime64 412 +#define ·PSelect6Time64 413 +#define ·PPollTime64 414 +#define ·IoPGetEventsTime64 416 +#define ·RecvMMsgTime64 417 +#define ·MQTimedSendTime64 418 +#define ·MQTimedReceiveTime64 419 +#define ·SemTimeDopTime64 420 +#define ·RtSigTimedWaitTime64 421 +#define ·FutexTime64 422 +#define ·SchedRrGetIntervalTime64 423 +#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__ + +#if SYSCALL_NO_TLS +#define SYSCALL_INSNS "int $128" +#else +#define SYSCALL_INSNS "call *%%gs:16" +#endif + +#define SYSCALL_INSNS_12 "xchg %%ebx,%%edx ; " SYSCALL_INSNS " ; xchg %%ebx,%%edx" +#define SYSCALL_INSNS_34 "xchg %%ebx,%%edi ; " SYSCALL_INSNS " ; xchg %%ebx,%%edi" + +static inline +long _syscall0(long n) +{ + ulong __ret; + asm(SYSCALL_INSNS : "=a"(__ret) : "a"(n) : "memory"); + return __ret; +} + +static inline +long _syscall1(long n, long a1) +{ + ulong __ret; + asm(SYSCALL_INSNS_12 : "=a"(__ret) : "a"(n), "d"(a1) : "memory"); + return __ret; +} + +static inline +long _syscall2(long n, long a1, long a2) +{ + ulong __ret; + asm(SYSCALL_INSNS_12 : "=a"(__ret) : "a"(n), "d"(a1), "c"(a2) : "memory"); + return __ret; +} + +static inline +long _syscall3(long n, long a1, long a2, long a3) +{ + ulong __ret; +#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM) + asm(SYSCALL_INSNS : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3) : "memory"); +#else + asm(SYSCALL_INSNS_34 : "=a"(__ret) : "a"(n), "D"(a1), "c"(a2), "d"(a3) : "memory"); +#endif + return __ret; +} + +static inline +long _syscall4(long n, long a1, long a2, long a3, long a4) +{ + ulong __ret; +#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM) + asm(SYSCALL_INSNS : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4) : "memory"); +#else + asm(SYSCALL_INSNS_34 : "=a"(__ret) : "a"(n), "D"(a1), "c"(a2), "d"(a3), "S"(a4) : "memory"); +#endif + return __ret; +} + +static inline +long _syscall5(long n, long a1, long a2, long a3, long a4, long a5) +{ + ulong __ret; +#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM) + asm(SYSCALL_INSNS + : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory"); +#else + asm("pushl %2 ; push %%ebx ; mov 4(%%esp),%%ebx ; " SYSCALL_INSNS " ; pop %%ebx ; add $4,%%esp" + : "=a"(__ret) : "a"(n), "g"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory"); +#endif + return __ret; +} + +static inline +long _syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6) +{ + ulong __ret; +#if !defined(__PIC__) || !defined(BROKEN_EBX_ASM) + asm("pushl %7 ; push %%ebp ; mov 4(%%esp),%%ebp ; " SYSCALL_INSNS " ; pop %%ebp ; add $4,%%esp" + : "=a"(__ret) : "a"(n), "b"(a1), "c"(a2), "d"(a3), "S"(a4), "D"(a5), "g"(a6) : "memory"); +#else + ulong a1a6[2] = { a1, a6 }; + asm("pushl %1 ; push %%ebx ; push %%ebp ; mov 8(%%esp),%%ebx ; mov 4(%%ebx),%%ebp ; mov (%%ebx),%%ebx ; " SYSCALL_INSNS " ; pop %%ebp ; pop %%ebx ; add $4,%%esp" + : "=a"(__ret) : "g"(&a1a6), "a"(n), "c"(a2), "d"(a3), "S"(a4), "D"(a5) : "memory"); +#endif + return __ret; +} + -- cgit v1.2.1