aboutsummaryrefslogtreecommitdiff
path: root/sys/linux/arm/syscall.h
blob: 0bc3f737326ddc0619fd38ad2759908fb2f1e004 (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));
}