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

Commit 2f12af35 authored by Al Viro's avatar Al Viro
Browse files

sparc64: switch to generic kernel_execve()



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 5230429a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ config SPARC64
	select HAVE_C_RECORDMCOUNT
	select NO_BOOTMEM
	select GENERIC_KERNEL_THREAD
	select GENERIC_KERNEL_EXECVE

config ARCH_DEFCONFIG
	string
+0 −22
Original line number Diff line number Diff line
@@ -729,25 +729,3 @@ SYSCALL_DEFINE5(rt_sigaction, int, sig, const struct sigaction __user *, act,

	return ret;
}

/*
 * 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,
		  const char *const argv[],
		  const char *const envp[])
{
	long __res;
	register long __g1 __asm__ ("g1") = __NR_execve;
	register long __o0 __asm__ ("o0") = (long)(filename);
	register long __o1 __asm__ ("o1") = (long)(argv);
	register long __o2 __asm__ ("o2") = (long)(envp);
	asm volatile ("t 0x6d\n\t"
		      "sub %%g0, %%o0, %0\n\t"
		      "movcc %%xcc, %%o0, %0\n\t"
		      : "=r" (__res), "=&r" (__o0)
		      : "1" (__o0), "r" (__o1), "r" (__o2), "r" (__g1)
		      : "cc");
	return __res;
}
+5 −5
Original line number Diff line number Diff line
@@ -115,12 +115,12 @@ ret_from_syscall:
	call	schedule_tail
	 mov	%g7, %o0
	ldx	[%sp + PTREGS_OFF + PT_V9_I0], %o0
	brnz,a,pt	%o0, ret_sys_call
	brnz,pt	%o0, ret_sys_call
	 ldx	[%g6 + TI_FLAGS], %l0
	ldx	[%sp + PTREGS_OFF + PT_V9_G1], %l0
	call	%l0
	ldx	[%sp + PTREGS_OFF + PT_V9_G1], %l1
	call	%l1
	 ldx	[%sp + PTREGS_OFF + PT_V9_G2], %o0
	call	do_exit	! will not return
	ba,pt	%xcc, ret_sys_call
	 mov	0, %o0

	.globl	sparc_exit