svn commit: r367138 - head/sys/riscv/riscv

Edward Tomasz Napierala trasz at FreeBSD.org
Thu Oct 29 15:36:21 UTC 2020


Author: trasz
Date: Thu Oct 29 15:36:20 2020
New Revision: 367138
URL: https://svnweb.freebsd.org/changeset/base/367138

Log:
  Optimize set_syscall_retval for riscv by predicting the return
  value to be zero.
  
  Reviewed by:	mhorne, kp
  MFC after:	2 weeks
  Sponsored by:	EPSRC
  Differential Revision:	https://reviews.freebsd.org/D26990

Modified:
  head/sys/riscv/riscv/vm_machdep.c

Modified: head/sys/riscv/riscv/vm_machdep.c
==============================================================================
--- head/sys/riscv/riscv/vm_machdep.c	Thu Oct 29 15:28:15 2020	(r367137)
+++ head/sys/riscv/riscv/vm_machdep.c	Thu Oct 29 15:36:20 2020	(r367138)
@@ -132,12 +132,14 @@ cpu_set_syscall_retval(struct thread *td, int error)
 
 	frame = td->td_frame;
 
-	switch (error) {
-	case 0:
+	if (__predict_true(error == 0)) {
 		frame->tf_a[0] = td->td_retval[0];
 		frame->tf_a[1] = td->td_retval[1];
 		frame->tf_t[0] = 0;		/* syscall succeeded */
-		break;
+		return;
+	}
+
+	switch (error) {
 	case ERESTART:
 		frame->tf_sepc -= 4;		/* prev instruction */
 		break;


More information about the svn-src-head mailing list