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/fc28f5a0101f
branches:  trunk
changeset: 1014399:fc28f5a0101f
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 24d84ac52bac -r fc28f5a0101f 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