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