Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/arm/arm Allow an undefined instruction to use lr (r...



details:   https://anonhg.NetBSD.org/src/rev/b3618a26cdf9
branches:  trunk
changeset: 938947:b3618a26cdf9
user:      skrll <skrll%NetBSD.org@localhost>
date:      Mon Sep 21 10:35:12 2020 +0000

description:
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

diffstat:

 sys/arch/arm/arm/undefined.c |  6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diffs (27 lines):

diff -r 711e58e4a505 -r b3618a26cdf9 sys/arch/arm/arm/undefined.c
--- a/sys/arch/arm/arm/undefined.c      Mon Sep 21 08:46:07 2020 +0000
+++ b/sys/arch/arm/arm/undefined.c      Mon Sep 21 10:35:12 2020 +0000
@@ -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 @@
         * Don't overwrite sp, pc, etc.
         */
        const u_int regno = (insn >> 12) & 15;
-       if (regno > 12)
+       if (regno == 13 || regno == 15)
                return 1;
 
        /*



Home | Main Index | Thread Index | Old Index