diff options
author | James Hogan <jhogan@kernel.org> | 2017-10-24 13:07:54 +0100 |
---|---|---|
committer | James Hogan <jhogan@kernel.org> | 2018-02-22 11:07:21 +0000 |
commit | bb6fb6dfcc17cddac11ac295861f7608194447a7 (patch) | |
tree | 47ee071a415546dd01adbf628f61acb80473d476 /arch/metag/include/asm/syscall.h | |
parent | 91ab883eb21325ad80f3473633f794c78ac87f51 (diff) | |
download | op-kernel-dev-bb6fb6dfcc17cddac11ac295861f7608194447a7.zip op-kernel-dev-bb6fb6dfcc17cddac11ac295861f7608194447a7.tar.gz |
metag: Remove arch/metag/
The earliest Meta architecture port of Linux I have a record of was an
import of a Meta port of Linux v2.4.1 in February 2004, which was worked
on significantly over the next few years by Graham Whaley, Will Newton,
Matt Fleming, myself and others.
Eventually the port was merged into mainline in v3.9 in March 2013, not
long after Imagination Technologies bought MIPS Technologies and shifted
its CPU focus over to the MIPS architecture.
As a result, though the port was maintained for a while, kept on life
support for a while longer, and useful for testing a few specific
drivers for which I don't have ready access to the equivalent MIPS
hardware, it is now essentially dead with no users.
It is also stuck using an out-of-tree toolchain based on GCC 4.2.4 which
is no longer maintained, now struggles to build modern kernels due to
toolchain bugs, and doesn't itself build with a modern GCC. The latest
buildroot port is still using an old uClibc snapshot which is no longer
served, and the latest uClibc doesn't build with GCC 4.2.4.
So lets call it a day and drop the Meta architecture port from the
kernel. RIP Meta.
Signed-off-by: James Hogan <jhogan@kernel.org>
Link: https://lkml.kernel.org/r/95906b76-6ce1-3f84-eaba-c29b4ae952eb@roeck-us.net
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Acked-by: Graham Whaley <graham.whaley@gmail.com>
Cc: linux-metag@vger.kernel.org
Diffstat (limited to 'arch/metag/include/asm/syscall.h')
-rw-r--r-- | arch/metag/include/asm/syscall.h | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/arch/metag/include/asm/syscall.h b/arch/metag/include/asm/syscall.h deleted file mode 100644 index 24fc979..0000000 --- a/arch/metag/include/asm/syscall.h +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Access to user system call parameters and results - * - * Copyright (C) 2008 Imagination Technologies Ltd. - * - * This copyrighted material is made available to anyone wishing to use, - * modify, copy, or redistribute it subject to the terms and conditions - * of the GNU General Public License v.2. - * - * See asm-generic/syscall.h for descriptions of what we must do here. - */ - -#ifndef _ASM_METAG_SYSCALL_H -#define _ASM_METAG_SYSCALL_H - -#include <linux/sched.h> -#include <linux/err.h> -#include <linux/uaccess.h> - -#include <asm/switch.h> - -static inline long syscall_get_nr(struct task_struct *task, - struct pt_regs *regs) -{ - unsigned long insn; - - /* - * FIXME there's no way to find out how we got here other than to - * examine the memory at the PC to see if it is a syscall - * SWITCH instruction. - */ - if (get_user(insn, (unsigned long *)(regs->ctx.CurrPC - 4))) - return -1; - - if (insn == __METAG_SW_ENCODING(SYS)) - return regs->ctx.DX[0].U1; - else - return -1L; -} - -static inline void syscall_rollback(struct task_struct *task, - struct pt_regs *regs) -{ - /* do nothing */ -} - -static inline long syscall_get_error(struct task_struct *task, - struct pt_regs *regs) -{ - unsigned long error = regs->ctx.DX[0].U0; - return IS_ERR_VALUE(error) ? error : 0; -} - -static inline long syscall_get_return_value(struct task_struct *task, - struct pt_regs *regs) -{ - return regs->ctx.DX[0].U0; -} - -static inline void syscall_set_return_value(struct task_struct *task, - struct pt_regs *regs, - int error, long val) -{ - regs->ctx.DX[0].U0 = (long) error ?: val; -} - -static inline void syscall_get_arguments(struct task_struct *task, - struct pt_regs *regs, - unsigned int i, unsigned int n, - unsigned long *args) -{ - unsigned int reg, j; - BUG_ON(i + n > 6); - - for (j = i, reg = 6 - i; j < (i + n); j++, reg--) { - if (reg % 2) - args[j] = regs->ctx.DX[(reg + 1) / 2].U0; - else - args[j] = regs->ctx.DX[reg / 2].U1; - } -} - -static inline void syscall_set_arguments(struct task_struct *task, - struct pt_regs *regs, - unsigned int i, unsigned int n, - const unsigned long *args) -{ - unsigned int reg; - BUG_ON(i + n > 6); - - for (reg = 6 - i; i < (i + n); i++, reg--) { - if (reg % 2) - regs->ctx.DX[(reg + 1) / 2].U0 = args[i]; - else - regs->ctx.DX[reg / 2].U1 = args[i]; - } -} - -#define NR_syscalls __NR_syscalls - -/* generic syscall table */ -extern const void *sys_call_table[]; - -#endif /* _ASM_METAG_SYSCALL_H */ |