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/47f6ba575a62
branches:  trunk
changeset: 976364:47f6ba575a62
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 ca3659dfbfa8 -r 47f6ba575a62 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