aboutsummaryrefslogtreecommitdiff
path: root/sys/linux/arm/syscall.h
blob: e7a8f89613ddff17d9324428a441a7dc434340a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
#define ·RestartSysCall                                             0
#define ·Exit                                                       1
#define ·Fork                                                       2
#define ·Read                                                       3
#define ·Write                                                      4
#define ·Open                                                       5
#define ·Close                                                      6
#define ·Create                                                     8
#define ·Link                                                       9
#define ·Unlink                                                    10
#define ·ExecVe                                                    11
#define ·Chdir                                                     12
#define ·MkNod                                                     14
#define ·Chmod                                                     15
#define ·LChown                                                    16
#define ·LSeek                                                     19
#define ·GetPid                                                    20
#define ·Mount                                                     21
#define ·SetUid                                                    23
#define ·GetUid                                                    24
#define ·PTrace                                                    26
#define ·Pause                                                     29
#define ·Access                                                    33
#define ·Nice                                                      34
#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 ·Brk                                                       45
#define ·SetGid                                                    46
#define ·GetGid                                                    47
#define ·GetEUid                                                   49
#define ·GetEGid                                                   50
#define ·Acct                                                      51
#define ·UMount2                                                   52
#define ·IoCtl                                                     54
#define ·FCntl                                                     55
#define ·SetPGid                                                   57
#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 ·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 ·SymLink                                                   83
#define ·ReadLink                                                  85
#define ·UseLib                                                    86
#define ·SwapOn                                                    87
#define ·Reboot                                                    88
#define ·MUnmap                                                    91
#define ·Truncate                                                  92
#define ·FTruncate                                                 93
#define ·FChmod                                                    94
#define ·FChown                                                    95
#define ·GetPriority                                               96
#define ·SetPriority                                               97
#define ·StatFs                                                    99
#define ·FStatFs                                                  100
#define ·SysLog                                                   103
#define ·SetITimer                                                104
#define ·GetITimer                                                105
#define ·Stat                                                     106
#define ·LStat                                                    107
#define ·FStat                                                    108
#define ·VHangUp                                                  111
#define ·Wait4                                                    114
#define ·SwapOff                                                  115
#define ·SysInfo                                                  116
#define ·FSync                                                    118
#define ·SigReturn                                                119
#define ·Clone                                                    120
#define ·SetDomainName                                            121
#define ·UName                                                    122
#define ·AdjTimex                                                 124
#define ·MProtect                                                 125
#define ·SigProcMask                                              126
#define ·InItModule                                               128
#define ·DeleteModule                                             129
#define ·QuotaCtl                                                 131
#define ·GetPGid                                                  132
#define ·FChdir                                                   133
#define ·BdFlush                                                  134
#define ·SysFs                                                    135
#define ·Personality                                              136
#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 ·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 ·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 ·GetDents64                                               217
#define ·PivotRoot                                                218
#define ·MLoaded                                                  219
#define ·MAdvise                                                  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 ·IoSetUp                                                  243
#define ·IoDestroy                                                244
#define ·IoGetEvents                                              245
#define ·IoSubmit                                                 246
#define ·IoCancel                                                 247
#define ·ExitGroup                                                248
#define ·LookupDCookie                                            249
#define ·EPollCreate                                              250
#define ·EPollCtl                                                 251
#define ·EPollWait                                                252
#define ·RemapFilePages                                           253
#define ·SetTIdAddress                                            256
#define ·TimerCreate                                              257
#define ·TimerSetTime32                                           258
#define ·TimerGetTime32                                           259
#define ·TimerGetOverrun                                          260
#define ·TimerDelete                                              261
#define ·ClockSetTime32                                           262
#define ·ClockGetTime32                                           263
#define ·ClockGetResTime32                                        264
#define ·ClockNanoSleepTime32                                     265
#define ·StatFs64                                                 266
#define ·FStatFs64                                                267
#define ·TgKill                                                   268
#define ·UTimes                                                   269
#define ·FAdvise6464                                              270
#define ·ArmFAdvise6464                                           270
#define ·PciConfigIoBase                                          271
#define ·PciConfigRead                                            272
#define ·PciConfigWrite                                           273
#define ·MQOpen                                                   274
#define ·MQUnlink                                                 275
#define ·MQTimedSend                                              276
#define ·MQTimedReceive                                           277
#define ·MQNotify                                                 278
#define ·MQGetSetAttr                                             279
#define ·WaitId                                                   280
#define ·Socket                                                   281
#define ·Bind                                                     282
#define ·Connect                                                  283
#define ·Listen                                                   284
#define ·Accept                                                   285
#define ·GetSockName                                              286
#define ·GetPeerName                                              287
#define ·SocketPair                                               288
#define ·Send                                                     289
#define ·SendTo                                                   290
#define ·Recv                                                     291
#define ·RecvFrom                                                 292
#define ·Shutdown                                                 293
#define ·SetSockOpt                                               294
#define ·GetSockOpt                                               295
#define ·SendMsg                                                  296
#define ·RecvMsg                                                  297
#define ·SemOp                                                    298
#define ·SemGet                                                   299
#define ·SemCtl                                                   300
#define ·MsgSend                                                  301
#define ·MsgRecv                                                  302
#define ·MsgGet                                                   303
#define ·MsgCtl                                                   304
#define ·ShmAt                                                    305
#define ·ShmDt                                                    306
#define ·ShmGet                                                   307
#define ·ShmCtl                                                   308
#define ·AddKey                                                   309
#define ·RequestKey                                               310
#define ·KeyCtl                                                   311
#define ·SemTimeDop                                               312
#define ·VServer                                                  313
#define ·IoPrIoSet                                                314
#define ·IoPrIoGet                                                315
#define ·INotifyInIt                                              316
#define ·INotifyAddWatch                                          317
#define ·INotifyRmWatch                                           318
#define ·MBind                                                    319
#define ·GetMemPolicy                                             320
#define ·SetMemPolicy                                             321
#define ·OpenAt                                                   322
#define ·MkdirAt                                                  323
#define ·MkNodAt                                                  324
#define ·FChownAt                                                 325
#define ·FuTimesAt                                                326
#define ·FStatAt64                                                327
#define ·UnlinkAt                                                 328
#define ·RenameAt                                                 329
#define ·LinkAt                                                   330
#define ·SymLinkAt                                                331
#define ·ReadLinkAt                                               332
#define ·FChmodAt                                                 333
#define ·FAccessAt                                                334
#define ·PSelect6                                                 335
#define ·PPoll                                                    336
#define ·UnShare                                                  337
#define ·SetRobustList                                            338
#define ·GetRobustList                                            339
#define ·Splice                                                   340
#define ·SyncFileRange2                                           341
#define ·ArmSyncFileRange                                         341
#define ·Tee                                                      342
#define ·VmSplice                                                 343
#define ·MovePages                                                344
#define ·GetCpu                                                   345
#define ·EPollPWait                                               346
#define ·KExecLoad                                                347
#define ·UTimeNsAt                                                348
#define ·SignalFd                                                 349
#define ·TimerFdCreate                                            350
#define ·EventFd                                                  351
#define ·FAllocate                                                352
#define ·TimerFdSetTime32                                         353
#define ·TimerFdGetTime32                                         354
#define ·SignalFd4                                                355
#define ·EventFd2                                                 356
#define ·EPollCreate1                                             357
#define ·Dup3                                                     358
#define ·Pipe2                                                    359
#define ·INotifyInIt1                                             360
#define ·PreAdv                                                   361
#define ·PWriteV                                                  362
#define ·RtTgSigQueueInfo                                         363
#define ·PerFEventOpen                                            364
#define ·RecvMMsg                                                 365
#define ·Accept4                                                  366
#define ·FaNotifyInIt                                             367
#define ·FaNotifyMark                                             368
#define ·PrLimit64                                                369
#define ·NameToHandleAt                                           370
#define ·OpenByHandleAt                                           371
#define ·ClockAdjTime                                             372
#define ·SyncFs                                                   373
#define ·SendMMsg                                                 374
#define ·SetNs                                                    375
#define ·ProcessVmReadV                                           376
#define ·ProcessVmWriteV                                          377
#define ·KCmp                                                     378
#define ·FinItModule                                              379
#define ·SchedSetAttr                                             380
#define ·SchedGetAttr                                             381
#define ·RenameAt2                                                382
#define ·SeccoMp                                                  383
#define ·GetRandom                                                384
#define ·MemFdCreate                                              385
#define ·BpF                                                      386
#define ·ExecVeAt                                                 387
#define ·UserFaultFd                                              388
#define ·MemBarrier                                               389
#define ·MLock2                                                   390
#define ·CopyFileRange                                            391
#define ·PreAdv2                                                  392
#define ·PWriteV2                                                 393
#define ·PKeyMProtect                                             394
#define ·PKeyAllOc                                                395
#define ·PKeyFree                                                 396
#define ·StatX                                                    397
#define ·RSeq                                                     398
#define ·IoPGetEvents                                             399
#define ·MigratePages                                             400
#define ·KExecFileLoad                                            401
#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__

#ifdef __thumb__

#define __ASM____R7__
#define __asm_syscall(...) do { \
    asm( "mov %1,r7 ; mov r7,%2 ; svc 0 ; mov r7,%1" \
    : "=r"(r0), "=&r"((int){0}) : __VA_ARGS__ : "memory"); \
    return r0; \
    } while (0)

#else

#define __ASM____R7__ __asm__("r7")
#define __asm_syscall(...) do { \
    asm( "svc 0" \
    : "=r"(r0) : __VA_ARGS__ : "memory"); \
    return r0; \
    } while (0)
#endif

#ifdef __thumb2__
#define R7_OPERAND "rI"(r7)
#else
#define R7_OPERAND "r"(r7)
#endif

static inline
long _syscall0(long n)
{
    register long r7 __ASM____R7__ = n;
    register long r0 __asm__("r0");
    __asm_syscall(R7_OPERAND);
}

static inline
long _syscall1(long n, long a)
{
    register long r7 __ASM____R7__ = n;
    register long r0 __asm__("r0") = a;
    __asm_syscall(R7_OPERAND, "0"(r0));
}

static inline
long _syscall2(long n, long a, long b)
{
    register long r7 __ASM____R7__ = n;
    register long r0 __asm__("r0") = a;
    register long r1 __asm__("r1") = b;
    __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1));
}

static inline
long _syscall3(long n, long a, long b, long c)
{
    register long r7 __ASM____R7__ = n;
    register long r0 __asm__("r0") = a;
    register long r1 __asm__("r1") = b;
    register long r2 __asm__("r2") = c;
    __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2));
}

static inline
long _syscall4(long n, long a, long b, long c, long d)
{
    register long r7 __ASM____R7__ = n;
    register long r0 __asm__("r0") = a;
    register long r1 __asm__("r1") = b;
    register long r2 __asm__("r2") = c;
    register long r3 __asm__("r3") = d;
    __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3));
}

static inline
long _syscall5(long n, long a, long b, long c, long d, long e)
{
    register long r7 __ASM____R7__ = n;
    register long r0 __asm__("r0") = a;
    register long r1 __asm__("r1") = b;
    register long r2 __asm__("r2") = c;
    register long r3 __asm__("r3") = d;
    register long r4 __asm__("r4") = e;
    __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
}

static inline
long _syscall6(long n, long a, long b, long c, long d, long e, long f)
{
    register long r7 __ASM____R7__ = n;
    register long r0 __asm__("r0") = a;
    register long r1 __asm__("r1") = b;
    register long r2 __asm__("r2") = c;
    register long r3 __asm__("r3") = d;
    register long r4 __asm__("r4") = e;
    register long r5 __asm__("r5") = f;
    __asm_syscall(R7_OPERAND, "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5));
}