* gas/arm/arm.exp: Add archv6 and thumbv6.

* gas/arm/archv6.d: New file.
	* gas/arm/archv6.s: Likewise.
	* gas/arm/thumbv6.d: Likewise.
	* gas/arm/thumbv6.s: Likewise.

	Add V6 support.
	* config/tc-arm.c (ARM_EXT_V6): New macro.
	(ARM_ARCH_V6): Likewise.
	(SHIFT_IMMEDIATE): Likewise.
	(SHIFT_LSL_OR_ASR_IMMEDIATE): Likewise.
	(SHIFT_ASR_IMMEDIATE): Likewise.
	(SHIFT_LSL_IMMMEDIATE): Likewise.
	(do_cps): New function.
	(do_cpsi): Likewise.
	(do_ldrex): Likewise.
	(do_pkhbt): Likewise.
	(do_pkhtb): Likewise.
	(do_qadd16): Likewise.
	(do_rev): Likewise.
	(do_rfe): Likewise.
	(do_sxtah): Likewise.
	(do_sxth): Likewise.
	(do_setend): Likewise.
	(do_smlad): Likewise.
	(do_smlald): Likewise.
	(do_smmul): Likewise.
	(do_ssat): Likewise.
	(do_usat): Likewise.
	(do_srs): Likewise.
	(do_ssat16): Likewise.
	(do_usat16): Likewise.
	(do_strex): Likewise.
	(do_umaal): Likewise.
	(do_cps_mode): Likewise.
	(do_cps_flags): Likewise.
	(do_endian_specifier): Likewise.
	(do_pkh_core): Likewise.
	(do_sat): Likewise.
	(do_sat16): Likewise.
	(insns): Add V6 instructions.
	(do_t_cps): New function.
	(do_t_cpy): Likewise.
	(do_t_setend): Likewise.
	(THUMB_CPY): New macro.
	(tinsns): Add V6 instructions.
	(decode_shift): Handle V6 restricted-shift options.
	(thumb_mov_compare): Support CPY.
	(arm_cores): Add arm1136js and arm1136jfs.
	(arm_archs): Add armv6.
	(arm_fpus): Add arm1136jfs.
	* doc/c-arm.texi (ARM Options): Mention arm1136js, arm1136jfs, and
	armv6 options.

	* gas/arm/arm.exp: Add archv6 and thumbv6.
	* gas/arm/archv6.d: New file.
	* gas/arm/archv6.s: Likewise.
	* gas/arm/thumbv6.d: Likewise.
	* gas/arm/thumbv6.s: Likewise.

	* arm-dis.c (print_arm_insn): Add 'W' macro.
	* arm-opc.h (arm_opcodes): Add V6 instructions.
	(thumb_opcodes): Likewise.
This commit is contained in:
Mark Mitchell 2003-12-06 01:25:29 +00:00
parent 32edc941e1
commit 09d92015d3
13 changed files with 1872 additions and 14 deletions

View File

@ -1,3 +1,55 @@
2003-12-05 Ricardo Anguiano <anguiano@codesourcery.com>
Mark Mitchell <mark@codesourcery.com>
Richard Earnshaw <rearnsha@arm.com>
Add V6 support.
* config/tc-arm.c (ARM_EXT_V6): New macro.
(ARM_ARCH_V6): Likewise.
(SHIFT_IMMEDIATE): Likewise.
(SHIFT_LSL_OR_ASR_IMMEDIATE): Likewise.
(SHIFT_ASR_IMMEDIATE): Likewise.
(SHIFT_LSL_IMMMEDIATE): Likewise.
(do_cps): New function.
(do_cpsi): Likewise.
(do_ldrex): Likewise.
(do_pkhbt): Likewise.
(do_pkhtb): Likewise.
(do_qadd16): Likewise.
(do_rev): Likewise.
(do_rfe): Likewise.
(do_sxtah): Likewise.
(do_sxth): Likewise.
(do_setend): Likewise.
(do_smlad): Likewise.
(do_smlald): Likewise.
(do_smmul): Likewise.
(do_ssat): Likewise.
(do_usat): Likewise.
(do_srs): Likewise.
(do_ssat16): Likewise.
(do_usat16): Likewise.
(do_strex): Likewise.
(do_umaal): Likewise.
(do_cps_mode): Likewise.
(do_cps_flags): Likewise.
(do_endian_specifier): Likewise.
(do_pkh_core): Likewise.
(do_sat): Likewise.
(do_sat16): Likewise.
(insns): Add V6 instructions.
(do_t_cps): New function.
(do_t_cpy): Likewise.
(do_t_setend): Likewise.
(THUMB_CPY): New macro.
(tinsns): Add V6 instructions.
(decode_shift): Handle V6 restricted-shift options.
(thumb_mov_compare): Support CPY.
(arm_cores): Add arm1136js and arm1136jfs.
(arm_archs): Add armv6.
(arm_fpus): Add arm1136jfs.
* doc/c-arm.texi (ARM Options): Mention arm1136js, arm1136jfs, and
armv6 options.
2003-12-06 Christian Groessler <chris@groessler.org>
* config/tc-z8k.c (parse_reg): Be case insensitive when checking

View File

@ -1,5 +1,7 @@
-*- text -*-
* Added support for ARM V6.
* Added support for sh4a and variants.
* Support for Renesas M32R2 added.

File diff suppressed because it is too large Load Diff

View File

@ -90,6 +90,8 @@ recognized:
@code{arm1020},
@code{arm1020t},
@code{arm1020e},
@code{arm1136js},
@code{arm1136jfs},
@code{ep9312} (ARM920 with Cirrus Maverick coprocessor),
@code{i80200} (Intel XScale processor)
@code{iwmmxt} (Intel(r) XScale processor with Wireless MMX(tm) technology coprocessor)
@ -128,7 +130,8 @@ names are recognized:
@code{armv5t},
@code{armv5txm},
@code{armv5te},
@code{armv5texp}
@code{armv5texp},
@code{armv6},
@code{iwmmxt}
and
@code{xscale}.
@ -161,9 +164,10 @@ The following format options are recognized:
@code{vfp10-r0},
@code{vfp9},
@code{vfpxd},
@code{arm1020t}
@code{arm1020t},
@code{arm1020e},
and
@code{arm1020e}.
@code{arm1136jfs}.
In addition to determining which instructions are assembled, this option
also affects the way in which the @code{.double} assembler directive behaves

View File

@ -1,3 +1,13 @@
2003-12-05 Ricardo Anguiano <anguiano@codesourcery.com>
Mark Mitchell <mark@codesourcery.com>
Richard Earnshaw <rearnsha@arm.com>
* gas/arm/arm.exp: Add archv6 and thumbv6.
* gas/arm/archv6.d: New file.
* gas/arm/archv6.s: Likewise.
* gas/arm/thumbv6.d: Likewise.
* gas/arm/thumbv6.s: Likewise.
2003-12-06 Christian Groessler <chris@groessler.org>
* gas/z8k/ctrl-names.d: New file.

View File

@ -0,0 +1,219 @@
#name: ARM V6 instructions
#as: -march=armv6
#objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+000 <[^>]*> f102000f ? cps #15
0+004 <[^>]*> f10c00c0 ? cpsid if
0+008 <[^>]*> f10800c0 ? cpsie if
0+00c <[^>]*> e1942f9f ? ldrex r2, \[r4\]
0+010 <[^>]*> 11984f9f ? ldrexne r4, \[r8\]
0+014 <[^>]*> fc4570c3 ? mcrr2 0, 12, r7, r5, cr3
0+018 <[^>]*> fc5570c3 ? mrrc2 0, 12, r7, r5, cr3
0+01c <[^>]*> e6852018 ? pkhbt r2, r5, r8
0+020 <[^>]*> e6852198 ? pkhbt r2, r5, r8, LSL #3
0+024 <[^>]*> e6852198 ? pkhbt r2, r5, r8, LSL #3
0+028 <[^>]*> 06852198 ? pkhbteq r2, r5, r8, LSL #3
0+02c <[^>]*> e6882015 ? pkhbt r2, r8, r5
0+030 <[^>]*> e68521d8 ? pkhtb r2, r5, r8, ASR #3
0+034 <[^>]*> e68521d8 ? pkhtb r2, r5, r8, ASR #3
0+038 <[^>]*> 068521d8 ? pkhtbeq r2, r5, r8, ASR #3
0+03c <[^>]*> e6242f17 ? qadd16 r2, r4, r7
0+040 <[^>]*> 16242f17 ? qadd16ne r2, r4, r7
0+044 <[^>]*> e6242f97 ? qadd8 r2, r4, r7
0+048 <[^>]*> 16242f97 ? qadd8ne r2, r4, r7
0+04c <[^>]*> e6242f37 ? qaddsubx r2, r4, r7
0+050 <[^>]*> 16242f37 ? qaddsubxne r2, r4, r7
0+054 <[^>]*> e6242f77 ? qsub16 r2, r4, r7
0+058 <[^>]*> 16242f77 ? qsub16ne r2, r4, r7
0+05c <[^>]*> e6242ff7 ? qsub8 r2, r4, r7
0+060 <[^>]*> 16242ff7 ? qsub8ne r2, r4, r7
0+064 <[^>]*> e6242f57 ? qsubaddx r2, r4, r7
0+068 <[^>]*> e6242f57 ? qsubaddx r2, r4, r7
0+06c <[^>]*> e6bf2f34 ? rev r2, r4
0+070 <[^>]*> e6bf2fb4 ? rev16 r2, r4
0+074 <[^>]*> 16bf3fb5 ? rev16ne r3, r5
0+078 <[^>]*> 16bf3f35 ? revne r3, r5
0+07c <[^>]*> e6ff2fb4 ? revsh r2, r4
0+080 <[^>]*> 16ff3fb5 ? revshne r3, r5
0+084 <[^>]*> f8120a00 ? rfeda r2
0+088 <[^>]*> f9320a00 ? rfedb r2!
0+08c <[^>]*> f8120a00 ? rfeda r2
0+090 <[^>]*> f9320a00 ? rfedb r2!
0+094 <[^>]*> f9b20a00 ? rfeib r2!
0+098 <[^>]*> f8920a00 ? rfeia r2
0+09c <[^>]*> f8920a00 ? rfeia r2
0+0a0 <[^>]*> f9b20a00 ? rfeib r2!
0+0a4 <[^>]*> e6142f17 ? sadd16 r2, r4, r7
0+0a8 <[^>]*> 16142f17 ? sadd16ne r2, r4, r7
0+0ac <[^>]*> e6b42075 ? sxtah r2, r4, r5
0+0b0 <[^>]*> e6b42475 ? sxtah r2, r4, r5, ROR #8
0+0b4 <[^>]*> 16b42075 ? sxtahne r2, r4, r5
0+0b8 <[^>]*> 16b42475 ? sxtahne r2, r4, r5, ROR #8
0+0bc <[^>]*> e6142f97 ? sadd8 r2, r4, r7
0+0c0 <[^>]*> 16142f97 ? sadd8ne r2, r4, r7
0+0c4 <[^>]*> e6842075 ? sxtab16 r2, r4, r5
0+0c8 <[^>]*> e6842475 ? sxtab16 r2, r4, r5, ROR #8
0+0cc <[^>]*> 16842075 ? sxtab16ne r2, r4, r5
0+0d0 <[^>]*> 16842475 ? sxtab16ne r2, r4, r5, ROR #8
0+0d4 <[^>]*> e6a42075 ? sxtab r2, r4, r5
0+0d8 <[^>]*> e6a42475 ? sxtab r2, r4, r5, ROR #8
0+0dc <[^>]*> 16a42075 ? sxtabne r2, r4, r5
0+0e0 <[^>]*> 16a42475 ? sxtabne r2, r4, r5, ROR #8
0+0e4 <[^>]*> e6142f37 ? saddaddx r2, r4, r7
0+0e8 <[^>]*> 16142f37 ? saddaddxne r2, r4, r7
0+0ec <[^>]*> e68210b3 ? sel r1, r2, r3
0+0f0 <[^>]*> 168210b3 ? selne r1, r2, r3
0+0f4 <[^>]*> f1010200 ? setend be
0+0f8 <[^>]*> f1010000 ? setend le
0+0fc <[^>]*> e6342f17 ? shadd16 r2, r4, r7
0+100 <[^>]*> 16342f17 ? shadd16ne r2, r4, r7
0+104 <[^>]*> e6342f97 ? shadd8 r2, r4, r7
0+108 <[^>]*> 16342f97 ? shadd8ne r2, r4, r7
0+10c <[^>]*> e6342f37 ? shaddsubx r2, r4, r7
0+110 <[^>]*> 16342f37 ? shaddsubxne r2, r4, r7
0+114 <[^>]*> e6342f77 ? shsub16 r2, r4, r7
0+118 <[^>]*> 16342f77 ? shsub16ne r2, r4, r7
0+11c <[^>]*> e6342ff7 ? shsub8 r2, r4, r7
0+120 <[^>]*> 16342ff7 ? shsub8ne r2, r4, r7
0+124 <[^>]*> e6342f57 ? shsubaddx r2, r4, r7
0+128 <[^>]*> 16342f57 ? shsubaddxne r2, r4, r7
0+12c <[^>]*> e7014312 ? smlad r1, r2, r3, r4
0+130 <[^>]*> d7014312 ? smladle r1, r2, r3, r4
0+134 <[^>]*> e7014332 ? smladx r1, r2, r3, r4
0+138 <[^>]*> d7014332 ? smladxle r1, r2, r3, r4
0+13c <[^>]*> e7421413 ? smlald r1, r2, r3, r4
0+140 <[^>]*> d7421413 ? smlaldle r1, r2, r3, r4
0+144 <[^>]*> e7421433 ? smlaldx r1, r2, r3, r4
0+148 <[^>]*> d7421433 ? smlaldxle r1, r2, r3, r4
0+14c <[^>]*> e7014352 ? smlsd r1, r2, r3, r4
0+150 <[^>]*> d7014352 ? smlsdle r1, r2, r3, r4
0+154 <[^>]*> e7014372 ? smlsdx r1, r2, r3, r4
0+158 <[^>]*> d7014372 ? smlsdxle r1, r2, r3, r4
0+15c <[^>]*> e7421453 ? smlsld r1, r2, r3, r4
0+160 <[^>]*> d7421453 ? smlsldle r1, r2, r3, r4
0+164 <[^>]*> e7421473 ? smlsldx r1, r2, r3, r4
0+168 <[^>]*> d7421473 ? smlsldxle r1, r2, r3, r4
0+16c <[^>]*> e7514312 ? smmla r1, r2, r3, r4
0+170 <[^>]*> d7514312 ? smmlale r1, r2, r3, r4
0+174 <[^>]*> e7514332 ? smmlar r1, r2, r3, r4
0+178 <[^>]*> d7514332 ? smmlarle r1, r2, r3, r4
0+17c <[^>]*> e75143d2 ? smmls r1, r2, r3, r4
0+180 <[^>]*> d75143d2 ? smmlsle r1, r2, r3, r4
0+184 <[^>]*> e75143f2 ? smmlsr r1, r2, r3, r4
0+188 <[^>]*> d75143f2 ? smmlsrle r1, r2, r3, r4
0+18c <[^>]*> e751f312 ? smmul r1, r2, r3
0+190 <[^>]*> d751f312 ? smmulle r1, r2, r3
0+194 <[^>]*> e751f332 ? smmulr r1, r2, r3
0+198 <[^>]*> d751f332 ? smmulrle r1, r2, r3
0+19c <[^>]*> e701f312 ? smuad r1, r2, r3
0+1a0 <[^>]*> d701f312 ? smuadle r1, r2, r3
0+1a4 <[^>]*> e701f332 ? smuadx r1, r2, r3
0+1a8 <[^>]*> d701f332 ? smuadxle r1, r2, r3
0+1ac <[^>]*> e701f352 ? smusd r1, r2, r3
0+1b0 <[^>]*> d701f352 ? smusdle r1, r2, r3
0+1b4 <[^>]*> e701f372 ? smusdx r1, r2, r3
0+1b8 <[^>]*> d701f372 ? smusdxle r1, r2, r3
0+1bc <[^>]*> f8cd0510 ? srsia #16
0+1c0 <[^>]*> f9ed0510 ? srsib #16!
0+1c4 <[^>]*> e6a01012 ? ssat r1, #1, r2
0+1c8 <[^>]*> e6a01152 ? ssat r1, #1, r2, ASR #2
0+1cc <[^>]*> e6a01112 ? ssat r1, #1, r2, LSL #2
0+1d0 <[^>]*> e6a01f31 ? ssat16 r1, #1, r1
0+1d4 <[^>]*> d6a01f31 ? ssat16le r1, #1, r1
0+1d8 <[^>]*> e6142f77 ? ssub16 r2, r4, r7
0+1dc <[^>]*> 16142f77 ? ssub16ne r2, r4, r7
0+1e0 <[^>]*> e6142ff7 ? ssub8 r2, r4, r7
0+1e4 <[^>]*> 16142ff7 ? ssub8ne r2, r4, r7
0+1e8 <[^>]*> e6142f57 ? ssubaddx r2, r4, r7
0+1ec <[^>]*> 16142f57 ? ssubaddxne r2, r4, r7
0+1f0 <[^>]*> e1831f92 ? strex r1, r2, \[r3\]
0+1f4 <[^>]*> 11831f92 ? strexne r1, r2, \[r3\]
0+1f8 <[^>]*> e6bf2075 ? sxth r2,r5
0+1fc <[^>]*> e6bf2475 ? sxth r2,r5, ROR #8
0+200 <[^>]*> 16bf2075 ? sxthne r2,r5
0+204 <[^>]*> 16bf2475 ? sxthne r2,r5, ROR #8
0+208 <[^>]*> e68f2075 ? sxtb16 r2,r5
0+20c <[^>]*> e68f2475 ? sxtb16 r2,r5, ROR #8
0+210 <[^>]*> 168f2075 ? sxtb16ne r2,r5
0+214 <[^>]*> 168f2475 ? sxtb16ne r2,r5, ROR #8
0+218 <[^>]*> e6af2075 ? sxtb r2,r5
0+21c <[^>]*> e6af2475 ? sxtb r2,r5, ROR #8
0+220 <[^>]*> 16af2075 ? sxtbne r2,r5
0+224 <[^>]*> 16af2475 ? sxtbne r2,r5, ROR #8
0+228 <[^>]*> e6542f17 ? uadd16 r2, r4, r7
0+22c <[^>]*> 16542f17 ? uadd16ne r2, r4, r7
0+230 <[^>]*> e6f32075 ? uxtah r2, r3, r5
0+234 <[^>]*> e6f32475 ? uxtah r2, r3, r5, ROR #8
0+238 <[^>]*> 16f32075 ? uxtahne r2, r3, r5
0+23c <[^>]*> 16f32475 ? uxtahne r2, r3, r5, ROR #8
0+240 <[^>]*> e6542f97 ? uadd8 r2, r4, r7
0+244 <[^>]*> 16542f97 ? uadd8ne r2, r4, r7
0+248 <[^>]*> e6c32075 ? uxtab16 r2, r3, r5
0+24c <[^>]*> e6c32475 ? uxtab16 r2, r3, r5, ROR #8
0+250 <[^>]*> 16c32075 ? uxtab16ne r2, r3, r5
0+254 <[^>]*> 16c32475 ? uxtab16ne r2, r3, r5, ROR #8
0+258 <[^>]*> e6e32075 ? uxtab r2, r3, r5
0+25c <[^>]*> e6e32475 ? uxtab r2, r3, r5, ROR #8
0+260 <[^>]*> 16e32075 ? uxtabne r2, r3, r5
0+264 <[^>]*> 16e32475 ? uxtabne r2, r3, r5, ROR #8
0+268 <[^>]*> e6542f37 ? uaddsubx r2, r4, r7
0+26c <[^>]*> 16542f37 ? uaddsubxne r2, r4, r7
0+270 <[^>]*> e6742f17 ? uhadd16 r2, r4, r7
0+274 <[^>]*> 16742f17 ? uhadd16ne r2, r4, r7
0+278 <[^>]*> e6742f97 ? uhadd8 r2, r4, r7
0+27c <[^>]*> 16742f97 ? uhadd8ne r2, r4, r7
0+280 <[^>]*> e6742f37 ? uhaddsubx r2, r4, r7
0+284 <[^>]*> 16742f37 ? uhaddsubxne r2, r4, r7
0+288 <[^>]*> e6742f77 ? uhsub16 r2, r4, r7
0+28c <[^>]*> 16742f77 ? uhsub16ne r2, r4, r7
0+290 <[^>]*> e6742ff7 ? uhsub8 r2, r4, r7
0+294 <[^>]*> 16742ff7 ? uhsub8ne r2, r4, r7
0+298 <[^>]*> e6742f57 ? uhsubaddx r2, r4, r7
0+29c <[^>]*> 16742f57 ? uhsubaddxne r2, r4, r7
0+2a0 <[^>]*> e0421493 ? umaal r1, r2, r3, r4
0+2a4 <[^>]*> d0421493 ? umaalle r1, r2, r3, r4
0+2a8 <[^>]*> e6642f17 ? uqadd16 r2, r4, r7
0+2ac <[^>]*> 16642f17 ? uqadd16ne r2, r4, r7
0+2b0 <[^>]*> e6642f97 ? uqadd8 r2, r4, r7
0+2b4 <[^>]*> 16642f97 ? uqadd8ne r2, r4, r7
0+2b8 <[^>]*> e6642f37 ? uqaddsubx r2, r4, r7
0+2bc <[^>]*> 16642f37 ? uqaddsubxne r2, r4, r7
0+2c0 <[^>]*> e6642f77 ? uqsub16 r2, r4, r7
0+2c4 <[^>]*> 16642f77 ? uqsub16ne r2, r4, r7
0+2c8 <[^>]*> e6642ff7 ? uqsub8 r2, r4, r7
0+2cc <[^>]*> 16642ff7 ? uqsub8ne r2, r4, r7
0+2d0 <[^>]*> e6642f57 ? uqsubaddx r2, r4, r7
0+2d4 <[^>]*> 16642f57 ? uqsubaddxne r2, r4, r7
0+2d8 <[^>]*> e781f312 ? usad8 r1, r2, r3
0+2dc <[^>]*> 1781f312 ? usad8ne r1, r2, r3
0+2e0 <[^>]*> e7814312 ? usada8 r1, r2, r3, r4
0+2e4 <[^>]*> 17814312 ? usada8ne r1, r2, r3, r4
0+2e8 <[^>]*> e6ef1012 ? usat r1, #15, r2
0+2ec <[^>]*> e6ef1252 ? usat r1, #15, r2, ASR #4
0+2f0 <[^>]*> e6ef1212 ? usat r1, #15, r2, LSL #4
0+2f4 <[^>]*> e6ef1f32 ? usat16 r1, #15, r2
0+2f8 <[^>]*> d6ef1f32 ? usat16le r1, #15, r2
0+2fc <[^>]*> d6ef1012 ? usatle r1, #15, r2
0+300 <[^>]*> d6ef1252 ? usatle r1, #15, r2, ASR #4
0+304 <[^>]*> d6ef1212 ? usatle r1, #15, r2, LSL #4
0+308 <[^>]*> e6542f77 ? usub16 r2, r4, r7
0+30c <[^>]*> 16542f77 ? usub16ne r2, r4, r7
0+310 <[^>]*> e6542ff7 ? usub8 r2, r4, r7
0+314 <[^>]*> 16542ff7 ? usub8ne r2, r4, r7
0+318 <[^>]*> e6542f57 ? usubaddx r2, r4, r7
0+31c <[^>]*> 16542f57 ? usubaddxne r2, r4, r7
0+320 <[^>]*> e6ff2075 ? uxth r2,r5
0+324 <[^>]*> e6ff2475 ? uxth r2,r5, ROR #8
0+328 <[^>]*> 16ff2075 ? uxthne r2,r5
0+32c <[^>]*> 16ff2475 ? uxthne r2,r5, ROR #8
0+330 <[^>]*> e6cf2075 ? uxtb16 r2,r5
0+334 <[^>]*> e6cf2475 ? uxtb16 r2,r5, ROR #8
0+338 <[^>]*> 16cf2075 ? uxtb16ne r2,r5
0+33c <[^>]*> 16cf2475 ? uxtb16ne r2,r5, ROR #8
0+340 <[^>]*> e6ef2075 ? uxtb r2,r5
0+344 <[^>]*> e6ef2475 ? uxtb r2,r5, ROR #8
0+348 <[^>]*> 16ef2075 ? uxtbne r2,r5
0+34c <[^>]*> 16ef2475 ? uxtbne r2,r5, ROR #8

View File

@ -0,0 +1,216 @@
.text
.align 0
label:
cps #15
cpsid if
cpsie if
ldrex r2, [r4]
ldrexne r4, [r8]
mcrr2 p0, 12, r7, r5, c3
mrrc2 p0, 12, r7, r5, c3
pkhbt r2, r5, r8
pkhbt r2, r5, r8, LSL #3
pkhbtal r2, r5, r8, LSL #3
pkhbteq r2, r5, r8, LSL #3
pkhtb r2, r5, r8 @ Equivalent to pkhbt r2, r8, r5.
pkhtb r2, r5, r8, ASR #3
pkhtbal r2, r5, r8, ASR #3
pkhtbeq r2, r5, r8, ASR #3
qadd16 r2, r4, r7
qadd16ne r2, r4, r7
qadd8 r2, r4, r7
qadd8ne r2, r4, r7
qaddsubx r2, r4, r7
qaddsubxne r2, r4, r7
qsub16 r2, r4, r7
qsub16ne r2, r4, r7
qsub8 r2, r4, r7
qsub8ne r2, r4, r7
qsubaddx r2, r4, r7
qsubaddx r2, r4, r7
rev r2, r4
rev16 r2, r4
rev16ne r3, r5
revne r3, r5
revsh r2, r4
revshne r3, r5
rfeda r2
rfedb r2!
rfeea r2
rfeed r2!
rfefa r2!
rfefd r2
rfeia r2
rfeib r2!
sadd16 r2, r4, r7
sadd16ne r2, r4, r7
sxtah r2, r4, r5
sxtah r2, r4, r5, ROR #8
sxtahne r2, r4, r5
sxtahne r2, r4, r5, ROR #8
sadd8 r2, r4, r7
sadd8ne r2, r4, r7
sxtab16 r2, r4, r5
sxtab16 r2, r4, r5, ROR #8
sxtab16ne r2, r4, r5
sxtab16ne r2, r4, r5, ROR #8
sxtab r2, r4, r5
sxtab r2, r4, r5, ROR #8
sxtabne r2, r4, r5
sxtabne r2, r4, r5, ROR #8
saddsubx r2, r4, r7
saddsubxne r2, r4, r7
sel r1, r2, r3
selne r1, r2, r3
setend be
setend le
shadd16 r2, r4, r7
shadd16ne r2, r4, r7
shadd8 r2, r4, r7
shadd8ne r2, r4, r7
shaddsubx r2, r4, r7
shaddsubxne r2, r4, r7
shsub16 r2, r4, r7
shsub16ne r2, r4, r7
shsub8 r2, r4, r7
shsub8ne r2, r4, r7
shsubaddx r2, r4, r7
shsubaddxne r2, r4, r7
smlad r1,r2,r3,r4
smladle r1,r2,r3,r4
smladx r1,r2,r3,r4
smladxle r1,r2,r3,r4
smlald r1,r2,r3,r4
smlaldle r1,r2,r3,r4
smlaldx r1,r2,r3,r4
smlaldxle r1,r2,r3,r4
smlsd r1,r2,r3,r4
smlsdle r1,r2,r3,r4
smlsdx r1,r2,r3,r4
smlsdxle r1,r2,r3,r4
smlsld r1,r2,r3,r4
smlsldle r1,r2,r3,r4
smlsldx r1,r2,r3,r4
smlsldxle r1,r2,r3,r4
smmla r1,r2,r3,r4
smmlale r1,r2,r3,r4
smmlar r1,r2,r3,r4
smmlarle r1,r2,r3,r4
smmls r1,r2,r3,r4
smmlsle r1,r2,r3,r4
smmlsr r1,r2,r3,r4
smmlsrle r1,r2,r3,r4
smmul r1,r2,r3
smmulle r1,r2,r3
smmulr r1,r2,r3
smmulrle r1,r2,r3
smuad r1,r2,r3
smuadle r1,r2,r3
smuadx r1,r2,r3
smuadxle r1,r2,r3
smusd r1,r2,r3
smusdle r1,r2,r3
smusdx r1,r2,r3
smusdxle r1,r2,r3
srsia #16
srsib #16!
ssat r1, #1, r2
ssat r1, #1, r2, ASR #2
ssat r1, #1, r2, LSL #2
ssat16 r1, #1, r1
ssat16le r1, #1, r1
ssub16 r2, r4, r7
ssub16ne r2, r4, r7
ssub8 r2, r4, r7
ssub8ne r2, r4, r7
ssubaddx r2, r4, r7
ssubaddxne r2, r4, r7
strex r1, r2, [r3]
strexne r1, r2, [r3]
sxth r2, r5
sxth r2, r5, ROR #8
sxthne r2, r5
sxthne r2, r5, ROR #8
sxtb16 r2, r5
sxtb16 r2, r5, ROR #8
sxtb16ne r2, r5
sxtb16ne r2, r5, ROR #8
sxtb r2, r5
sxtb r2, r5, ROR #8
sxtbne r2, r5
sxtbne r2, r5, ROR #8
uadd16 r2, r4, r7
uadd16ne r2, r4, r7
uxtah r2, r3, r5
uxtah r2, r3, r5, ROR #8
uxtahne r2, r3, r5
uxtahne r2, r3, r5, ROR #8
uadd8 r2, r4, r7
uadd8ne r2, r4, r7
uxtab16 r2, r3, r5
uxtab16 r2, r3, r5, ROR #8
uxtab16ne r2, r3, r5
uxtab16ne r2, r3, r5, ROR #8
uxtab r2, r3, r5
uxtab r2, r3, r5, ROR #8
uxtabne r2, r3, r5
uxtabne r2, r3, r5, ROR #8
uaddsubx r2, r4, r7
uaddsubxne r2, r4, r7
uhadd16 r2, r4, r7
uhadd16ne r2, r4, r7
uhadd8 r2, r4, r7
uhadd8ne r2, r4, r7
uhaddsubx r2, r4, r7
uhaddsubxne r2, r4, r7
uhsub16 r2, r4, r7
uhsub16ne r2, r4, r7
uhsub8 r2, r4, r7
uhsub8ne r2, r4, r7
uhsubaddx r2, r4, r7
uhsubaddxne r2, r4, r7
umaal r1, r2, r3, r4
umaalle r1, r2, r3, r4
uqadd16 r2, r4, r7
uqadd16ne r2, r4, r7
uqadd8 r2, r4, r7
uqadd8ne r2, r4, r7
uqaddsubx r2, r4, r7
uqaddsubxne r2, r4, r7
uqsub16 r2, r4, r7
uqsub16ne r2, r4, r7
uqsub8 r2, r4, r7
uqsub8ne r2, r4, r7
uqsubaddx r2, r4, r7
uqsubaddxne r2, r4, r7
usad8 r1, r2, r3
usad8ne r1, r2, r3
usada8 r1, r2, r3, r4
usada8ne r1, r2, r3, r4
usat r1, #15, r2
usat r1, #15, r2, ASR #4
usat r1, #15, r2, LSL #4
usat16 r1, #15, r2
usat16le r1, #15, r2
usatle r1, #15, r2
usatle r1, #15, r2, ASR #4
usatle r1, #15, r2, LSL #4
usub16 r2, r4, r7
usub16ne r2, r4, r7
usub8 r2, r4, r7
usub8ne r2, r4, r7
usubaddx r2, r4, r7
usubaddxne r2, r4, r7
uxth r2, r5
uxth r2, r5, ROR #8
uxthne r2, r5
uxthne r2, r5, ROR #8
uxtb16 r2, r5
uxtb16 r2, r5, ROR #8
uxtb16ne r2, r5
uxtb16ne r2, r5, ROR #8
uxtb r2, r5
uxtb r2, r5, ROR #8
uxtbne r2, r5
uxtbne r2, r5, ROR #8

View File

@ -66,6 +66,10 @@ if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then {
run_dump_test "maverick"
run_dump_test "archv6"
run_dump_test "thumbv6"
if {[istarget *-*-elf*] || [istarget *-*-linux*]} then {
run_dump_test "pic"

View File

@ -0,0 +1,19 @@
#name: THUMB V6 instructions
#as: -march=armv6 -mthumb
#objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+000 <[^>]*> b666 * cpsie ai
0+002 <[^>]*> b675 * cpsid af
0+004 <[^>]*> 4623 * cpy r3, r4
0+006 <[^>]*> ba3a * rev r2, r7
0+008 <[^>]*> ba4d * rev16 r5, r1
0+00a <[^>]*> baf3 * revsh r3, r6
0+00c <[^>]*> b658 * setend be
0+00e <[^>]*> b650 * setend le
0+010 <[^>]*> b208 * sxth r0, r1
0+012 <[^>]*> b251 * sxtb r1, r2
0+014 <[^>]*> b2a3 * uxth r3, r4
0+016 <[^>]*> b2f5 * uxtb r5, r6

View File

@ -0,0 +1,17 @@
.text
.align 0
.thumb
label:
cpsie ia
cpsid af
cpy r3, r4
rev r2, r7
rev16 r5, r1
revsh r3, r6
setend be
setend le
sxth r0, r1
sxtb r1, r2
uxth r3, r4
uxtb r5, r6

View File

@ -1,3 +1,11 @@
2003-12-05 Ricardo Anguiano <anguiano@codesourcery.com>
Mark Mitchell <mark@codesourcery.com>
Richard Earnshaw <rearnsha@arm.com>
* arm-dis.c (print_arm_insn): Add 'W' macro.
* arm-opc.h (arm_opcodes): Add V6 instructions.
(thumb_opcodes): Likewise.
2003-12-04 Alan Modra <amodra@bigpond.net.au>
* openrisc-asm.c: Regenerate.

View File

@ -639,6 +639,16 @@ print_insn_arm (pc, info, given)
func (stream, "%d", reg);
}
break;
case 'W':
{
long reg;
reg = given >> bitstart;
reg &= (2 << (bitend - bitstart)) - 1;
func (stream, "%d", reg + 1);
}
break;
case 'x':
{
long reg;

View File

@ -35,6 +35,7 @@ struct thumb_opcode
%<bitfield>d print the bitfield in decimal
%<bitfield>x print the bitfield in hex
%<bitfield>X print the bitfield as 1 hex digit without leading "0x"
%<bitfield>w print the bitfield plus one in decimal
%<bitfield>r print as an ARM register
%<bitfield>f print a floating point constant if >7 else a
floating point register
@ -161,6 +162,132 @@ static const struct arm_opcode arm_opcodes[] =
{0x0e1000e0, 0x0f300ff0, "wunpckil%22-23w%c\t%12-15g, %16-19g, %0-3g"},
{0x0e100000, 0x0ff00ff0, "wxor%c\t%12-15g, %16-19g, %0-3g"},
/* ARM V6 instructions. */
{0xfc500000, 0xfff00000, "mrrc2\t%8-11d, %4-7d, %12-15r, %16-19r, cr%0-3d"},
{0xfc400000, 0xfff00000, "mcrr2\t%8-11d, %4-7d, %12-15r, %16-19r, cr%0-3d"},
{0xf1080000, 0xfffdfe3f, "cpsie\t%8'a%7'i%6'f"},
{0xf1080000, 0xfffdfe20, "cpsie\t%8'a%7'i%6'f,#%0-4d"},
{0xf10C0000, 0xfffdfe3f, "cpsid\t%8'a%7'i%6'f"},
{0xf10C0000, 0xfffdfe20, "cpsid\t%8'a%7'i%6'f,#%0-4d"},
{0xf1000000, 0xfff1fe20, "cps\t#%0-4d"},
{0x06800010, 0x0ff00ff0, "pkhbt%c\t%12-15r, %16-19r, %0-3r"},
{0x06800010, 0x0ff00070, "pkhbt%c\t%12-15r, %16-19r, %0-3r, LSL #%7-11d"},
{0x06800050, 0x0ff00ff0, "pkhtb%c\t%12-15r, %16-19r, %0-3r, ASR #32"},
{0x06800050, 0x0ff00070, "pkhtb%c\t%12-15r, %16-19r, %0-3r, ASR #%7-11d"},
{0x01900f9f, 0x0ff00fff, "ldrex%c\tr%12-15d, [%16-19r]"},
{0x06200f10, 0x0ff00ff0, "qadd16%c\t%12-15r, %16-19r, %0-3r"},
{0x06200f90, 0x0ff00ff0, "qadd8%c\t%12-15r, %16-19r, %0-3r"},
{0x06200f30, 0x0ff00ff0, "qaddsubx%c\t%12-15r, %16-19r, %0-3r"},
{0x06200f70, 0x0ff00ff0, "qsub16%c\t%12-15r, %16-19r, %0-3r"},
{0x06200ff0, 0x0ff00ff0, "qsub8%c\t%12-15r, %16-19r, %0-3r"},
{0x06200f50, 0x0ff00ff0, "qsubaddx%c\t%12-15r, %16-19r, %0-3r"},
{0x06100f10, 0x0ff00ff0, "sadd16%c\t%12-15r, %16-19r, %0-3r"},
{0x06100f90, 0x0ff00ff0, "sadd8%c\t%12-15r, %16-19r, %0-3r"},
{0x06100f30, 0x0ff00ff0, "saddaddx%c\t%12-15r, %16-19r, %0-3r"},
{0x06300f10, 0x0ff00ff0, "shadd16%c\t%12-15r, %16-19r, %0-3r"},
{0x06300f90, 0x0ff00ff0, "shadd8%c\t%12-15r, %16-19r, %0-3r"},
{0x06300f30, 0x0ff00ff0, "shaddsubx%c\t%12-15r, %16-19r, %0-3r"},
{0x06300f70, 0x0ff00ff0, "shsub16%c\t%12-15r, %16-19r, %0-3r"},
{0x06300ff0, 0x0ff00ff0, "shsub8%c\t%12-15r, %16-19r, %0-3r"},
{0x06300f50, 0x0ff00ff0, "shsubaddx%c\t%12-15r, %16-19r, %0-3r"},
{0x06100f70, 0x0ff00ff0, "ssub16%c\t%12-15r, %16-19r, %0-3r"},
{0x06100ff0, 0x0ff00ff0, "ssub8%c\t%12-15r, %16-19r, %0-3r"},
{0x06100f50, 0x0ff00ff0, "ssubaddx%c\t%12-15r, %16-19r, %0-3r"},
{0x06500f10, 0x0ff00ff0, "uadd16%c\t%12-15r, %16-19r, %0-3r"},
{0x06500f90, 0x0ff00ff0, "uadd8%c\t%12-15r, %16-19r, %0-3r"},
{0x06500f30, 0x0ff00ff0, "uaddsubx%c\t%12-15r, %16-19r, %0-3r"},
{0x06700f10, 0x0ff00ff0, "uhadd16%c\t%12-15r, %16-19r, %0-3r"},
{0x06700f90, 0x0ff00ff0, "uhadd8%c\t%12-15r, %16-19r, %0-3r"},
{0x06700f30, 0x0ff00ff0, "uhaddsubx%c\t%12-15r, %16-19r, %0-3r"},
{0x06700f70, 0x0ff00ff0, "uhsub16%c\t%12-15r, %16-19r, %0-3r"},
{0x06700ff0, 0x0ff00ff0, "uhsub8%c\t%12-15r, %16-19r, %0-3r"},
{0x06700f50, 0x0ff00ff0, "uhsubaddx%c\t%12-15r, %16-19r, %0-3r"},
{0x06600f10, 0x0ff00ff0, "uqadd16%c\t%12-15r, %16-19r, %0-3r"},
{0x06600f90, 0x0ff00ff0, "uqadd8%c\t%12-15r, %16-19r, %0-3r"},
{0x06600f30, 0x0ff00ff0, "uqaddsubx%c\t%12-15r, %16-19r, %0-3r"},
{0x06600f70, 0x0ff00ff0, "uqsub16%c\t%12-15r, %16-19r, %0-3r"},
{0x06600ff0, 0x0ff00ff0, "uqsub8%c\t%12-15r, %16-19r, %0-3r"},
{0x06600f50, 0x0ff00ff0, "uqsubaddx%c\t%12-15r, %16-19r, %0-3r"},
{0x06500f70, 0x0ff00ff0, "usub16%c\t%12-15r, %16-19r, %0-3r"},
{0x06500ff0, 0x0ff00ff0, "usub8%c\t%12-15r, %16-19r, %0-3r"},
{0x06500f50, 0x0ff00ff0, "usubaddx%c\t%12-15r, %16-19r, %0-3r"},
{0x06bf0f30, 0x0fff0ff0, "rev%c\t\%12-15r, %0-3r"},
{0x06bf0fb0, 0x0fff0ff0, "rev16%c\t\%12-15r, %0-3r"},
{0x06ff0fb0, 0x0fff0ff0, "revsh%c\t\%12-15r, %0-3r"},
{0xf8100a00, 0xfe50ffff, "rfe%23?id%24?ba\t\%16-19r%21'!"},
{0x06bf0070, 0x0fff0ff0, "sxth%c %12-15r,%0-3r"},
{0x06bf0470, 0x0fff0ff0, "sxth%c %12-15r,%0-3r, ROR #8"},
{0x06bf0870, 0x0fff0ff0, "sxth%c %12-15r,%0-3r, ROR #16"},
{0x06bf0c70, 0x0fff0ff0, "sxth%c %12-15r,%0-3r, ROR #24"},
{0x068f0070, 0x0fff0ff0, "sxtb16%c %12-15r,%0-3r"},
{0x068f0470, 0x0fff0ff0, "sxtb16%c %12-15r,%0-3r, ROR #8"},
{0x068f0870, 0x0fff0ff0, "sxtb16%c %12-15r,%0-3r, ROR #16"},
{0x068f0c70, 0x0fff0ff0, "sxtb16%c %12-15r,%0-3r, ROR #24"},
{0x06af0070, 0x0fff0ff0, "sxtb%c %12-15r,%0-3r"},
{0x06af0470, 0x0fff0ff0, "sxtb%c %12-15r,%0-3r, ROR #8"},
{0x06af0870, 0x0fff0ff0, "sxtb%c %12-15r,%0-3r, ROR #16"},
{0x06af0c70, 0x0fff0ff0, "sxtb%c %12-15r,%0-3r, ROR #24"},
{0x06ff0070, 0x0fff0ff0, "uxth%c %12-15r,%0-3r"},
{0x06ff0470, 0x0fff0ff0, "uxth%c %12-15r,%0-3r, ROR #8"},
{0x06ff0870, 0x0fff0ff0, "uxth%c %12-15r,%0-3r, ROR #16"},
{0x06ff0c70, 0x0fff0ff0, "uxth%c %12-15r,%0-3r, ROR #24"},
{0x06cf0070, 0x0fff0ff0, "uxtb16%c %12-15r,%0-3r"},
{0x06cf0470, 0x0fff0ff0, "uxtb16%c %12-15r,%0-3r, ROR #8"},
{0x06cf0870, 0x0fff0ff0, "uxtb16%c %12-15r,%0-3r, ROR #16"},
{0x06cf0c70, 0x0fff0ff0, "uxtb16%c %12-15r,%0-3r, ROR #24"},
{0x06ef0070, 0x0fff0ff0, "uxtb%c %12-15r,%0-3r"},
{0x06ef0470, 0x0fff0ff0, "uxtb%c %12-15r,%0-3r, ROR #8"},
{0x06ef0870, 0x0fff0ff0, "uxtb%c %12-15r,%0-3r, ROR #16"},
{0x06ef0c70, 0x0fff0ff0, "uxtb%c %12-15r,%0-3r, ROR #24"},
{0x06b00070, 0x0ff00ff0, "sxtah%c\t%12-15r, %16-19r, %0-3r"},
{0x06b00470, 0x0ff00ff0, "sxtah%c\t%12-15r, %16-19r, %0-3r, ROR #8"},
{0x06b00870, 0x0ff00ff0, "sxtah%c\t%12-15r, %16-19r, %0-3r, ROR #16"},
{0x06b00c70, 0x0ff00ff0, "sxtah%c\t%12-15r, %16-19r, %0-3r, ROR #24"},
{0x06800070, 0x0ff00ff0, "sxtab16%c\t%12-15r, %16-19r, %0-3r"},
{0x06800470, 0x0ff00ff0, "sxtab16%c\t%12-15r, %16-19r, %0-3r, ROR #8"},
{0x06800870, 0x0ff00ff0, "sxtab16%c\t%12-15r, %16-19r, %0-3r, ROR #16"},
{0x06800c70, 0x0ff00ff0, "sxtab16%c\t%12-15r, %16-19r, %0-3r, ROR #24"},
{0x06a00070, 0x0ff00ff0, "sxtab%c\t%12-15r, %16-19r, %0-3r"},
{0x06a00470, 0x0ff00ff0, "sxtab%c\t%12-15r, %16-19r, %0-3r, ROR #8"},
{0x06a00870, 0x0ff00ff0, "sxtab%c\t%12-15r, %16-19r, %0-3r, ROR #16"},
{0x06a00c70, 0x0ff00ff0, "sxtab%c\t%12-15r, %16-19r, %0-3r, ROR #24"},
{0x06f00070, 0x0ff00ff0, "uxtah%c\t%12-15r, %16-19r, %0-3r"},
{0x06f00470, 0x0ff00ff0, "uxtah%c\t%12-15r, %16-19r, %0-3r, ROR #8"},
{0x06f00870, 0x0ff00ff0, "uxtah%c\t%12-15r, %16-19r, %0-3r, ROR #16"},
{0x06f00c70, 0x0ff00ff0, "uxtah%c\t%12-15r, %16-19r, %0-3r, ROR #24"},
{0x06c00070, 0x0ff00ff0, "uxtab16%c\t%12-15r, %16-19r, %0-3r"},
{0x06c00470, 0x0ff00ff0, "uxtab16%c\t%12-15r, %16-19r, %0-3r, ROR #8"},
{0x06c00870, 0x0ff00ff0, "uxtab16%c\t%12-15r, %16-19r, %0-3r, ROR #16"},
{0x06c00c70, 0x0ff00ff0, "uxtab16%c\t%12-15r, %16-19r, %0-3r, ROR #24"},
{0x06e00070, 0x0ff00ff0, "uxtab%c\t%12-15r, %16-19r, %0-3r"},
{0x06e00470, 0x0ff00ff0, "uxtab%c\t%12-15r, %16-19r, %0-3r, ROR #8"},
{0x06e00870, 0x0ff00ff0, "uxtab%c\t%12-15r, %16-19r, %0-3r, ROR #16"},
{0x06e00c70, 0x0ff00ff0, "uxtab%c\t%12-15r, %16-19r, %0-3r, ROR #24"},
{0x068000b0, 0x0ff00ff0, "sel%c\t%12-15r, %16-19r, %0-3r"},
{0xf1010000, 0xfffffc00, "setend\t%9?ble"},
{0x0700f010, 0x0ff0f0d0, "smuad%5'x%c\t%16-19r, %0-3r, %8-11r"},
{0x0700f050, 0x0ff0f0d0, "smusd%5'x%c\t%16-19r, %0-3r, %8-11r"},
{0x07000010, 0x0ff000d0, "smlad%5'x%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
{0x07400010, 0x0ff000d0, "smlald%5'x%c\t%12-15r, %16-19r, %0-3r, %8-11r"},
{0x07000050, 0x0ff000d0, "smlsd%5'x%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
{0x07400050, 0x0ff000d0, "smlsld%5'x%c\t%12-15r, %16-19r, %0-3r, %8-11r"},
{0x0750f010, 0x0ff0f0d0, "smmul%5'r%c\t%16-19r, %0-3r, %8-11r"},
{0x07500010, 0x0ff000d0, "smmla%5'r%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
{0x075000d0, 0x0ff000d0, "smmls%5'r%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
{0xf84d0500, 0xfe5fffe0, "srs%23?id%24?ba\t#%0-4d%21'!"},
{0x06a00010, 0x0fe00ff0, "ssat%c\t%12-15r, #%16-20W, %0-3r"},
{0x06a00010, 0x0fe00070, "ssat%c\t%12-15r, #%16-20W, %0-3r, LSL #%7-11d"},
{0x06a00050, 0x0fe00070, "ssat%c\t%12-15r, #%16-20W, %0-3r, ASR #%7-11d"},
{0x06a00f30, 0x0ff00ff0, "ssat16%c\t%12-15r, #%16-19W, %0-3r"},
{0x01800f90, 0x0ff00ff0, "strex%c\t%12-15r, %0-3r, [%16-19r]"},
{0x00400090, 0x0ff000f0, "umaal%c\t%12-15r, %16-19r, %0-3r, %8-11r"},
{0x0780f010, 0x0ff0f0f0, "usad8%c\t%16-19r, %0-3r, %8-11r"},
{0x07800010, 0x0ff000f0, "usada8%c\t%16-19r, %0-3r, %8-11r, %12-15r"},
{0x06e00010, 0x0fe00ff0, "usat%c\t%12-15r, #%16-20d, %0-3r"},
{0x06e00010, 0x0fe00070, "usat%c\t%12-15r, #%16-20d, %0-3r, LSL #%7-11d"},
{0x06e00050, 0x0fe00070, "usat%c\t%12-15r, #%16-20d, %0-3r, ASR #%7-11d"},
{0x06e00f30, 0x0ff00ff0, "usat16%c\t%12-15r, #%16-19d, %0-3r"},
/* V5 Instructions. */
{0xe1200070, 0xfff000f0, "bkpt\t0x%16-19X%12-15X%8-11X%0-3X"},
{0xfa000000, 0xfe000000, "blx\t%B"},
@ -459,6 +586,19 @@ static const struct thumb_opcode thumb_opcodes[] =
{
/* Thumb instructions. */
/* ARM V6. */
{0xb660, 0xfff8, "cpsie\t%2'a%1'i%0'f"},
{0xb670, 0xfff8, "cpsid\t%2'a%1'i%0'f"},
{0x4600, 0xffc0, "cpy\t%0-2r, %3-5r"},
{0xba00, 0xffc0, "rev\t%0-2r, %3-5r"},
{0xba40, 0xffc0, "rev16\t%0-2r, %3-5r"},
{0xbac0, 0xffc0, "revsh\t%0-2r, %3-5r"},
{0xb650, 0xfff7, "setend\t%3?ble\t"},
{0xb200, 0xffc0, "sxth\t%0-2r, %3-5r"},
{0xb240, 0xffc0, "sxtb\t%0-2r, %3-5r"},
{0xb280, 0xffc0, "uxth\t%0-2r, %3-5r"},
{0xb2c0, 0xffc0, "uxtb\t%0-2r, %3-5r"},
/* ARM V5 ISA extends Thumb. */
{0xbe00, 0xff00, "bkpt\t%0-7x"},
{0x4780, 0xff87, "blx\t%3-6r"}, /* note: 4 bit register number. */