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 Decode movw/movt
details: https://anonhg.NetBSD.org/src/rev/33ea087efbfe
branches: trunk
changeset: 789152:33ea087efbfe
user: matt <matt%NetBSD.org@localhost>
date: Fri Aug 09 07:11:39 2013 +0000
description:
Decode movw/movt
diffstat:
sys/arch/arm/arm/disassem.c | 44 ++++++++++++++++++++++++++------------------
1 files changed, 26 insertions(+), 18 deletions(-)
diffs (84 lines):
diff -r 1f29868dee50 -r 33ea087efbfe sys/arch/arm/arm/disassem.c
--- a/sys/arch/arm/arm/disassem.c Fri Aug 09 06:00:09 2013 +0000
+++ b/sys/arch/arm/arm/disassem.c Fri Aug 09 07:11:39 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: disassem.c,v 1.20 2012/12/18 06:31:58 matt Exp $ */
+/* $NetBSD: disassem.c,v 1.21 2013/08/09 07:11:39 matt Exp $ */
/*
* Copyright (c) 1996 Mark Brinicombe.
@@ -49,7 +49,7 @@
#include <sys/param.h>
-__KERNEL_RCSID(0, "$NetBSD: disassem.c,v 1.20 2012/12/18 06:31:58 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: disassem.c,v 1.21 2013/08/09 07:11:39 matt Exp $");
#include <sys/systm.h>
#include <arch/arm/arm/disassem.h>
@@ -106,6 +106,7 @@
* W - writeback flag
* X - block transfer type
* Y - block transfer type (r13 base)
+ * Z - 16-bit value (movw,movt)
* # - co-processor number
*/
@@ -153,27 +154,29 @@
{ 0x0ff00ff0, 0x01400090, "swpb", "dmo" },
{ 0x0fbf0fff, 0x010f0000, "mrs", "dp" }, /* Before data processing */
{ 0x0fb0fff0, 0x0120f000, "msr", "pFm" },/* Before data processing */
- { 0x0fb0f000, 0x0320f000, "msr", "pF2" },/* Before data processing */
+ { 0x0fe0f000, 0x0320f000, "msr", "pF2" },/* Before data processing */
{ 0x0ffffff0, 0x012fff10, "bx", "m" },
{ 0x0fff0ff0, 0x016f0f10, "clz", "dm" },
{ 0x0ffffff0, 0x012fff30, "blx", "m" },
{ 0xfff000f0, 0xe1200070, "bkpt", "k" },
- { 0x0de00000, 0x00000000, "and", "Sdn2" },
- { 0x0de00000, 0x00200000, "eor", "Sdn2" },
- { 0x0de00000, 0x00400000, "sub", "Sdn2" },
- { 0x0de00000, 0x00600000, "rsb", "Sdn2" },
- { 0x0de00000, 0x00800000, "add", "Sdn2" },
- { 0x0de00000, 0x00a00000, "adc", "Sdn2" },
- { 0x0de00000, 0x00c00000, "sbc", "Sdn2" },
- { 0x0de00000, 0x00e00000, "rsc", "Sdn2" },
- { 0x0df00000, 0x01100000, "tst", "Dn2" },
- { 0x0df00000, 0x01300000, "teq", "Dn2" },
- { 0x0de00000, 0x01400000, "cmp", "Dn2" },
- { 0x0de00000, 0x01600000, "cmn", "Dn2" },
- { 0x0de00000, 0x01800000, "orr", "Sdn2" },
+ { 0x0fe00000, 0x02000000, "and", "Sdn2" },
+ { 0x0fe00000, 0x02200000, "eor", "Sdn2" },
+ { 0x0fe00000, 0x02400000, "sub", "Sdn2" },
+ { 0x0fe00000, 0x02600000, "rsb", "Sdn2" },
+ { 0x0fe00000, 0x02800000, "add", "Sdn2" },
+ { 0x0fe00000, 0x02a00000, "adc", "Sdn2" },
+ { 0x0fe00000, 0x02c00000, "sbc", "Sdn2" },
+ { 0x0fe00000, 0x02e00000, "rsc", "Sdn2" },
+ { 0x0ff00000, 0x03000000, "movw", "dZ" },
+ { 0x0ff00000, 0x03100000, "tst", "Dn2" },
+ { 0x0ff00000, 0x03300000, "teq", "Dn2" },
+ { 0x0ff00000, 0x03400000, "movt", "dZ" },
+ { 0x0ff00000, 0x03500000, "cmp", "Dn2" },
+ { 0x0ff00000, 0x03700000, "cmn", "Dn2" },
+ { 0x0fe00000, 0x03800000, "orr", "Sdn2" },
{ 0x0de00000, 0x01a00000, "mov", "Sd2" },
- { 0x0de00000, 0x01c00000, "bic", "Sdn2" },
- { 0x0de00000, 0x01e00000, "mvn", "Sd2" },
+ { 0x0fe00000, 0x03c00000, "bic", "Sdn2" },
+ { 0x0fe00000, 0x03e00000, "mvn", "Sd2" },
{ 0x0ff08f10, 0x0e000100, "adf", "PRfgh" },
{ 0x0ff08f10, 0x0e100100, "muf", "PRfgh" },
{ 0x0ff08f10, 0x0e200100, "suf", "PRfgh" },
@@ -468,6 +471,11 @@
case 'Y':
di->di_printf("%s", insn_stkblktrans(insn));
break;
+ /* Z - print movw/movt argument */
+ case 'Z':
+ di->di_printf(", #0x%04x",
+ ((insn & 0xf0000) >> 4) | (insn & 0xfff));
+ break;
/* c - comment field bits(0-23) */
case 'c':
di->di_printf("0x%08x", (insn & 0x00ffffff));
Home |
Main Index |
Thread Index |
Old Index