Module Name:    src
Committed By:   matt
Date:           Tue Nov 15 19:01:54 UTC 2011

Modified Files:
        src/sys/arch/arm/arm: undefined.c

Log Message:
Make sure to advance past the instruction we just emulated.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sys/arch/arm/arm/undefined.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/arm/arm/undefined.c
diff -u src/sys/arch/arm/arm/undefined.c:1.41 src/sys/arch/arm/arm/undefined.c:1.42
--- src/sys/arch/arm/arm/undefined.c:1.41	Thu Apr  7 11:02:24 2011
+++ src/sys/arch/arm/arm/undefined.c	Tue Nov 15 19:01:54 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: undefined.c,v 1.41 2011/04/07 11:02:24 matt Exp $	*/
+/*	$NetBSD: undefined.c,v 1.42 2011/11/15 19:01:54 matt Exp $	*/
 
 /*
  * Copyright (c) 2001 Ben Harris.
@@ -54,7 +54,7 @@
 #include <sys/kgdb.h>
 #endif
 
-__KERNEL_RCSID(0, "$NetBSD: undefined.c,v 1.41 2011/04/07 11:02:24 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: undefined.c,v 1.42 2011/11/15 19:01:54 matt Exp $");
 
 #include <sys/malloc.h>
 #include <sys/queue.h>
@@ -151,6 +151,7 @@ cp15_trapper(u_int addr, u_int insn, str
 	 */
 	if ((insn & 0xffff0fff) == 0xee1d0f70) {
 		*regp = (uintptr_t)l->l_private;
+		frame->tf_pc += INSN_SIZE
 		return 0;
 	}
 
@@ -163,6 +164,7 @@ cp15_trapper(u_int addr, u_int insn, str
 			*regp = pcb->pcb_user_pid_rw;
 		else
 			pcb->pcb_user_pid_rw = *regp;
+		frame->tf_pc += INSN_SIZE
 		return 0;
 	}
 

Reply via email to