Loading arch/frv/include/asm/processor.h +3 −5 Original line number Diff line number Diff line Loading @@ -92,14 +92,12 @@ extern struct task_struct *__kernel_current_task; /* * do necessary setup to start up a newly executed thread. * - need to discard the frame stacked by init() invoking the execve syscall */ #define start_thread(_regs, _pc, _usp) \ do { \ __frame = __kernel_frame0_ptr; \ __frame->pc = (_pc); \ __frame->psr &= ~PSR_S; \ __frame->sp = (_usp); \ _regs->pc = (_pc); \ _regs->psr &= ~PSR_S; \ _regs->sp = (_usp); \ } while(0) /* Free all resources held by a thread. */ Loading arch/frv/include/asm/unistd.h +1 −0 Original line number Diff line number Diff line Loading @@ -373,6 +373,7 @@ #define __ARCH_WANT_SYS_RT_SIGACTION #define __ARCH_WANT_SYS_RT_SIGSUSPEND #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_KERNEL_EXECVE /* * "Conditional" syscalls Loading arch/frv/kernel/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ heads-$(CONFIG_MMU) := head-mmu-fr451.o extra-y:= head.o vmlinux.lds obj-y := $(heads-y) entry.o entry-table.o break.o switch_to.o \ kernel_execve.o process.o traps.o ptrace.o signal.o dma.o \ process.o traps.o ptrace.o signal.o dma.o \ sys_frv.o time.o setup.o frv_ksyms.o \ debug-stub.o irq.o sleep.o uaccess.o Loading arch/frv/kernel/entry.S +5 −0 Original line number Diff line number Diff line Loading @@ -871,6 +871,11 @@ ret_from_kernel_thread: calll @(gr21,gr0) bra sys_exit .globl ret_from_kernel_execve ret_from_kernel_execve: ori gr28,0,sp bra __syscall_exit ################################################################################################### # # Return to user mode is not as complex as all this looks, Loading arch/frv/kernel/kernel_execve.Sdeleted 100644 → 0 +0 −33 Original line number Diff line number Diff line /* in-kernel program execution * * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. * Written by David Howells (dhowells@redhat.com) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include <linux/linkage.h> #include <asm/unistd.h> ############################################################################### # # Do a system call from kernel instead of calling sys_execve so we end up with # proper pt_regs. # # int kernel_execve(const char *filename, char *const argv[], char *const envp[]) # # On entry: GR8/GR9/GR10: arguments to function # On return: GR8: syscall return. # ############################################################################### .globl kernel_execve .type kernel_execve,@function kernel_execve: setlos __NR_execve,gr7 tira gr0,#0 bralr .size kernel_execve,.-kernel_execve Loading
arch/frv/include/asm/processor.h +3 −5 Original line number Diff line number Diff line Loading @@ -92,14 +92,12 @@ extern struct task_struct *__kernel_current_task; /* * do necessary setup to start up a newly executed thread. * - need to discard the frame stacked by init() invoking the execve syscall */ #define start_thread(_regs, _pc, _usp) \ do { \ __frame = __kernel_frame0_ptr; \ __frame->pc = (_pc); \ __frame->psr &= ~PSR_S; \ __frame->sp = (_usp); \ _regs->pc = (_pc); \ _regs->psr &= ~PSR_S; \ _regs->sp = (_usp); \ } while(0) /* Free all resources held by a thread. */ Loading
arch/frv/include/asm/unistd.h +1 −0 Original line number Diff line number Diff line Loading @@ -373,6 +373,7 @@ #define __ARCH_WANT_SYS_RT_SIGACTION #define __ARCH_WANT_SYS_RT_SIGSUSPEND #define __ARCH_WANT_SYS_EXECVE #define __ARCH_WANT_KERNEL_EXECVE /* * "Conditional" syscalls Loading
arch/frv/kernel/Makefile +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ heads-$(CONFIG_MMU) := head-mmu-fr451.o extra-y:= head.o vmlinux.lds obj-y := $(heads-y) entry.o entry-table.o break.o switch_to.o \ kernel_execve.o process.o traps.o ptrace.o signal.o dma.o \ process.o traps.o ptrace.o signal.o dma.o \ sys_frv.o time.o setup.o frv_ksyms.o \ debug-stub.o irq.o sleep.o uaccess.o Loading
arch/frv/kernel/entry.S +5 −0 Original line number Diff line number Diff line Loading @@ -871,6 +871,11 @@ ret_from_kernel_thread: calll @(gr21,gr0) bra sys_exit .globl ret_from_kernel_execve ret_from_kernel_execve: ori gr28,0,sp bra __syscall_exit ################################################################################################### # # Return to user mode is not as complex as all this looks, Loading
arch/frv/kernel/kernel_execve.Sdeleted 100644 → 0 +0 −33 Original line number Diff line number Diff line /* in-kernel program execution * * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. * Written by David Howells (dhowells@redhat.com) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. */ #include <linux/linkage.h> #include <asm/unistd.h> ############################################################################### # # Do a system call from kernel instead of calling sys_execve so we end up with # proper pt_regs. # # int kernel_execve(const char *filename, char *const argv[], char *const envp[]) # # On entry: GR8/GR9/GR10: arguments to function # On return: GR8: syscall return. # ############################################################################### .globl kernel_execve .type kernel_execve,@function kernel_execve: setlos __NR_execve,gr7 tira gr0,#0 bralr .size kernel_execve,.-kernel_execve