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;
}