Module Name:    src
Committed By:   skrll
Date:           Mon Sep 21 10:35:12 UTC 2020

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

Log Message:
Allow an undefined instruction to use lr (r14) as Rt. New gcc emits this
with TPIDRURO read.

Not sure why the exception handler cares if sp or pc are used as Rt


To generate a diff of this commit:
cvs rdiff -u -r1.66 -r1.67 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.66 src/sys/arch/arm/arm/undefined.c:1.67
--- src/sys/arch/arm/arm/undefined.c:1.66	Tue Oct  1 18:00:07 2019
+++ src/sys/arch/arm/arm/undefined.c	Mon Sep 21 10:35:12 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: undefined.c,v 1.66 2019/10/01 18:00:07 chs Exp $	*/
+/*	$NetBSD: undefined.c,v 1.67 2020/09/21 10:35:12 skrll Exp $	*/
 
 /*
  * Copyright (c) 2001 Ben Harris.
@@ -55,7 +55,7 @@
 #include <sys/kgdb.h>
 #endif
 
-__KERNEL_RCSID(0, "$NetBSD: undefined.c,v 1.66 2019/10/01 18:00:07 chs Exp $");
+__KERNEL_RCSID(0, "$NetBSD: undefined.c,v 1.67 2020/09/21 10:35:12 skrll Exp $");
 
 #include <sys/kmem.h>
 #include <sys/queue.h>
@@ -136,7 +136,7 @@ cp15_trapper(u_int addr, u_int insn, str
 	 * Don't overwrite sp, pc, etc.
 	 */
 	const u_int regno = (insn >> 12) & 15;
-	if (regno > 12)
+	if (regno == 13 || regno == 15)
 		return 1;
 
 	/*

Reply via email to