1*4859bfcaSGuo Ren // SPDX-License-Identifier: GPL-2.0 2*4859bfcaSGuo Ren // Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd. 3*4859bfcaSGuo Ren 4*4859bfcaSGuo Ren #include <linux/syscalls.h> 5*4859bfcaSGuo Ren 6*4859bfcaSGuo Ren SYSCALL_DEFINE1(set_thread_area, unsigned long, addr) 7*4859bfcaSGuo Ren { 8*4859bfcaSGuo Ren struct thread_info *ti = task_thread_info(current); 9*4859bfcaSGuo Ren struct pt_regs *reg = current_pt_regs(); 10*4859bfcaSGuo Ren 11*4859bfcaSGuo Ren reg->tls = addr; 12*4859bfcaSGuo Ren ti->tp_value = addr; 13*4859bfcaSGuo Ren 14*4859bfcaSGuo Ren return 0; 15*4859bfcaSGuo Ren } 16*4859bfcaSGuo Ren 17*4859bfcaSGuo Ren SYSCALL_DEFINE6(mmap2, 18*4859bfcaSGuo Ren unsigned long, addr, 19*4859bfcaSGuo Ren unsigned long, len, 20*4859bfcaSGuo Ren unsigned long, prot, 21*4859bfcaSGuo Ren unsigned long, flags, 22*4859bfcaSGuo Ren unsigned long, fd, 23*4859bfcaSGuo Ren off_t, offset) 24*4859bfcaSGuo Ren { 25*4859bfcaSGuo Ren if (unlikely(offset & (~PAGE_MASK >> 12))) 26*4859bfcaSGuo Ren return -EINVAL; 27*4859bfcaSGuo Ren 28*4859bfcaSGuo Ren return ksys_mmap_pgoff(addr, len, prot, flags, fd, 29*4859bfcaSGuo Ren offset >> (PAGE_SHIFT - 12)); 30*4859bfcaSGuo Ren } 31*4859bfcaSGuo Ren 32*4859bfcaSGuo Ren /* 33*4859bfcaSGuo Ren * for abiv1 the 64bits args should be even th, So we need mov the advice 34*4859bfcaSGuo Ren * forward. 35*4859bfcaSGuo Ren */ 36*4859bfcaSGuo Ren SYSCALL_DEFINE4(csky_fadvise64_64, 37*4859bfcaSGuo Ren int, fd, 38*4859bfcaSGuo Ren int, advice, 39*4859bfcaSGuo Ren loff_t, offset, 40*4859bfcaSGuo Ren loff_t, len) 41*4859bfcaSGuo Ren { 42*4859bfcaSGuo Ren return ksys_fadvise64_64(fd, offset, len, advice); 43*4859bfcaSGuo Ren } 44