Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile
Pull tile updates from Chris Metcalf: "This includes secure computing support as well as miscellaneous minor improvements" * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile: tile: correct some typos in opcode type names tile/vdso: emit a GNU hash as well tile: Remove finish_arch_switch tile: enable full SECCOMP support tile/time: Migrate to new 'set-state' interface
This commit is contained in:
@@ -28,6 +28,7 @@ generic-y += poll.h
|
||||
generic-y += posix_types.h
|
||||
generic-y += preempt.h
|
||||
generic-y += resource.h
|
||||
generic-y += seccomp.h
|
||||
generic-y += sembuf.h
|
||||
generic-y += serial.h
|
||||
generic-y += shmbuf.h
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <arch/chip.h>
|
||||
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/elf-em.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <asm/page.h>
|
||||
|
||||
@@ -30,9 +31,6 @@ typedef unsigned long elf_greg_t;
|
||||
#define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t))
|
||||
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
|
||||
|
||||
#define EM_TILEPRO 188
|
||||
#define EM_TILEGX 191
|
||||
|
||||
/* Provide a nominal data structure. */
|
||||
#define ELF_NFPREG 0
|
||||
typedef double elf_fpreg_t;
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
|
||||
#include <linux/sched.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/audit.h>
|
||||
#include <linux/compat.h>
|
||||
#include <arch/abi.h>
|
||||
|
||||
/* The array of function pointers for syscalls. */
|
||||
@@ -61,7 +63,15 @@ static inline void syscall_set_return_value(struct task_struct *task,
|
||||
struct pt_regs *regs,
|
||||
int error, long val)
|
||||
{
|
||||
regs->regs[0] = (long) error ?: val;
|
||||
if (error) {
|
||||
/* R0 is the passed-in negative error, R1 is positive. */
|
||||
regs->regs[0] = error;
|
||||
regs->regs[1] = -error;
|
||||
} else {
|
||||
/* R1 set to zero to indicate no error. */
|
||||
regs->regs[0] = val;
|
||||
regs->regs[1] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static inline void syscall_get_arguments(struct task_struct *task,
|
||||
@@ -82,4 +92,20 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
||||
memcpy(®s[i], args, n * sizeof(args[0]));
|
||||
}
|
||||
|
||||
/*
|
||||
* We don't care about endianness (__AUDIT_ARCH_LE bit) here because
|
||||
* tile has the same system calls both on little- and big- endian.
|
||||
*/
|
||||
static inline int syscall_get_arch(void)
|
||||
{
|
||||
if (is_compat_task())
|
||||
return AUDIT_ARCH_TILEGX32;
|
||||
|
||||
#ifdef CONFIG_TILEGX
|
||||
return AUDIT_ARCH_TILEGX;
|
||||
#else
|
||||
return AUDIT_ARCH_TILEPRO;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* _ASM_TILE_SYSCALL_H */
|
||||
|
||||
Reference in New Issue
Block a user