Linux Audio

Check our new training course

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