|
@@ -25,6 +25,7 @@
|
|
#include <linux/sched.h>
|
|
#include <linux/sched.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/slab.h>
|
|
#include <linux/syscalls.h>
|
|
#include <linux/syscalls.h>
|
|
|
|
+#include <asm/cpufeature.h>
|
|
|
|
|
|
asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
|
|
asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
|
|
unsigned long prot, unsigned long flags,
|
|
unsigned long prot, unsigned long flags,
|
|
@@ -36,11 +37,20 @@ asmlinkage long sys_mmap(unsigned long addr, unsigned long len,
|
|
return sys_mmap_pgoff(addr, len, prot, flags, fd, off >> PAGE_SHIFT);
|
|
return sys_mmap_pgoff(addr, len, prot, flags, fd, off >> PAGE_SHIFT);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+SYSCALL_DEFINE1(arm64_personality, unsigned int, personality)
|
|
|
|
+{
|
|
|
|
+ if (personality(personality) == PER_LINUX32 &&
|
|
|
|
+ !system_supports_32bit_el0())
|
|
|
|
+ return -EINVAL;
|
|
|
|
+ return sys_personality(personality);
|
|
|
|
+}
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Wrappers to pass the pt_regs argument.
|
|
* Wrappers to pass the pt_regs argument.
|
|
*/
|
|
*/
|
|
asmlinkage long sys_rt_sigreturn_wrapper(void);
|
|
asmlinkage long sys_rt_sigreturn_wrapper(void);
|
|
#define sys_rt_sigreturn sys_rt_sigreturn_wrapper
|
|
#define sys_rt_sigreturn sys_rt_sigreturn_wrapper
|
|
|
|
+#define sys_personality sys_arm64_personality
|
|
|
|
|
|
#undef __SYSCALL
|
|
#undef __SYSCALL
|
|
#define __SYSCALL(nr, sym) [nr] = sym,
|
|
#define __SYSCALL(nr, sym) [nr] = sym,
|