1 /* Linux times.  X32 version.
2    Copyright (C) 2015-2022 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9 
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14 
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    <https://www.gnu.org/licenses/>.  */
18 
19 #include <sysdep.h>
20 
21 /* Linux times system call returns 64-bit integer.  */
22 #undef internal_syscall1
23 #define internal_syscall1(number, arg1)				\
24 ({									\
25     unsigned long long int resultvar;					\
26     TYPEFY (arg1, __arg1) = ARGIFY (arg1);			 	\
27     register TYPEFY (arg1, _a1) asm ("rdi") = __arg1;			\
28     asm volatile (							\
29     "syscall\n\t"							\
30     : "=a" (resultvar)							\
31     : "0" (number), "r" (_a1)						\
32     : "memory", REGISTERS_CLOBBERED_BY_SYSCALL);			\
33     (long long int) resultvar;						\
34 })
35 
36 #undef INTERNAL_SYSCALL_ERROR_P
37 #define INTERNAL_SYSCALL_ERROR_P(val) \
38   ((unsigned long long int) (val) >= -4095LL)
39 
40 #include <sysdeps/unix/sysv/linux/times.c>
41