Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags   |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) // SPDX-License-Identifier: GPL-2.0-only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  *  Port on Texas Instruments TMS320C6x architecture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  *  Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  *  Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #include <linux/module.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #include <linux/syscalls.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/uaccess.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #include <asm/syscalls.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #ifdef CONFIG_ACCESS_CHECK
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) int _access_ok(unsigned long addr, unsigned long size)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 	if (!size)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 		return 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 	if (!addr || addr > (0xffffffffUL - (size - 1)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 		goto _bad_access;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	if (uaccess_kernel())
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 		return 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 	if (memory_start <= addr && (addr + size - 1) < memory_end)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 		return 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) _bad_access:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	pr_debug("Bad access attempt: pid[%d] addr[%08lx] size[0x%lx]\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 		 current->pid, addr, size);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) EXPORT_SYMBOL(_access_ok);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) /* sys_cache_sync -- sync caches over given range */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) asmlinkage int sys_cache_sync(unsigned long s, unsigned long e)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	L1D_cache_block_writeback_invalidate(s, e);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	L1P_cache_block_invalidate(s, e);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /* Provide the actual syscall number to call mapping. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #undef __SYSCALL
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #define __SYSCALL(nr, call) [nr] = (call),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)  * Use trampolines
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define sys_pread64		sys_pread_c6x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define sys_pwrite64		sys_pwrite_c6x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) #define sys_truncate64		sys_truncate64_c6x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) #define sys_ftruncate64		sys_ftruncate64_c6x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #define sys_fadvise64		sys_fadvise64_c6x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) #define sys_fadvise64_64	sys_fadvise64_64_c6x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) #define sys_fallocate		sys_fallocate_c6x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) /* Use sys_mmap_pgoff directly */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) #define sys_mmap2 sys_mmap_pgoff
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)  * Note that we can't include <linux/unistd.h> here since the header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)  * guard will defeat us; <asm/unistd.h> checks for __SYSCALL as well.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) void *sys_call_table[__NR_syscalls] = {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) 	[0 ... __NR_syscalls-1] = sys_ni_syscall,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) #include <asm/unistd.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) };