Module Name:    src
Committed By:   rin
Date:           Tue Jul  7 00:37:46 UTC 2020

Modified Files:
        src/sys/arch/powerpc/booke: trap.c

Log Message:
For booke, restore callee saved registers when recovery for page fault
fails for kernel.

OOPS! How on the earth we had overlooked this error so far...


To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/arch/powerpc/booke/trap.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/powerpc/booke/trap.c
diff -u src/sys/arch/powerpc/booke/trap.c:1.29 src/sys/arch/powerpc/booke/trap.c:1.30
--- src/sys/arch/powerpc/booke/trap.c:1.29	Mon Jul  6 10:13:02 2020
+++ src/sys/arch/powerpc/booke/trap.c	Tue Jul  7 00:37:46 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: trap.c,v 1.29 2020/07/06 10:13:02 rin Exp $	*/
+/*	$NetBSD: trap.c,v 1.30 2020/07/07 00:37:46 rin Exp $	*/
 /*-
  * Copyright (c) 2010, 2011 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.29 2020/07/06 10:13:02 rin Exp $");
+__KERNEL_RCSID(1, "$NetBSD: trap.c,v 1.30 2020/07/07 00:37:46 rin Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_altivec.h"
@@ -690,6 +690,7 @@ onfaulted(struct trapframe *tf, register
 	tf->tf_fixreg[1] = fb->fb_sp;
 	tf->tf_fixreg[2] = fb->fb_r2;
 	tf->tf_fixreg[3] = rv;
+	memcpy(&tf->tf_fixreg[13], fb->fb_fixreg, sizeof(fb->fb_fixreg));
 	pcb->pcb_onfault = NULL;
 	return true;
 }

Reply via email to