Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 019f96a3 authored by Al Viro's avatar Al Viro
Browse files

frv: switch to generic kernel_execve

parent 460dabab
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -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. */
+1 −0
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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

+5 −0
Original line number Diff line number Diff line
@@ -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,

arch/frv/kernel/kernel_execve.S

deleted100644 → 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