cregit-Linux how code gets into the kernel

Release 4.14 arch/m32r/kernel/sys_m32r.c

Directory: arch/m32r/kernel
// SPDX-License-Identifier: GPL-2.0
/*
 * linux/arch/m32r/kernel/sys_m32r.c
 *
 * This file contains various random system calls that
 * have a non-standard calling sequence on the Linux/M32R platform.
 *
 * Taken from i386 version.
 */

#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/fs.h>
#include <linux/smp.h>
#include <linux/sem.h>
#include <linux/msg.h>
#include <linux/shm.h>
#include <linux/stat.h>
#include <linux/syscalls.h>
#include <linux/mman.h>
#include <linux/file.h>
#include <linux/utsname.h>
#include <linux/ipc.h>

#include <linux/uaccess.h>
#include <asm/cachectl.h>
#include <asm/cacheflush.h>
#include <asm/syscall.h>
#include <asm/unistd.h>

/*
 * sys_tas() - test-and-set
 */

asmlinkage int sys_tas(int __user *addr) { int oldval; if (!access_ok(VERIFY_WRITE, addr, sizeof (int))) return -EFAULT; /* atomic operation: * oldval = *addr; *addr = 1; */ __asm__ __volatile__ ( DCACHE_CLEAR("%0", "r4", "%1") " .fillinsn\n" "1:\n" " lock %0, @%1 -> unlock %2, @%1\n" "2:\n" /* NOTE: * The m32r processor can accept interrupts only * at the 32-bit instruction boundary. * So, in the above code, the "unlock" instruction * can be executed continuously after the "lock" * instruction execution without any interruptions. */ ".section .fixup,\"ax\"\n" " .balign 4\n" "3: ldi %0, #%3\n" " seth r14, #high(2b)\n" " or3 r14, r14, #low(2b)\n" " jmp r14\n" ".previous\n" ".section __ex_table,\"a\"\n" " .balign 4\n" " .long 1b,3b\n" ".previous\n" : "=&r" (oldval) : "r" (addr), "r" (1), "i"(-EFAULT) : "r14", "memory" #ifdef CONFIG_CHIP_M32700_TS1 , "r4" #endif /* CONFIG_CHIP_M32700_TS1 */ ); return oldval; }

Contributors

PersonTokensPropCommitsCommitProp
Hirokazu Takata4998.00%266.67%
Al Viro12.00%133.33%
Total50100.00%3100.00%


asmlinkage int sys_cacheflush(void *addr, int bytes, int cache) { /* This should flush more selectively ... */ _flush_cache_all(); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Hirokazu Takata2295.65%150.00%
Simon Arlott14.35%150.00%
Total23100.00%2100.00%


asmlinkage int sys_cachectl(char *addr, int nbytes, int op) { /* Not implemented yet. */ return -ENOSYS; }

Contributors

PersonTokensPropCommitsCommitProp
Hirokazu Takata21100.00%1100.00%
Total21100.00%1100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Hirokazu Takata14191.56%333.33%
Arnd Bergmann63.90%111.11%
Adrian Bunk31.95%111.11%
Linus Torvalds10.65%111.11%
Greg Kroah-Hartman10.65%111.11%
Al Viro10.65%111.11%
Simon Arlott10.65%111.11%
Total154100.00%9100.00%
Directory: arch/m32r/kernel
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.