Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/aarch64/include remove suspicious compare, and clea...



details:   https://anonhg.NetBSD.org/src/rev/3cda6afa18ee
branches:  trunk
changeset: 322270:3cda6afa18ee
user:      ryo <ryo%NetBSD.org@localhost>
date:      Fri Apr 27 09:05:26 2018 +0000

description:
remove suspicious compare, and cleanup complex conditionals.
pointed out PR/53159 by dcb314, thanks.

diffstat:

 sys/arch/aarch64/include/db_machdep.h |  94 ++++++++++++++++++++--------------
 1 files changed, 54 insertions(+), 40 deletions(-)

diffs (114 lines):

diff -r f2a27d253c02 -r 3cda6afa18ee sys/arch/aarch64/include/db_machdep.h
--- a/sys/arch/aarch64/include/db_machdep.h     Fri Apr 27 09:02:16 2018 +0000
+++ b/sys/arch/aarch64/include/db_machdep.h     Fri Apr 27 09:05:26 2018 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: db_machdep.h,v 1.3 2018/04/01 04:35:03 ryo Exp $ */
+/* $NetBSD: db_machdep.h,v 1.4 2018/04/27 09:05:26 ryo Exp $ */
 
 /*-
  * Copyright (c) 2014 The NetBSD Foundation, Inc.
@@ -118,51 +118,65 @@
 inst_load(db_expr_t insn)
 {
        return
-           ((((insn) & 0x3b000000) == 0x18000000) || /* literal */
-            (((insn) & 0x3f400000) == 0x08400000) || /* exclusive */
-            (((insn) & 0x3bc00000) == 0x28400000) || /* no-allocate pair */
-            ((((insn) & 0x3b200c00) == 0x38000400) &&
-             (((insn) & 0x3be00c00) != 0x38000400) &&
-             (((insn) & 0xffe00c00) != 0x3c800400)) || /* imm post-indexed */
-            ((((insn) & 0x3b200c00) == 0x38000c00) &&
-             (((insn) & 0x3be00c00) != 0x38000c00) &&
-             (((insn) & 0xffe00c00) != 0x3c800c00)) || /* imm pre-indexed */
-            ((((insn) & 0x3b200c00) == 0x38200800) &&
-             (((insn) & 0x3be00c00) != 0x38200800) &&
-             (((insn) & 0xffe00c00) != 0x3ca00c80)) || /* register offset */
-            ((((insn) & 0x3b200c00) == 0x38000800) &&
-             (((insn) & 0x3be00c00) != 0x38000800)) || /* unprivileged */
-            ((((insn) & 0x3b200c00) == 0x38000000) &&
-             (((insn) & 0x3be00c00) != 0x38000000) &&
-             (((insn) & 0xffe00c00) != 0x3c800000)) || /* unscaled imm */
-            ((((insn) & 0x3b000000) == 0x39000000) &&
-             (((insn) & 0x3bc00000) != 0x39000000) &&
-             (((insn) & 0xffc00000) != 0x3d800000)) || /* unsigned imm */
-            (((insn) & 0x3bc00000) == 0x28400000) || /* pair (offset) */
-            (((insn) & 0x3bc00000) == 0x28c00000) || /* pair (post-indexed) */
-            (((insn) & 0x3bc00000) == 0x29800000)); /* pair (pre-indexed) */
+           ((insn & 0xffe00c00) == 0xb8800000) ||      /* ldursw */
+           /* ldrsw imm{preidx,postidx} */
+           ((insn & 0xffe00400) == 0xb8800c00) ||
+           ((insn & 0xffc00c00) == 0xb8a00800) ||      /* ldrsw reg,ldtrsw */
+           ((insn & 0xffc00000) == 0xb9800000) ||      /* ldrsw immunsign */
+           ((insn & 0xffc00000) == 0x39400000) ||      /* ldrb immunsign */
+           ((insn & 0xff000000) == 0x98000000) ||      /* ldrsw literal */
+           /* ldpsw {preidx,postidx} */
+           ((insn & 0xfec00000) == 0x69c00000) ||
+           /* ldrh immunsign,ldpsw signed */
+           ((insn & 0xefc00000) == 0x79400000) ||
+           ((insn & 0xbffffc00) == 0x885f7c00) ||      /* ldxr */
+           ((insn & 0xbffffc00) == 0x485f7c00) ||      /* ldxr[bh] */
+           ((insn & 0xbfff0000) == 0x887f8000) ||      /* ldaxp,ldxp */
+           ((insn & 0xbfe00c00) == 0xb8400000) ||      /* ldur */
+           ((insn & 0xbfe00c00) == 0x78400000) ||      /* ldur[bh] */
+           /* ldr imm{preidx,postidx} */
+           ((insn & 0xbfe00400) == 0xb8400c00) ||
+           /* ldr[bh] imm{preidx,postidx} */
+           ((insn & 0xbfe00400) == 0x78400c00) ||
+           ((insn & 0xbfc00c00) == 0xb8600800) ||      /* ldr reg,ldtr */
+           /* ldr[bh] reg,ldtr[bh] */
+           ((insn & 0xbfc00c00) == 0x78600800) ||
+           ((insn & 0xbfc00000) == 0xb9400000) ||      /* ldr immunsign */
+           ((insn & 0xbfa00c00) == 0x78800000) ||      /* ldursh,ldursb */
+           /* ldrs[bh] imm{preidx,postidx} */
+           ((insn & 0xbfa00400) == 0x78800c00) ||
+           /* ldrs[bh] reg,ldtrs[bh] */
+           ((insn & 0xbf800c00) == 0x78a00800) ||
+           ((insn & 0xbf800000) == 0x79800000) ||      /* ldrs[bh] immunsign */
+           ((insn & 0xbf7ffc00) == 0x88dffc00) ||      /* ldar,ldaxr */
+           ((insn & 0xbf7ffc00) == 0x48dffc00) ||      /* ldar[bh],ldaxr[bh] */
+           ((insn & 0xbf000000) == 0x18000000) ||      /* ldr literal */
+           /* ldp {preidx,postidx,signed},ldnp */
+           ((insn & 0x7e400000) == 0x29c00000);
 }
 
 static inline bool
 inst_store(db_expr_t insn)
 {
        return
-           ((((insn) & 0x3f400000) == 0x08000000) || /* exclusive */
-            (((insn) & 0x3bc00000) == 0x28000000) || /* no-allocate pair */
-            ((((insn) & 0x3be00c00) == 0x38000400) ||
-             (((insn) & 0xffe00c00) == 0x3c800400)) || /* imm post-indexed */
-            ((((insn) & 0x3be00c00) == 0x38000c00) ||
-             (((insn) & 0xffe00c00) == 0x3c800c00)) || /* imm pre-indexed */
-            ((((insn) & 0x3be00c00) == 0x38200800) ||
-             (((insn) & 0xffe00c00) == 0x3ca00800)) || /* register offset */
-            (((insn) & 0x3be00c00) == 0x38000800) ||  /* unprivileged */
-            ((((insn) & 0x3be00c00) == 0x38000000) ||
-             (((insn) & 0xffe00c00) == 0x3c800000)) || /* unscaled imm */
-            ((((insn) & 0x3bc00000) == 0x39000000) ||
-             (((insn) & 0xffc00000) == 0x3d800000)) || /* unsigned imm */
-            (((insn) & 0x3bc00000) == 0x28000000) || /* pair (offset) */
-            (((insn) & 0x3bc00000) == 0x28800000) || /* pair (post-indexed) */
-            (((insn) & 0x3bc00000) == 0x29800000)); /* pair (pre-indexed) */
+           ((insn & 0xbffffc00) == 0x889ffc00) ||      /* stlr */
+           ((insn & 0xbffffc00) == 0x489ffc00) ||      /* stlr[bh] */
+           ((insn & 0xbfe07c00) == 0x8800fc00) ||      /* stlxr,stxr */
+           ((insn & 0xbfe07c00) == 0x4800fc00) ||      /* stlxr[bh],stxr[bh] */
+           ((insn & 0xbfe00c00) == 0xb8000000) ||      /* stur */
+           ((insn & 0xbfe00c00) == 0x78000000) ||      /* stur[bh] */
+           /* str imm{preidx,postidx} */
+           ((insn & 0xbfe00400) == 0xb8000c00) ||
+           /* str[bh] imm{preidx,postidx} */
+           ((insn & 0xbfe00400) == 0x78000c00) ||
+           ((insn & 0xbfe00000) == 0x88208000) ||      /* stlxp,stxp */
+           ((insn & 0xbfc00c00) == 0xb8200800) ||      /* str reg,sttr */
+           /* str[bh] reg,sttr[bh] */
+           ((insn & 0xbfc00c00) == 0x78200800) ||
+           ((insn & 0xbfc00000) == 0xb9000000) ||      /* str immunsign */
+           ((insn & 0xbfc00000) == 0x79000000) ||      /* str[bh] immunsign */
+           /* stp {preidx,postidx,signed},stnp */
+           ((insn & 0x7e400000) == 0x29800000);
 }
 
 #define SOFTWARE_SSTEP



Home | Main Index | Thread Index | Old Index