diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT index 526b6d090..e0450494e 100644 --- a/libc/SYSCALLS.TXT +++ b/libc/SYSCALLS.TXT @@ -223,6 +223,7 @@ int __timer_delete:timer_delete(__kernel_timer_t) int timerfd_create(clockid_t, int) all int timerfd_settime(int, int, const struct itimerspec*, struct itimerspec*) all int timerfd_gettime(int, struct itimerspec*) all +int adjtimex(struct timex*) all # signals int __sigaction:sigaction(int, const struct sigaction*, struct sigaction*) arm,mips,x86 diff --git a/libc/arch-arm/syscalls/adjtimex.S b/libc/arch-arm/syscalls/adjtimex.S new file mode 100644 index 000000000..614036e0f --- /dev/null +++ b/libc/arch-arm/syscalls/adjtimex.S @@ -0,0 +1,14 @@ +/* Generated by gensyscalls.py. Do not edit. */ + +#include + +ENTRY(adjtimex) + mov ip, r7 + ldr r7, =__NR_adjtimex + swi #0 + mov r7, ip + cmn r0, #(MAX_ERRNO + 1) + bxls lr + neg r0, r0 + b __set_errno_internal +END(adjtimex) diff --git a/libc/arch-arm64/syscalls/adjtimex.S b/libc/arch-arm64/syscalls/adjtimex.S new file mode 100644 index 000000000..712e46811 --- /dev/null +++ b/libc/arch-arm64/syscalls/adjtimex.S @@ -0,0 +1,14 @@ +/* Generated by gensyscalls.py. Do not edit. */ + +#include + +ENTRY(adjtimex) + mov x8, __NR_adjtimex + svc #0 + + cmn x0, #(MAX_ERRNO + 1) + cneg x0, x0, hi + b.hi __set_errno_internal + + ret +END(adjtimex) diff --git a/libc/arch-mips/syscalls/adjtimex.S b/libc/arch-mips/syscalls/adjtimex.S new file mode 100644 index 000000000..fef215f9c --- /dev/null +++ b/libc/arch-mips/syscalls/adjtimex.S @@ -0,0 +1,19 @@ +/* Generated by gensyscalls.py. Do not edit. */ + +#include + +ENTRY(adjtimex) + .set noreorder + .cpload t9 + li v0, __NR_adjtimex + syscall + bnez a3, 1f + move a0, v0 + j ra + nop +1: + la t9,__set_errno_internal + j t9 + nop + .set reorder +END(adjtimex) diff --git a/libc/arch-mips64/syscalls/adjtimex.S b/libc/arch-mips64/syscalls/adjtimex.S new file mode 100644 index 000000000..57b012cc6 --- /dev/null +++ b/libc/arch-mips64/syscalls/adjtimex.S @@ -0,0 +1,25 @@ +/* Generated by gensyscalls.py. Do not edit. */ + +#include + +ENTRY(adjtimex) + .set push + .set noreorder + li v0, __NR_adjtimex + syscall + bnez a3, 1f + move a0, v0 + j ra + nop +1: + move t0, ra + bal 2f + nop +2: + .cpsetup ra, t1, 2b + LA t9,__set_errno_internal + .cpreturn + j t9 + move ra, t0 + .set pop +END(adjtimex) diff --git a/libc/arch-x86/syscalls/adjtimex.S b/libc/arch-x86/syscalls/adjtimex.S new file mode 100644 index 000000000..2a91f9002 --- /dev/null +++ b/libc/arch-x86/syscalls/adjtimex.S @@ -0,0 +1,21 @@ +/* Generated by gensyscalls.py. Do not edit. */ + +#include + +ENTRY(adjtimex) + pushl %ebx + .cfi_def_cfa_offset 8 + .cfi_rel_offset ebx, 0 + mov 8(%esp), %ebx + movl $__NR_adjtimex, %eax + int $0x80 + cmpl $-MAX_ERRNO, %eax + jb 1f + negl %eax + pushl %eax + call __set_errno_internal + addl $4, %esp +1: + popl %ebx + ret +END(adjtimex) diff --git a/libc/arch-x86_64/syscalls/adjtimex.S b/libc/arch-x86_64/syscalls/adjtimex.S new file mode 100644 index 000000000..292b9f36e --- /dev/null +++ b/libc/arch-x86_64/syscalls/adjtimex.S @@ -0,0 +1,15 @@ +/* Generated by gensyscalls.py. Do not edit. */ + +#include + +ENTRY(adjtimex) + movl $__NR_adjtimex, %eax + syscall + cmpq $-MAX_ERRNO, %rax + jb 1f + negl %eax + movl %eax, %edi + call __set_errno_internal +1: + ret +END(adjtimex) diff --git a/libc/include/sys/timex.h b/libc/include/sys/timex.h index 4096e7d57..6138ac499 100644 --- a/libc/include/sys/timex.h +++ b/libc/include/sys/timex.h @@ -29,6 +29,13 @@ #ifndef _SYS_TIMEX_H_ #define _SYS_TIMEX_H_ +#include #include +__BEGIN_DECLS + +extern int adjtimex(struct timex *buf); + +__END_DECLS + #endif /* _SYS_TIMEX_H_ */