sys_nds32.c 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // SPDX-License-Identifier: GPL-2.0
  2. // Copyright (C) 2005-2017 Andes Technology Corporation
  3. #include <linux/syscalls.h>
  4. #include <linux/uaccess.h>
  5. #include <asm/cachectl.h>
  6. #include <asm/proc-fns.h>
  7. SYSCALL_DEFINE6(mmap2, unsigned long, addr, unsigned long, len,
  8. unsigned long, prot, unsigned long, flags,
  9. unsigned long, fd, unsigned long, pgoff)
  10. {
  11. if (pgoff & (~PAGE_MASK >> 12))
  12. return -EINVAL;
  13. return sys_mmap_pgoff(addr, len, prot, flags, fd,
  14. pgoff >> (PAGE_SHIFT - 12));
  15. }
  16. SYSCALL_DEFINE4(fadvise64_64_wrapper,int, fd, int, advice, loff_t, offset,
  17. loff_t, len)
  18. {
  19. return sys_fadvise64_64(fd, offset, len, advice);
  20. }
  21. SYSCALL_DEFINE3(cacheflush, unsigned int, start, unsigned int, end, int, cache)
  22. {
  23. struct vm_area_struct *vma;
  24. bool flushi = true, wbd = true;
  25. vma = find_vma(current->mm, start);
  26. if (!vma)
  27. return -EFAULT;
  28. switch (cache) {
  29. case ICACHE:
  30. wbd = false;
  31. break;
  32. case DCACHE:
  33. flushi = false;
  34. break;
  35. case BCACHE:
  36. break;
  37. default:
  38. return -EINVAL;
  39. }
  40. cpu_cache_wbinval_range_check(vma, start, end, flushi, wbd);
  41. return 0;
  42. }