Commit 7147e215 authored by Al Viro's avatar Al Viro
Browse files

sh: switch to generic kernel_thread()/kernel_execve()



Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent ddffeb8c
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -40,6 +40,8 @@ config SUPERH
	select GENERIC_STRNLEN_USER
	select HAVE_MOD_ARCH_SPECIFIC if DWARF_UNWINDER
	select MODULES_USE_ELF_RELA
	select GENERIC_KERNEL_THREAD
	select GENERIC_KERNEL_EXECVE
	help
	  The SuperH is a RISC processor targeted for use in embedded systems
	  and consumer electronics; it was also used in the Sega Dreamcast
+0 −5
Original line number Diff line number Diff line
@@ -126,11 +126,6 @@ extern void start_thread(struct pt_regs *regs, unsigned long new_pc, unsigned lo
/* Free all resources held by a thread. */
extern void release_thread(struct task_struct *);

/*
 * create a kernel thread without removing it from tasklists
 */
extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);

/* Copy and release all segment info associated with a VM */
#define copy_segments(p, mm)	do { } while(0)
#define release_segments(mm)	do { } while(0)
+0 −5
Original line number Diff line number Diff line
@@ -159,11 +159,6 @@ struct mm_struct;

/* Free all resources held by a thread. */
extern void release_thread(struct task_struct *);
/*
 * create a kernel thread without removing it from tasklists
 */
extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);


/* Copy and release all segment info associated with a VM */
#define copy_segments(p, mm)	do { } while (0)
+2 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ obj-y := debugtraps.o dma-nommu.o dumpstack.o \
	   machvec.o nmi_debug.o process.o				\
	   process_$(BITS).o ptrace.o ptrace_$(BITS).o			\
	   reboot.o return_address.o					\
	   setup.o signal_$(BITS).o sys_sh.o sys_sh$(BITS).o		\
	   setup.o signal_$(BITS).o sys_sh.o 				\
	   syscalls_$(BITS).o time.o topology.o traps.o			\
	   traps_$(BITS).o unwinder.o

@@ -25,6 +25,7 @@ obj-y += iomap.o
obj-$(CONFIG_HAS_IOPORT)	+= ioport.o
endif

obj-$(CONFIG_SUPERH32)		+= sys_sh32.o
obj-y				+= cpu/
obj-$(CONFIG_VSYSCALL)		+= vsyscall/
obj-$(CONFIG_SMP)		+= smp.o
+19 −0
Original line number Diff line number Diff line
@@ -1228,6 +1228,25 @@ ret_from_fork:
	pta	ret_from_syscall, tr0
	blink	tr0, ZERO

.global	ret_from_kernel_thread
ret_from_kernel_thread:

	movi	schedule_tail,r5
	ori	r5, 1, r5
	ptabs	r5, tr0
	blink	tr0, LINK

	ld.q	SP, FRAME_R(2), r2
	ld.q	SP, FRAME_R(3), r3
	ptabs	r3, tr0
	blink	tr0, LINK

	ld.q	SP, FRAME_S(FSPC), r2
	addi	r2, 4, r2		/* Move PC, being pre-execution event */
	st.q	SP, FRAME_S(FSPC), r2
	pta	ret_from_syscall, tr0
	blink	tr0, ZERO

syscall_allowed:
	/* Use LINK to deflect the exit point, default is syscall_ret */
	pta	syscall_ret, tr0
Loading