typo
[lnanohttp.git] / ulinux / archs / x86 / sysc.h
bloba29cdf9121e1e5de3ba37ef7835d1a99c64fbeeb
1 #ifndef ULINUX_ARCH_SYSC_H
2 #define ULINUX_ARCH_SYSC_H
3 /*******************************************************************************
4 this code is protected by the GNU affero GPLv3
5 author:Sylvain BERTRAND <sylvain.bertrand AT gmail dot com>
6 *******************************************************************************/
8 long ulinux_sysc_0(long name);
9 long ulinux_sysc_1(long name,long a1);
10 long ulinux_sysc_2(long name,long a1,long a2);
11 long ulinux_sysc_3(long name,long a1,long a2,long a3);
12 long ulinux_sysc_4(long name,long a1,long a2,long a3,long a4);
13 long ulinux_sysc_5(long name,long a1,long a2,long a3,long a4,long a5);
14 long ulinux_sysc_6(long name,long a1,long a2,long a3,long a4,long a5,long a6);
16 #define wrap_ulinux_sysc_0(name) wrap_ulinux_sysc_0(name);
17 #define wrap_ulinux_sysc_1(name,a1) ulinux_sysc_1(name,(long)(a1))
18 #define wrap_ulinux_sysc_2(name,a1,a2) ulinux_sysc_2(name,(long)(a1),(long)(a2))
19 #define wrap_ulinux_sysc_3(name,a1,a2,a3) ulinux_sysc_3(name,(long)(a1),(long)(a2),(long)(a3))
20 #define wrap_ulinux_sysc_4(name,a1,a2,a3,a4) ulinux_sysc_4(name,(long)(a1),(long)(a2),(long)(a3),(long)(a4))
21 #define wrap_ulinux_sysc_5(name,a1,a2,a3,a4,a5) ulinux_sysc_5(name,(long)(a1),(long)(a2),(long)(a3),(long)(a4),(long)(a5))
22 #define wrap_ulinux_sysc_6(name,a1,a2,a3,a4,a5,a6) ulinux_sysc_6(name,(long)(a1),(long)(a2),(long)(a3),(long)(a4),(long)(a5),(long)(a6))
24 #define ulinux_sysc(name,nr,...) \
25 wrap_ulinux_sysc_##nr(__ULINUX_NR_##name,##__VA_ARGS__)
27 #if 0
28 #define ulinux_sysc(name,nr,args...) \
29 ({ \
30 unsigned long resultvar; \
31 SYSC_LOAD_ARGS_##nr(args) \
32 SYSC_LOAD_REGS_##nr \
33 __asm__ __volatile__ ( \
34 "movl %1,%%eax\n\tint $0x80\n\t" \
35 :"=a"(resultvar) \
36 :"i"(__ULINUX_NR_##name)SYSC_ASM_ARGS_##nr \
37 :"memory","cc" \
38 ); \
39 (long)resultvar; \
43 /*----------------------------------------------------------------------------*/
44 #define SYSC_LOAD_ARGS_0()
45 #define SYSC_LOAD_REGS_0
46 #define SYSC_ASM_ARGS_0
47 /*----------------------------------------------------------------------------*/
50 /*----------------------------------------------------------------------------*/
51 /*in pic (position independent code), ebx must be saved*/
52 #ifdef __pic__
53 #define SYSC_LOAD_ARGS_1(a1) \
54 long __arg1=(long)(a1); \
55 SYSC_LOAD_ARGS_0()
57 #define SYSC_LOAD_REGS_1 \
58 ({ \
59 __asm__ __volatile__ ( \
60 "movl %0,%%ebx\n\t" \
61 : \
62 :"r"(__arg1) \
63 :"cc" \
64 ); \
65 SYSC_LOAD_REGS_0 \
66 });
67 #define SYSC_ASM_ARGS_1 SYSC_ASM_ARGS_0,"r"(__arg1)
68 #else/*__pic__*/
69 #define SYSC_LOAD_ARGS_1(a1) \
70 long __arg1=(long)(a1); \
71 SYSC_LOAD_ARGS_0()
73 #define SYSC_LOAD_REGS_1 \
74 register long _a1 ("ebx")=__arg1; \
75 SYSC_LOAD_REGS_0
77 #define SYSC_ASM_ARGS_1 SYSC_ASM_ARGS_0,"r"(_a1)
78 #endif
79 /*----------------------------------------------------------------------------*/
82 /*----------------------------------------------------------------------------*/
83 #define SYSC_LOAD_ARGS_2(a1,a2) \
84 long __arg2=(long)(a2); \
85 SYSC_LOAD_ARGS_1(a1)
87 #define SYSC_LOAD_REGS_2 \
88 register long _a2 asm("ecx")=__arg2; \
89 SYSC_LOAD_REGS_1
91 #define SYSC_ASM_ARGS_2 SYSC_ASM_ARGS_1,"r"(_a2)
92 /*----------------------------------------------------------------------------*/
95 /*----------------------------------------------------------------------------*/
96 #define SYSC_LOAD_ARGS_3(a1,a2,a3) \
97 long __arg3=(long)(a3); \
98 SYSC_LOAD_ARGS_2(a1,a2)
100 #define SYSC_LOAD_REGS_3 \
101 register long _a3 asm("edx")=__arg3; \
102 SYSC_LOAD_REGS_2
104 #define SYSC_ASM_ARGS_3 SYSC_ASM_ARGS_2,"r"(_a3)
105 /*----------------------------------------------------------------------------*/
108 /*----------------------------------------------------------------------------*/
109 #define SYSC_LOAD_ARGS_4(a1,a2,a3,a4) \
110 long __arg4=(long)(a4); \
111 SYSC_LOAD_ARGS_3(a1,a2,a3)
113 #define SYSC_LOAD_REGS_4 \
114 register long _a4 asm("esi")=__arg4; \
115 SYSC_LOAD_REGS_3
117 #define SYSC_ASM_ARGS_4 SYSC_ASM_ARGS_3,"r"(_a4)
118 /*----------------------------------------------------------------------------*/
121 /*----------------------------------------------------------------------------*/
122 #define SYSC_LOAD_ARGS_5(a1,a2,a3,a4,a5) \
123 long __arg5=(long)(a5); \
124 SYSC_LOAD_ARGS_4(a1,a2,a3,a4)
126 #define SYSC_LOAD_REGS_5 \
127 register long _a5 asm("edi")=__arg5; \
128 SYSC_LOAD_REGS_4
130 #define SYSC_ASM_ARGS_5 SYSC_ASM_ARGS_4,"r"(_a5)
131 /*----------------------------------------------------------------------------*/
132 #endif
135 /*============================================================================*/
136 #define __ULINUX_NR_restart_syscall 0
137 #define __ULINUX_NR_exit 1
138 #define __ULINUX_NR_fork 2
139 #define __ULINUX_NR_read 3
140 #define __ULINUX_NR_write 4
141 #define __ULINUX_NR_open 5
142 #define __ULINUX_NR_close 6
143 #define __ULINUX_NR_waitpid 7
144 #define __ULINUX_NR_creat 8
145 #define __ULINUX_NR_link 9
146 #define __ULINUX_NR_unlink 10
147 #define __ULINUX_NR_execve 11
148 #define __ULINUX_NR_chdir 12
149 #define __ULINUX_NR_time 13
150 #define __ULINUX_NR_mknod 14
151 #define __ULINUX_NR_chmod 15
152 #define __ULINUX_NR_lchown 16
153 #define __ULINUX_NR_break 17
154 #define __ULINUX_NR_oldstat 18
155 #define __ULINUX_NR_lseek 19
156 #define __ULINUX_NR_getpid 20
157 #define __ULINUX_NR_mount 21
158 #define __ULINUX_NR_umount 22
159 #define __ULINUX_NR_setuid 23
160 #define __ULINUX_NR_getuid 24
161 #define __ULINUX_NR_stime 25
162 #define __ULINUX_NR_ptrace 26
163 #define __ULINUX_NR_alarm 27
164 #define __ULINUX_NR_oldfstat 28
165 #define __ULINUX_NR_pause 29
166 #define __ULINUX_NR_utime 30
167 #define __ULINUX_NR_stty 31
168 #define __ULINUX_NR_gtty 32
169 #define __ULINUX_NR_access 33
170 #define __ULINUX_NR_nice 34
171 #define __ULINUX_NR_ftime 35
172 #define __ULINUX_NR_sync 36
173 #define __ULINUX_NR_kill 37
174 #define __ULINUX_NR_rename 38
175 #define __ULINUX_NR_mkdir 39
176 #define __ULINUX_NR_rmdir 40
177 #define __ULINUX_NR_dup 41
178 #define __ULINUX_NR_pipe 42
179 #define __ULINUX_NR_times 43
180 #define __ULINUX_NR_prof 44
181 #define __ULINUX_NR_brk 45
182 #define __ULINUX_NR_setgid 46
183 #define __ULINUX_NR_getgid 47
184 #define __ULINUX_NR_signal 48
185 #define __ULINUX_NR_geteuid 49
186 #define __ULINUX_NR_getegid 50
187 #define __ULINUX_NR_acct 51
188 #define __ULINUX_NR_umount2 52
189 #define __ULINUX_NR_lock 53
190 #define __ULINUX_NR_ioctl 54
191 #define __ULINUX_NR_fcntl 55
192 #define __ULINUX_NR_mpx 56
193 #define __ULINUX_NR_setpgid 57
194 #define __ULINUX_NR_ulimit 58
195 #define __ULINUX_NR_oldolduname 59
196 #define __ULINUX_NR_umask 60
197 #define __ULINUX_NR_chroot 61
198 #define __ULINUX_NR_ustat 62
199 #define __ULINUX_NR_dup2 63
200 #define __ULINUX_NR_getppid 64
201 #define __ULINUX_NR_getpgrp 65
202 #define __ULINUX_NR_setsid 66
203 #define __ULINUX_NR_sigaction 67
204 #define __ULINUX_NR_sgetmask 68
205 #define __ULINUX_NR_ssetmask 69
206 #define __ULINUX_NR_setreuid 70
207 #define __ULINUX_NR_setregid 71
208 #define __ULINUX_NR_sigsuspend 72
209 #define __ULINUX_NR_sigpending 73
210 #define __ULINUX_NR_sethostname 74
211 #define __ULINUX_NR_setrlimit 75
212 #define __ULINUX_NR_getrlimit 76
213 #define __ULINUX_NR_getrusage 77
214 #define __ULINUX_NR_gettimeofday 78
215 #define __ULINUX_NR_settimeofday 79
216 #define __ULINUX_NR_getgroups 80
217 #define __ULINUX_NR_setgroups 81
218 #define __ULINUX_NR_select 82
219 #define __ULINUX_NR_symlink 83
220 #define __ULINUX_NR_oldlstat 84
221 #define __ULINUX_NR_readlink 85
222 #define __ULINUX_NR_uselib 86
223 #define __ULINUX_NR_swapon 87
224 #define __ULINUX_NR_reboot 88
225 #define __ULINUX_NR_readdir 89
226 #define __ULINUX_NR_mmap 90
227 #define __ULINUX_NR_munmap 91
228 #define __ULINUX_NR_truncate 92
229 #define __ULINUX_NR_ftruncate 93
230 #define __ULINUX_NR_fchmod 94
231 #define __ULINUX_NR_fchown 95
232 #define __ULINUX_NR_getpriority 96
233 #define __ULINUX_NR_setpriority 97
234 #define __ULINUX_NR_profil 98
235 #define __ULINUX_NR_statfs 99
236 #define __ULINUX_NR_fstatfs 100
237 #define __ULINUX_NR_ioperm 101
238 #define __ULINUX_NR_socketcall 102
239 #define __ULINUX_NR_syslog 103
240 #define __ULINUX_NR_setitimer 104
241 #define __ULINUX_NR_getitimer 105
242 #define __ULINUX_NR_stat 106
243 #define __ULINUX_NR_lstat 107
244 #define __ULINUX_NR_fstat 108
245 #define __ULINUX_NR_olduname 109
246 #define __ULINUX_NR_iopl 110
247 #define __ULINUX_NR_vhangup 111
248 #define __ULINUX_NR_idle 112
249 #define __ULINUX_NR_vm86old 113
250 #define __ULINUX_NR_wait4 114
251 #define __ULINUX_NR_swapoff 115
252 #define __ULINUX_NR_sysinfo 116
253 #define __ULINUX_NR_ipc 117
254 #define __ULINUX_NR_fsync 118
255 #define __ULINUX_NR_sigreturn 119
256 #define __ULINUX_NR_clone 120
257 #define __ULINUX_NR_setdomainname 121
258 #define __ULINUX_NR_uname 122
259 #define __ULINUX_NR_modify_ldt 123
260 #define __ULINUX_NR_adjtimex 124
261 #define __ULINUX_NR_mprotect 125
262 #define __ULINUX_NR_sigprocmask 126
263 #define __ULINUX_NR_create_module 127
264 #define __ULINUX_NR_init_module 128
265 #define __ULINUX_NR_delete_module 129
266 #define __ULINUX_NR_get_kernel_syms 130
267 #define __ULINUX_NR_quotactl 131
268 #define __ULINUX_NR_getpgid 132
269 #define __ULINUX_NR_fchdir 133
270 #define __ULINUX_NR_bdflush 134
271 #define __ULINUX_NR_sysfs 135
272 #define __ULINUX_NR_personality 136
273 #define __ULINUX_NR_afs_syscall 137
274 #define __ULINUX_NR_setfsuid 138
275 #define __ULINUX_NR_setfsgid 139
276 #define __ULINUX_NR__llseek 140
277 #define __ULINUX_NR_getdents 141
278 #define __ULINUX_NR__newselect 142
279 #define __ULINUX_NR_flock 143
280 #define __ULINUX_NR_msync 144
281 #define __ULINUX_NR_readv 145
282 #define __ULINUX_NR_writev 146
283 #define __ULINUX_NR_getsid 147
284 #define __ULINUX_NR_fdatasync 148
285 #define __ULINUX_NR__sysctl 149
286 #define __ULINUX_NR_mlock 150
287 #define __ULINUX_NR_munlock 151
288 #define __ULINUX_NR_mlockall 152
289 #define __ULINUX_NR_munlockall 153
290 #define __ULINUX_NR_sched_setparam 154
291 #define __ULINUX_NR_sched_getparam 155
292 #define __ULINUX_NR_sched_setscheduler 156
293 #define __ULINUX_NR_sched_getscheduler 157
294 #define __ULINUX_NR_sched_yield 158
295 #define __ULINUX_NR_sched_get_priority_max 159
296 #define __ULINUX_NR_sched_get_priority_min 160
297 #define __ULINUX_NR_sched_rr_get_interval 161
298 #define __ULINUX_NR_nanosleep 162
299 #define __ULINUX_NR_mremap 163
300 #define __ULINUX_NR_setresuid 164
301 #define __ULINUX_NR_getresuid 165
302 #define __ULINUX_NR_vm86 166
303 #define __ULINUX_NR_query_module 167
304 #define __ULINUX_NR_poll 168
305 #define __ULINUX_NR_nfsservctl 169
306 #define __ULINUX_NR_setresgid 170
307 #define __ULINUX_NR_getresgid 171
308 #define __ULINUX_NR_prctl 172
309 #define __ULINUX_NR_rt_sigreturn 173
310 #define __ULINUX_NR_rt_sigaction 174
311 #define __ULINUX_NR_rt_sigprocmask 175
312 #define __ULINUX_NR_rt_sigpending 176
313 #define __ULINUX_NR_rt_sigtimedwait 177
314 #define __ULINUX_NR_rt_sigqueueinfo 178
315 #define __ULINUX_NR_rt_sigsuspend 179
316 #define __ULINUX_NR_pread64 180
317 #define __ULINUX_NR_pwrite64 181
318 #define __ULINUX_NR_chown 182
319 #define __ULINUX_NR_getcwd 183
320 #define __ULINUX_NR_capget 184
321 #define __ULINUX_NR_capset 185
322 #define __ULINUX_NR_sigaltstack 186
323 #define __ULINUX_NR_sendfile 187
324 #define __ULINUX_NR_getpmsg 188
325 #define __ULINUX_NR_putpmsg 189
326 #define __ULINUX_NR_vfork 190
327 #define __ULINUX_NR_ugetrlimit 191
328 #define __ULINUX_NR_mmap2 192
329 #define __ULINUX_NR_truncate64 193
330 #define __ULINUX_NR_ftruncate64 194
331 #define __ULINUX_NR_stat64 195
332 #define __ULINUX_NR_lstat64 196
333 #define __ULINUX_NR_fstat64 197
334 #define __ULINUX_NR_lchown32 198
335 #define __ULINUX_NR_getuid32 199
336 #define __ULINUX_NR_getgid32 200
337 #define __ULINUX_NR_geteuid32 201
338 #define __ULINUX_NR_getegid32 202
339 #define __ULINUX_NR_setreuid32 203
340 #define __ULINUX_NR_setregid32 204
341 #define __ULINUX_NR_getgroups32 205
342 #define __ULINUX_NR_setgroups32 206
343 #define __ULINUX_NR_fchown32 207
344 #define __ULINUX_NR_setresuid32 208
345 #define __ULINUX_NR_getresuid32 209
346 #define __ULINUX_NR_setresgid32 210
347 #define __ULINUX_NR_getresgid32 211
348 #define __ULINUX_NR_chown32 212
349 #define __ULINUX_NR_setuid32 213
350 #define __ULINUX_NR_setgid32 214
351 #define __ULINUX_NR_setfsuid32 215
352 #define __ULINUX_NR_setfsgid32 216
353 #define __ULINUX_NR_pivot_root 217
354 #define __ULINUX_NR_mincore 218
355 #define __ULINUX_NR_madvise 219
356 #define __ULINUX_NR_getdents64 220
357 #define __ULINUX_NR_fcntl64 221
358 #define __ULINUX_NR_gettid 224
359 #define __ULINUX_NR_readahead 225
360 #define __ULINUX_NR_setxattr 226
361 #define __ULINUX_NR_lsetxattr 227
362 #define __ULINUX_NR_fsetxattr 228
363 #define __ULINUX_NR_getxattr 229
364 #define __ULINUX_NR_lgetxattr 230
365 #define __ULINUX_NR_fgetxattr 231
366 #define __ULINUX_NR_listxattr 232
367 #define __ULINUX_NR_llistxattr 233
368 #define __ULINUX_NR_flistxattr 234
369 #define __ULINUX_NR_removexattr 235
370 #define __ULINUX_NR_lremovexattr 236
371 #define __ULINUX_NR_fremovexattr 237
372 #define __ULINUX_NR_tkill 238
373 #define __ULINUX_NR_sendfile64 239
374 #define __ULINUX_NR_futex 240
375 #define __ULINUX_NR_sched_setaffinity 241
376 #define __ULINUX_NR_sched_getaffinity 242
377 #define __ULINUX_NR_set_thread_area 243
378 #define __ULINUX_NR_get_thread_area 244
379 #define __ULINUX_NR_io_setup 245
380 #define __ULINUX_NR_io_destroy 246
381 #define __ULINUX_NR_io_getevents 247
382 #define __ULINUX_NR_io_submit 248
383 #define __ULINUX_NR_io_cancel 249
384 #define __ULINUX_NR_fadvise64 250
385 #define __ULINUX_NR_exit_group 252
386 #define __ULINUX_NR_lookup_dcookie 253
387 #define __ULINUX_NR_epoll_create 254
388 #define __ULINUX_NR_epoll_ctl 255
389 #define __ULINUX_NR_epoll_wait 256
390 #define __ULINUX_NR_remap_file_pages 257
391 #define __ULINUX_NR_set_tid_address 258
392 #define __ULINUX_NR_timer_create 259
393 #define __ULINUX_NR_timer_settime 260
394 #define __ULINUX_NR_timer_gettime 261
395 #define __ULINUX_NR_timer_getoverrun 262
396 #define __ULINUX_NR_timer_delete 263
397 #define __ULINUX_NR_clock_settime 264
398 #define __ULINUX_NR_clock_gettime 265
399 #define __ULINUX_NR_clock_getres 266
400 #define __ULINUX_NR_clock_nanosleep 267
401 #define __ULINUX_NR_statfs64 268
402 #define __ULINUX_NR_fstatfs64 269
403 #define __ULINUX_NR_tgkill 270
404 #define __ULINUX_NR_utimes 271
405 #define __ULINUX_NR_fadvise64_64 272
406 #define __ULINUX_NR_vserver 273
407 #define __ULINUX_NR_mbind 274
408 #define __ULINUX_NR_get_mempolicy 275
409 #define __ULINUX_NR_set_mempolicy 276
410 #define __ULINUX_NR_mq_open 277
411 #define __ULINUX_NR_mq_unlink 278
412 #define __ULINUX_NR_mq_timedsend 279
413 #define __ULINUX_NR_mq_timedreceive 280
414 #define __ULINUX_NR_mq_notify 281
415 #define __ULINUX_NR_mq_getsetattr 282
416 #define __ULINUX_NR_kexec_load 283
417 #define __ULINUX_NR_waitid 284
418 #define __ULINUX_NR_add_key 286
419 #define __ULINUX_NR_request_key 287
420 #define __ULINUX_NR_keyctl 288
421 #define __ULINUX_NR_ioprio_set 289
422 #define __ULINUX_NR_ioprio_get 290
423 #define __ULINUX_NR_inotify_init 291
424 #define __ULINUX_NR_inotify_add_watch 292
425 #define __ULINUX_NR_inotify_rm_watch 293
426 #define __ULINUX_NR_migrate_pages 294
427 #define __ULINUX_NR_openat 295
428 #define __ULINUX_NR_mkdirat 296
429 #define __ULINUX_NR_mknodat 297
430 #define __ULINUX_NR_fchownat 298
431 #define __ULINUX_NR_futimesat 299
432 #define __ULINUX_NR_fstatat64 300
433 #define __ULINUX_NR_unlinkat 301
434 #define __ULINUX_NR_renameat 302
435 #define __ULINUX_NR_linkat 303
436 #define __ULINUX_NR_symlinkat 304
437 #define __ULINUX_NR_readlinkat 305
438 #define __ULINUX_NR_fchmodat 306
439 #define __ULINUX_NR_faccessat 307
440 #define __ULINUX_NR_pselect6 308
441 #define __ULINUX_NR_ppoll 309
442 #define __ULINUX_NR_unshare 310
443 #define __ULINUX_NR_set_robust_list 311
444 #define __ULINUX_NR_get_robust_list 312
445 #define __ULINUX_NR_splice 313
446 #define __ULINUX_NR_sync_file_range 314
447 #define __ULINUX_NR_tee 315
448 #define __ULINUX_NR_vmsplice 316
449 #define __ULINUX_NR_move_pages 317
450 #define __ULINUX_NR_getcpu 318
451 #define __ULINUX_NR_epoll_pwait 319
452 #define __ULINUX_NR_utimensat 320
453 #define __ULINUX_NR_signalfd 321
454 #define __ULINUX_NR_timerfd_create 322
455 #define __ULINUX_NR_eventfd 323
456 #define __ULINUX_NR_fallocate 324
457 #define __ULINUX_NR_timerfd_settime 325
458 #define __ULINUX_NR_timerfd_gettime 326
459 #define __ULINUX_NR_signalfd4 327
460 #define __ULINUX_NR_eventfd2 328
461 #define __ULINUX_NR_epoll_create1 329
462 #define __ULINUX_NR_dup3 330
463 #define __ULINUX_NR_pipe2 331
464 #define __ULINUX_NR_inotify_init1 332
465 #define __ULINUX_NR_preadv 333
466 #define __ULINUX_NR_pwritev 334
467 #define __ULINUX_NR_rt_tgsigqueueinfo 335
468 #define __ULINUX_NR_perf_event_open 336
469 #define __ULINUX_NR_recvmmsg 337
470 #define __ULINUX_NR_fanotify_init 338
471 #define __ULINUX_NR_fanotify_mark 339
472 #define __ULINUX_NR_prlimit64 340
473 #define __ULINUX_NR_name_to_handle_at 341
474 #define __ULINUX_NR_open_by_handle_at 342
475 #define __ULINUX_NR_clock_adjtime 343
476 #define __ULINUX_NR_syncfs 344
477 #define __ULINUX_NR_sendmmsg 345
478 #define __ULINUX_NR_setns 346
479 #define __ULINUX_NR_process_vm_readv 347
480 #define __ULINUX_NR_process_vm_writev 348
481 #define __ULINUX_NR_kcmp 349
482 #define __ULINUX_NR_finit_module 350
483 #define __ULINUX_NR_sched_setattr 351
484 #define __ULINUX_NR_sched_getattr 352
485 #define __ULINUX_NR_renameat2 353
486 #define __ULINUX_NR_seccomp 354
487 #define __ULINUX_NR_getrandom 355
488 #define __ULINUX_NR_memfd_create 356
489 #define __ULINUX_NR_bpf 357
490 #define __ULINUX_NR_execveat 358
492 #endif