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

Commit a2eddc7c authored by David Howells's avatar David Howells Committed by Al Viro
Browse files

FRV: Optimise the system call exit path in entry.S [ver #2]



Optimise the system call exit path in entry.S by packing some instructions.

Suggested-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 1e5ef915
Loading
Loading
Loading
Loading
+7 −6
Original line number Original line Diff line number Diff line
@@ -905,18 +905,19 @@ __syscall_call:
__syscall_exit:
__syscall_exit:
	LEDS		0x6300
	LEDS		0x6300


	sti		gr8,@(gr28,#REG_GR(8))	; save return value
	# keep current PSR in GR23
	movsg		psr,gr23


	# rebuild saved psr - execve will change it for init/main.c
	ldi		@(gr28,#REG_PSR),gr22
	ldi		@(gr28,#REG_PSR),gr22

	sti.p		gr8,@(gr28,#REG_GR(8))	; save return value

	# rebuild saved psr - execve will change it for init/main.c
	srli		gr22,#1,gr5
	srli		gr22,#1,gr5
	andi.p		gr22,#~PSR_PS,gr22
	andi.p		gr22,#~PSR_PS,gr22
	andi		gr5,#PSR_PS,gr5
	andi		gr5,#PSR_PS,gr5
	or		gr5,gr22,gr22
	or		gr5,gr22,gr22
	ori		gr22,#PSR_S,gr22
	ori.p		gr22,#PSR_S,gr22

	# keep current PSR in GR23
	movsg		psr,gr23


	# make sure we don't miss an interrupt setting need_resched or sigpending between
	# make sure we don't miss an interrupt setting need_resched or sigpending between
	# sampling and the RETT
	# sampling and the RETT