include/elf:

* arm.h: Import complete list of official relocation names
	and numbers from AAELF.  Define FAKE_RELOCs for old names.
	Remove a few old names no longer used anywhere.

bfd:
	* elf32-arm.c: Wherever possible, use official reloc names
	from AAELF.
	(elf32_arm_howto_table, elf32_arm_tls_gd32_howto)
	(elf32_arm_tls_ldo32_howto, elf32_arm_tls_ldm32_howto)
	(elf32_arm_tls_le32_howto, elf32_arm_tls_ie32_howto)
	(elf32_arm_vtinherit_howto, elf32_arm_vtentry_howto)
	(elf32_arm_pc11_howto, elf32_arm_thm_pc9_howto, elf32_arm_got_prel)
	(elf32_arm_r_howto): Replace with elf32_arm_howto_table_1,
	elf32_arm_howto_table_2, and elf32_arm_howto_table_3.
	Add many new relocations from AAELF.
	(elf32_arm_howto_from_type): Update to match.
	(elf32_arm_reloc_map): Add entries for R_ARM_THM_JUMP24,
	R_ARM_THM_JUMP11, R_ARM_THM_JUMP19, R_ARM_THM_JUMP8,
	R_ARM_THM_JUMP6, R_ARM_GNU_VTINHERIT, and R_ARM_GNU_VTENTRY.
	(elf32_arm_reloc_type_lookup): Use elf32_arm_howto_from_type.
	(elf32_arm_final_link_relocate): Add support for
	R_ARM_THM_JUMP24, R_ARM_THM_JUMP19, R_ARM_THM_JUMP6.  Remove
	case entries redundant with default.

	* reloc.c: Reorganize ARM relocations.  Add Thumb
	assembler-internal relocations BFD_RELOC_ARM_T32_OFFSET_U8,
	BFD_RELOC_ARM_T32_OFFSET_IMM, BFD_RELOC_ARM_T32_IMMEDIATE.
	Add visible relocations BFD_RELOC_THUMB_PCREL_BRANCH7,
	BFD_RELOC_THUMB_BRANCH20, BFD_RELOC_THUMB_BRANCH25.
	Delete unused relocations BFD_RELOC_ARM_GOT12, BFD_RELOC_ARM_COPY.
	* bfd-in2.h, libbfd.h: Regenerate.

opcodes:
	* arm-dis.c (thumb_opcodes): Add disassembly for V6T2 16-bit
	instructions.  Adjust disassembly of some opcodes to match
	unified syntax.
	(thumb32_opcodes): New table.
	(print_insn_thumb): Rename print_insn_thumb16; don't handle
	two-halfword branches here.
	(print_insn_thumb32): New function.
	(print_insn): Choose among print_insn_arm, print_insn_thumb16,
	and print_insn_thumb32.  Be consistent about order of
	halfwords when printing 32-bit instructions.

gas:
	* hash.c (hash_lookup): Add len parameter.  All callers changed.
	(hash_find_n): New interface.
	* hash.h: Prototype hash_find_n.
	* sb.c: Include as.h.
	(scrub_from_sb, sb_to_scrub, scrub_position): New statics.
	(sb_scrub_and_add_sb): New interface.
	* sb.h: Prototype sb_scrub_and_add_sb.
	* input-scrub.c (input_scrub_include_sb): Use sb_scrub_and_add_sb.

	* config/tc-arm.h (TC_FORCE_RELOCATION_LOCAL): Remove
	reference to BFD_RELOC_ARM_GOT12 which is never generated.
	* config/tc-arm.c: Rewrite, adding Thumb-2 support.

gas/testsuite:
	* gas/arm/arm.exp: Convert all existing "gas_test" tests to
	"run_dump_test" tests.  Run more tests unconditionally.  Run new tests.
	* gas/arm/arch4t.s, gas/arm/arch6zk.s, gas/arm/arm3.s, gas/arm/arm6.s
	* gas/arm/arm7dm.s, gas/arm/bignum1.s, gas/arm/float.s
	* gas/arm/immed.s, gas/arm/iwmmxt.s, gas/arm/offset.s, gas/arm/thumb.s:
	Adjust to work as a dump test.
	* gas/arm/arch4t.d, gas/arm/arch6zk.d, gas/arm/arm3.d, gas/arm/arm6.d
	* gas/arm/arm7dm.d, gas/arm/bignum1.d, gas/arm/float.d
	* gas/arm/immed.d, gas/arm/iwmmxt.d, gas/arm/offset.d, gas/arm/thumb.d:
	New files.

	* gas/arm/armv1-bad.l, gas/arm/armv1-bad.s: Remove tests for
	diagnostics that don't happen in the first pass anymore.

	* gas/arm/iwmmxt-bad.l, gas/arm/r15-bad.l, gas/arm/req.l
	* gas/arm/vfp-bad.l:
	Update expected diagnostics.
	* gas/arm/pic.d: Update expected reloc name.
	* gas/arm/thumbv6.d: CPY no longer appears in disassembly.
	* gas/arm/r15-bad.s: Avoid two-argument mul.
	* gas/arm/req.s: Adjust comments.
	* gas/arm/maverick.d, gas/arm/maverick.s: Avoid inappropriate
	use of PC.

	* gas/arm/macro-1.d, gas/arm/macro1.s
	* gas/arm/t16-bad.l, gas/arm/t16-bad.s
	* gas/arm/tcompat.d, gas/arm/tcompat.s
	* gas/arm/tcompat2.d, gas/arm/tcompat2.s
	* gas/arm/thumb32.d, gas/arm/thumb32.s
	New test pair.

ld/testsuite:
	* ld-arm/mixed-app.d: Adjust expected disassembly a little.
This commit is contained in:
Zack Weinberg 2005-05-18 05:40:12 +00:00
parent 76ff342d25
commit c19d120533
65 changed files with 15482 additions and 14265 deletions

View File

@ -1,3 +1,32 @@
2005-05-17 Zack Weinberg <zack@codesourcery.com>
* elf32-arm.c: Wherever possible, use official reloc names
from AAELF.
(elf32_arm_howto_table, elf32_arm_tls_gd32_howto)
(elf32_arm_tls_ldo32_howto, elf32_arm_tls_ldm32_howto)
(elf32_arm_tls_le32_howto, elf32_arm_tls_ie32_howto)
(elf32_arm_vtinherit_howto, elf32_arm_vtentry_howto)
(elf32_arm_pc11_howto, elf32_arm_thm_pc9_howto, elf32_arm_got_prel)
(elf32_arm_r_howto): Replace with elf32_arm_howto_table_1,
elf32_arm_howto_table_2, and elf32_arm_howto_table_3.
Add many new relocations from AAELF.
(elf32_arm_howto_from_type): Update to match.
(elf32_arm_reloc_map): Add entries for R_ARM_THM_JUMP24,
R_ARM_THM_JUMP11, R_ARM_THM_JUMP19, R_ARM_THM_JUMP8,
R_ARM_THM_JUMP6, R_ARM_GNU_VTINHERIT, and R_ARM_GNU_VTENTRY.
(elf32_arm_reloc_type_lookup): Use elf32_arm_howto_from_type.
(elf32_arm_final_link_relocate): Add support for
R_ARM_THM_JUMP24, R_ARM_THM_JUMP19, R_ARM_THM_JUMP6. Remove
case entries redundant with default.
* reloc.c: Reorganize ARM relocations. Add Thumb
assembler-internal relocations BFD_RELOC_ARM_T32_OFFSET_U8,
BFD_RELOC_ARM_T32_OFFSET_IMM, BFD_RELOC_ARM_T32_IMMEDIATE.
Add visible relocations BFD_RELOC_THUMB_PCREL_BRANCH7,
BFD_RELOC_THUMB_BRANCH20, BFD_RELOC_THUMB_BRANCH25.
Delete unused relocations BFD_RELOC_ARM_GOT12, BFD_RELOC_ARM_COPY.
* bfd-in2.h, libbfd.h: Regenerate.
2005-05-17 Daniel Jacobowitz <dan@codesourcery.com>
* elf.c (_bfd_elf_write_object_contents): Check for non-NULL

View File

@ -2757,44 +2757,23 @@ not stored in the instruction. The 2nd lowest bit comes from a 1 bit
field in the instruction. */
BFD_RELOC_THUMB_PCREL_BLX,
/* These relocs are only used within the ARM assembler. They are not
(at present) written to any object files. */
BFD_RELOC_ARM_IMMEDIATE,
BFD_RELOC_ARM_ADRL_IMMEDIATE,
/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
The lowest bit must be zero and is not stored in the instruction.
Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
"nn" one smaller in all cases. Note further that BRANCH23
corresponds to R_ARM_THM_CALL. */
BFD_RELOC_THUMB_PCREL_BRANCH7,
BFD_RELOC_THUMB_PCREL_BRANCH9,
BFD_RELOC_THUMB_PCREL_BRANCH12,
BFD_RELOC_THUMB_PCREL_BRANCH20,
BFD_RELOC_THUMB_PCREL_BRANCH23,
BFD_RELOC_THUMB_PCREL_BRANCH25,
/* 12-bit immediate offset, used in ARM-format ldr and str instructions. */
BFD_RELOC_ARM_OFFSET_IMM,
BFD_RELOC_ARM_SHIFT_IMM,
BFD_RELOC_ARM_SMI,
BFD_RELOC_ARM_SWI,
BFD_RELOC_ARM_MULTI,
BFD_RELOC_ARM_CP_OFF_IMM,
BFD_RELOC_ARM_CP_OFF_IMM_S2,
BFD_RELOC_ARM_ADR_IMM,
BFD_RELOC_ARM_LDR_IMM,
BFD_RELOC_ARM_LITERAL,
BFD_RELOC_ARM_IN_POOL,
BFD_RELOC_ARM_OFFSET_IMM8,
BFD_RELOC_ARM_HWLITERAL,
BFD_RELOC_ARM_THUMB_ADD,
BFD_RELOC_ARM_THUMB_IMM,
BFD_RELOC_ARM_THUMB_SHIFT,
/* 5-bit immediate offset, used in Thumb-format ldr and str instructions. */
BFD_RELOC_ARM_THUMB_OFFSET,
BFD_RELOC_ARM_GOT12,
BFD_RELOC_ARM_GOT32,
BFD_RELOC_ARM_JUMP_SLOT,
BFD_RELOC_ARM_COPY,
BFD_RELOC_ARM_GLOB_DAT,
BFD_RELOC_ARM_PLT32,
BFD_RELOC_ARM_RELATIVE,
BFD_RELOC_ARM_GOTOFF,
BFD_RELOC_ARM_GOTPC,
BFD_RELOC_ARM_TLS_GD32,
BFD_RELOC_ARM_TLS_LDO32,
BFD_RELOC_ARM_TLS_LDM32,
BFD_RELOC_ARM_TLS_DTPOFF32,
BFD_RELOC_ARM_TLS_DTPMOD32,
BFD_RELOC_ARM_TLS_TPOFF32,
BFD_RELOC_ARM_TLS_IE32,
BFD_RELOC_ARM_TLS_LE32,
/* Pc-relative or absolute relocation depending on target. Used for
entries in .init_array sections. */
@ -2806,7 +2785,7 @@ entries in .init_array sections. */
/* Data segment base relative address. */
BFD_RELOC_ARM_SBREL32,
/* This reloc is used for References to RTTI dta from exception handling
/* This reloc is used for references to RTTI data from exception handling
tables. The actual definition depends on the target. It may be a
pc-relative or some form of GOT-indirect relocation. */
BFD_RELOC_ARM_TARGET2,
@ -2814,6 +2793,48 @@ pc-relative or some form of GOT-indirect relocation. */
/* 31-bit PC relative address. */
BFD_RELOC_ARM_PREL31,
/* Relocations for setting up GOTs and PLTs for shared libraries. */
BFD_RELOC_ARM_JUMP_SLOT,
BFD_RELOC_ARM_GLOB_DAT,
BFD_RELOC_ARM_GOT32,
BFD_RELOC_ARM_PLT32,
BFD_RELOC_ARM_RELATIVE,
BFD_RELOC_ARM_GOTOFF,
BFD_RELOC_ARM_GOTPC,
/* ARM thread-local storage relocations. */
BFD_RELOC_ARM_TLS_GD32,
BFD_RELOC_ARM_TLS_LDO32,
BFD_RELOC_ARM_TLS_LDM32,
BFD_RELOC_ARM_TLS_DTPOFF32,
BFD_RELOC_ARM_TLS_DTPMOD32,
BFD_RELOC_ARM_TLS_TPOFF32,
BFD_RELOC_ARM_TLS_IE32,
BFD_RELOC_ARM_TLS_LE32,
/* These relocs are only used within the ARM assembler. They are not
(at present) written to any object files. */
BFD_RELOC_ARM_IMMEDIATE,
BFD_RELOC_ARM_ADRL_IMMEDIATE,
BFD_RELOC_ARM_T32_IMMEDIATE,
BFD_RELOC_ARM_SHIFT_IMM,
BFD_RELOC_ARM_SMI,
BFD_RELOC_ARM_SWI,
BFD_RELOC_ARM_MULTI,
BFD_RELOC_ARM_CP_OFF_IMM,
BFD_RELOC_ARM_CP_OFF_IMM_S2,
BFD_RELOC_ARM_ADR_IMM,
BFD_RELOC_ARM_LDR_IMM,
BFD_RELOC_ARM_LITERAL,
BFD_RELOC_ARM_IN_POOL,
BFD_RELOC_ARM_OFFSET_IMM8,
BFD_RELOC_ARM_T32_OFFSET_U8,
BFD_RELOC_ARM_T32_OFFSET_IMM,
BFD_RELOC_ARM_HWLITERAL,
BFD_RELOC_ARM_THUMB_ADD,
BFD_RELOC_ARM_THUMB_IMM,
BFD_RELOC_ARM_THUMB_SHIFT,
/* Renesas / SuperH SH relocs. Not all of these appear in object files. */
BFD_RELOC_SH_PCDISP8BY2,
BFD_RELOC_SH_PCDISP12BY2,
@ -2906,12 +2927,6 @@ pc-relative or some form of GOT-indirect relocation. */
BFD_RELOC_SH_TLS_DTPOFF32,
BFD_RELOC_SH_TLS_TPOFF32,
/* Thumb 23-, 12- and 9-bit pc-relative branches. The lowest bit must
be zero and is not stored in the instruction. */
BFD_RELOC_THUMB_PCREL_BRANCH9,
BFD_RELOC_THUMB_PCREL_BRANCH12,
BFD_RELOC_THUMB_PCREL_BRANCH23,
/* ARC Cores relocs.
ARC 22 bit pc-relative branch. The lowest two bits must be zero and are
not stored in the instruction. The high 20 bits are installed in bits 26

File diff suppressed because it is too large Load Diff

View File

@ -1152,30 +1152,22 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_ARM_PCREL_BRANCH",
"BFD_RELOC_ARM_PCREL_BLX",
"BFD_RELOC_THUMB_PCREL_BLX",
"BFD_RELOC_ARM_IMMEDIATE",
"BFD_RELOC_ARM_ADRL_IMMEDIATE",
"BFD_RELOC_THUMB_PCREL_BRANCH7",
"BFD_RELOC_THUMB_PCREL_BRANCH9",
"BFD_RELOC_THUMB_PCREL_BRANCH12",
"BFD_RELOC_THUMB_PCREL_BRANCH20",
"BFD_RELOC_THUMB_PCREL_BRANCH23",
"BFD_RELOC_THUMB_PCREL_BRANCH25",
"BFD_RELOC_ARM_OFFSET_IMM",
"BFD_RELOC_ARM_SHIFT_IMM",
"BFD_RELOC_ARM_SMI",
"BFD_RELOC_ARM_SWI",
"BFD_RELOC_ARM_MULTI",
"BFD_RELOC_ARM_CP_OFF_IMM",
"BFD_RELOC_ARM_CP_OFF_IMM_S2",
"BFD_RELOC_ARM_ADR_IMM",
"BFD_RELOC_ARM_LDR_IMM",
"BFD_RELOC_ARM_LITERAL",
"BFD_RELOC_ARM_IN_POOL",
"BFD_RELOC_ARM_OFFSET_IMM8",
"BFD_RELOC_ARM_HWLITERAL",
"BFD_RELOC_ARM_THUMB_ADD",
"BFD_RELOC_ARM_THUMB_IMM",
"BFD_RELOC_ARM_THUMB_SHIFT",
"BFD_RELOC_ARM_THUMB_OFFSET",
"BFD_RELOC_ARM_GOT12",
"BFD_RELOC_ARM_GOT32",
"BFD_RELOC_ARM_TARGET1",
"BFD_RELOC_ARM_ROSEGREL32",
"BFD_RELOC_ARM_SBREL32",
"BFD_RELOC_ARM_TARGET2",
"BFD_RELOC_ARM_PREL31",
"BFD_RELOC_ARM_JUMP_SLOT",
"BFD_RELOC_ARM_COPY",
"BFD_RELOC_ARM_GLOB_DAT",
"BFD_RELOC_ARM_GOT32",
"BFD_RELOC_ARM_PLT32",
"BFD_RELOC_ARM_RELATIVE",
"BFD_RELOC_ARM_GOTOFF",
@ -1188,11 +1180,26 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_ARM_TLS_TPOFF32",
"BFD_RELOC_ARM_TLS_IE32",
"BFD_RELOC_ARM_TLS_LE32",
"BFD_RELOC_ARM_TARGET1",
"BFD_RELOC_ARM_ROSEGREL32",
"BFD_RELOC_ARM_SBREL32",
"BFD_RELOC_ARM_TARGET2",
"BFD_RELOC_ARM_PREL31",
"BFD_RELOC_ARM_IMMEDIATE",
"BFD_RELOC_ARM_ADRL_IMMEDIATE",
"BFD_RELOC_ARM_T32_IMMEDIATE",
"BFD_RELOC_ARM_SHIFT_IMM",
"BFD_RELOC_ARM_SMI",
"BFD_RELOC_ARM_SWI",
"BFD_RELOC_ARM_MULTI",
"BFD_RELOC_ARM_CP_OFF_IMM",
"BFD_RELOC_ARM_CP_OFF_IMM_S2",
"BFD_RELOC_ARM_ADR_IMM",
"BFD_RELOC_ARM_LDR_IMM",
"BFD_RELOC_ARM_LITERAL",
"BFD_RELOC_ARM_IN_POOL",
"BFD_RELOC_ARM_OFFSET_IMM8",
"BFD_RELOC_ARM_T32_OFFSET_U8",
"BFD_RELOC_ARM_T32_OFFSET_IMM",
"BFD_RELOC_ARM_HWLITERAL",
"BFD_RELOC_ARM_THUMB_ADD",
"BFD_RELOC_ARM_THUMB_IMM",
"BFD_RELOC_ARM_THUMB_SHIFT",
"BFD_RELOC_SH_PCDISP8BY2",
"BFD_RELOC_SH_PCDISP12BY2",
"BFD_RELOC_SH_IMM3",
@ -1283,9 +1290,6 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_SH_TLS_DTPMOD32",
"BFD_RELOC_SH_TLS_DTPOFF32",
"BFD_RELOC_SH_TLS_TPOFF32",
"BFD_RELOC_THUMB_PCREL_BRANCH9",
"BFD_RELOC_THUMB_PCREL_BRANCH12",
"BFD_RELOC_THUMB_PCREL_BRANCH23",
"BFD_RELOC_ARC_B22_PCREL",
"BFD_RELOC_ARC_B26",
"BFD_RELOC_D10V_10_PCREL_R",

View File

@ -2635,12 +2635,102 @@ ENUMDOC
Thumb 22 bit pc-relative branch. The lowest bit must be zero and is
not stored in the instruction. The 2nd lowest bit comes from a 1 bit
field in the instruction.
ENUM
BFD_RELOC_THUMB_PCREL_BRANCH7
ENUMX
BFD_RELOC_THUMB_PCREL_BRANCH9
ENUMX
BFD_RELOC_THUMB_PCREL_BRANCH12
ENUMX
BFD_RELOC_THUMB_PCREL_BRANCH20
ENUMX
BFD_RELOC_THUMB_PCREL_BRANCH23
ENUMX
BFD_RELOC_THUMB_PCREL_BRANCH25
ENUMDOC
Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
The lowest bit must be zero and is not stored in the instruction.
Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
"nn" one smaller in all cases. Note further that BRANCH23
corresponds to R_ARM_THM_CALL.
ENUM
BFD_RELOC_ARM_OFFSET_IMM
ENUMDOC
12-bit immediate offset, used in ARM-format ldr and str instructions.
ENUM
BFD_RELOC_ARM_THUMB_OFFSET
ENUMDOC
5-bit immediate offset, used in Thumb-format ldr and str instructions.
ENUM
BFD_RELOC_ARM_TARGET1
ENUMDOC
Pc-relative or absolute relocation depending on target. Used for
entries in .init_array sections.
ENUM
BFD_RELOC_ARM_ROSEGREL32
ENUMDOC
Read-only segment base relative address.
ENUM
BFD_RELOC_ARM_SBREL32
ENUMDOC
Data segment base relative address.
ENUM
BFD_RELOC_ARM_TARGET2
ENUMDOC
This reloc is used for references to RTTI data from exception handling
tables. The actual definition depends on the target. It may be a
pc-relative or some form of GOT-indirect relocation.
ENUM
BFD_RELOC_ARM_PREL31
ENUMDOC
31-bit PC relative address.
ENUM
BFD_RELOC_ARM_JUMP_SLOT
ENUMX
BFD_RELOC_ARM_GLOB_DAT
ENUMX
BFD_RELOC_ARM_GOT32
ENUMX
BFD_RELOC_ARM_PLT32
ENUMX
BFD_RELOC_ARM_RELATIVE
ENUMX
BFD_RELOC_ARM_GOTOFF
ENUMX
BFD_RELOC_ARM_GOTPC
ENUMDOC
Relocations for setting up GOTs and PLTs for shared libraries.
ENUM
BFD_RELOC_ARM_TLS_GD32
ENUMX
BFD_RELOC_ARM_TLS_LDO32
ENUMX
BFD_RELOC_ARM_TLS_LDM32
ENUMX
BFD_RELOC_ARM_TLS_DTPOFF32
ENUMX
BFD_RELOC_ARM_TLS_DTPMOD32
ENUMX
BFD_RELOC_ARM_TLS_TPOFF32
ENUMX
BFD_RELOC_ARM_TLS_IE32
ENUMX
BFD_RELOC_ARM_TLS_LE32
ENUMDOC
ARM thread-local storage relocations.
ENUM
BFD_RELOC_ARM_IMMEDIATE
ENUMX
BFD_RELOC_ARM_ADRL_IMMEDIATE
ENUMX
BFD_RELOC_ARM_OFFSET_IMM
BFD_RELOC_ARM_T32_IMMEDIATE
ENUMX
BFD_RELOC_ARM_SHIFT_IMM
ENUMX
@ -2663,6 +2753,10 @@ ENUMX
BFD_RELOC_ARM_IN_POOL
ENUMX
BFD_RELOC_ARM_OFFSET_IMM8
ENUMX
BFD_RELOC_ARM_T32_OFFSET_U8
ENUMX
BFD_RELOC_ARM_T32_OFFSET_IMM
ENUMX
BFD_RELOC_ARM_HWLITERAL
ENUMX
@ -2671,68 +2765,9 @@ ENUMX
BFD_RELOC_ARM_THUMB_IMM
ENUMX
BFD_RELOC_ARM_THUMB_SHIFT
ENUMX
BFD_RELOC_ARM_THUMB_OFFSET
ENUMX
BFD_RELOC_ARM_GOT12
ENUMX
BFD_RELOC_ARM_GOT32
ENUMX
BFD_RELOC_ARM_JUMP_SLOT
ENUMX
BFD_RELOC_ARM_COPY
ENUMX
BFD_RELOC_ARM_GLOB_DAT
ENUMX
BFD_RELOC_ARM_PLT32
ENUMX
BFD_RELOC_ARM_RELATIVE
ENUMX
BFD_RELOC_ARM_GOTOFF
ENUMX
BFD_RELOC_ARM_GOTPC
ENUMX
BFD_RELOC_ARM_TLS_GD32
ENUMX
BFD_RELOC_ARM_TLS_LDO32
ENUMX
BFD_RELOC_ARM_TLS_LDM32
ENUMX
BFD_RELOC_ARM_TLS_DTPOFF32
ENUMX
BFD_RELOC_ARM_TLS_DTPMOD32
ENUMX
BFD_RELOC_ARM_TLS_TPOFF32
ENUMX
BFD_RELOC_ARM_TLS_IE32
ENUMX
BFD_RELOC_ARM_TLS_LE32
ENUMDOC
These relocs are only used within the ARM assembler. They are not
(at present) written to any object files.
ENUM
BFD_RELOC_ARM_TARGET1
ENUMDOC
Pc-relative or absolute relocation depending on target. Used for
entries in .init_array sections.
ENUM
BFD_RELOC_ARM_ROSEGREL32
ENUMDOC
Read-only segment base relative address.
ENUM
BFD_RELOC_ARM_SBREL32
ENUMDOC
Data segment base relative address.
ENUM
BFD_RELOC_ARM_TARGET2
ENUMDOC
This reloc is used for References to RTTI dta from exception handling
tables. The actual definition depends on the target. It may be a
pc-relative or some form of GOT-indirect relocation.
ENUM
BFD_RELOC_ARM_PREL31
ENUMDOC
31-bit PC relative address.
ENUM
BFD_RELOC_SH_PCDISP8BY2
@ -2917,16 +2952,6 @@ ENUMX
ENUMDOC
Renesas / SuperH SH relocs. Not all of these appear in object files.
ENUM
BFD_RELOC_THUMB_PCREL_BRANCH9
ENUMX
BFD_RELOC_THUMB_PCREL_BRANCH12
ENUMX
BFD_RELOC_THUMB_PCREL_BRANCH23
ENUMDOC
Thumb 23-, 12- and 9-bit pc-relative branches. The lowest bit must
be zero and is not stored in the instruction.
ENUM
BFD_RELOC_ARC_B22_PCREL
ENUMDOC

View File

@ -1,3 +1,18 @@
2005-05-17 Zack Weinberg <zack@codesourcery.com>
* hash.c (hash_lookup): Add len parameter. All callers changed.
(hash_find_n): New interface.
* hash.h: Prototype hash_find_n.
* sb.c: Include as.h.
(scrub_from_sb, sb_to_scrub, scrub_position): New statics.
(sb_scrub_and_add_sb): New interface.
* sb.h: Prototype sb_scrub_and_add_sb.
* input-scrub.c (input_scrub_include_sb): Use sb_scrub_and_add_sb.
* config/tc-arm.h (TC_FORCE_RELOCATION_LOCAL): Remove
reference to BFD_RELOC_ARM_GOT12 which is never generated.
* config/tc-arm.c: Rewrite, adding Thumb-2 support.
2005-05-17 Daniel Jacobowitz <dan@codesourcery.com>
* doc/Makefile.am (gasver.texi): Don't use $<.

File diff suppressed because it is too large Load Diff

View File

@ -140,7 +140,6 @@ struct fix;
#define TC_FORCE_RELOCATION_LOCAL(FIX) \
(!(FIX)->fx_pcrel \
|| (FIX)->fx_plt \
|| (FIX)->fx_r_type == BFD_RELOC_ARM_GOT12 \
|| (FIX)->fx_r_type == BFD_RELOC_ARM_GOT32 \
|| (FIX)->fx_r_type == BFD_RELOC_32 \
|| TC_FORCE_RELOCATION (FIX))

View File

@ -150,19 +150,13 @@ hash_die (struct hash_control *table)
Each time we look up a string, we move it to the start of the list
for its hash code, to take advantage of referential locality. */
static struct hash_entry *hash_lookup (struct hash_control *,
const char *,
struct hash_entry ***,
unsigned long *);
static struct hash_entry *
hash_lookup (struct hash_control *table, const char *key,
hash_lookup (struct hash_control *table, const char *key, size_t len,
struct hash_entry ***plist, unsigned long *phash)
{
register unsigned long hash;
unsigned int len;
register const unsigned char *s;
register unsigned int c;
unsigned long hash;
size_t n;
unsigned int c;
unsigned int index;
struct hash_entry **list;
struct hash_entry *p;
@ -173,13 +167,11 @@ hash_lookup (struct hash_control *table, const char *key,
#endif
hash = 0;
len = 0;
s = (const unsigned char *) key;
while ((c = *s++) != '\0')
for (n = 0; n < len; n++)
{
c = key[n];
hash += c + (c << 17);
hash ^= hash >> 2;
++len;
}
hash += len + (len << 17);
hash ^= hash >> 2;
@ -206,7 +198,7 @@ hash_lookup (struct hash_control *table, const char *key,
++table->string_compares;
#endif
if (strcmp (p->string, key) == 0)
if (strncmp (p->string, key, len) == 0 && p->string[len] == '\0')
{
if (prev != NULL)
{
@ -237,7 +229,7 @@ hash_insert (struct hash_control *table, const char *key, PTR value)
struct hash_entry **list;
unsigned long hash;
p = hash_lookup (table, key, &list, &hash);
p = hash_lookup (table, key, strlen (key), &list, &hash);
if (p != NULL)
return "exists";
@ -267,7 +259,7 @@ hash_jam (struct hash_control *table, const char *key, PTR value)
struct hash_entry **list;
unsigned long hash;
p = hash_lookup (table, key, &list, &hash);
p = hash_lookup (table, key, strlen (key), &list, &hash);
if (p != NULL)
{
#ifdef HASH_STATISTICS
@ -304,7 +296,7 @@ hash_replace (struct hash_control *table, const char *key, PTR value)
struct hash_entry *p;
PTR ret;
p = hash_lookup (table, key, NULL, NULL);
p = hash_lookup (table, key, strlen (key), NULL, NULL);
if (p == NULL)
return NULL;
@ -327,7 +319,22 @@ hash_find (struct hash_control *table, const char *key)
{
struct hash_entry *p;
p = hash_lookup (table, key, NULL, NULL);
p = hash_lookup (table, key, strlen (key), NULL, NULL);
if (p == NULL)
return NULL;
return p->data;
}
/* As hash_find, but KEY is of length LEN and is not guaranteed to be
NUL-terminated. */
PTR
hash_find_n (struct hash_control *table, const char *key, size_t len)
{
struct hash_entry *p;
p = hash_lookup (table, key, len, NULL, NULL);
if (p == NULL)
return NULL;
@ -343,7 +350,7 @@ hash_delete (struct hash_control *table, const char *key)
struct hash_entry *p;
struct hash_entry **list;
p = hash_lookup (table, key, &list, NULL);
p = hash_lookup (table, key, strlen (key), &list, NULL);
if (p == NULL)
return NULL;

View File

@ -63,6 +63,11 @@ extern PTR hash_replace (struct hash_control *, const char *key,
extern PTR hash_find (struct hash_control *, const char *key);
/* As hash_find, but KEY is of length LEN and is not guaranteed to be
NUL-terminated. */
extern PTR hash_find_n (struct hash_control *, const char *key, size_t len);
/* Delete an entry from a hash table. This returns the value stored
for that entry, or NULL if there is no such entry. */

View File

@ -279,7 +279,7 @@ input_scrub_include_sb (sb *from, char *position, int is_expansion)
/* Add the sentinel required by read.c. */
sb_add_char (&from_sb, '\n');
}
sb_add_sb (&from_sb, from);
sb_scrub_and_add_sb (&from_sb, from);
sb_index = 1;
/* These variables are reset by input_scrub_push. Restore them

View File

@ -33,6 +33,7 @@
#endif
#include "libiberty.h"
#include "sb.h"
#include "as.h"
/* These routines are about manipulating strings.
@ -115,6 +116,38 @@ sb_add_sb (sb *ptr, sb *s)
ptr->len += s->len;
}
/* Helper for sb_scrub_and_add_sb. */
static sb *sb_to_scrub;
static char *scrub_position;
static int
scrub_from_sb (char *buf, int buflen)
{
int copy;
copy = sb_to_scrub->len - (scrub_position - sb_to_scrub->ptr);
if (copy > buflen)
copy = buflen;
memcpy (buf, scrub_position, copy);
scrub_position += copy;
return copy;
}
/* Run the sb at s through do_scrub_chars and add the result to the sb
at ptr. */
void
sb_scrub_and_add_sb (sb *ptr, sb *s)
{
sb_to_scrub = s;
scrub_position = s->ptr;
sb_check (ptr, s->len);
ptr->len += do_scrub_chars (scrub_from_sb, ptr->ptr + ptr->len, s->len);
sb_to_scrub = 0;
scrub_position = 0;
}
/* Make sure that the sb at ptr has room for another len characters,
and grow it if it doesn't. */

View File

@ -81,6 +81,7 @@ sb_list_vector;
extern void sb_new (sb *);
extern void sb_kill (sb *);
extern void sb_add_sb (sb *, sb *);
extern void sb_scrub_and_add_sb (sb *, sb *);
extern void sb_reset (sb *);
extern void sb_add_char (sb *, int);
extern void sb_add_string (sb *, const char *);

View File

@ -1,3 +1,36 @@
2005-05-17 Zack Weinberg <zack@codesourcery.com>
* gas/arm/arm.exp: Convert all existing "gas_test" tests to
"run_dump_test" tests. Run more tests unconditionally. Run new tests.
* gas/arm/arch4t.s, gas/arm/arch6zk.s, gas/arm/arm3.s, gas/arm/arm6.s
* gas/arm/arm7dm.s, gas/arm/bignum1.s, gas/arm/float.s
* gas/arm/immed.s, gas/arm/iwmmxt.s, gas/arm/offset.s, gas/arm/thumb.s:
Adjust to work as a dump test.
* gas/arm/arch4t.d, gas/arm/arch6zk.d, gas/arm/arm3.d, gas/arm/arm6.d
* gas/arm/arm7dm.d, gas/arm/bignum1.d, gas/arm/float.d
* gas/arm/immed.d, gas/arm/iwmmxt.d, gas/arm/offset.d, gas/arm/thumb.d:
New files.
* gas/arm/armv1-bad.l, gas/arm/armv1-bad.s: Remove tests for
diagnostics that don't happen in the first pass anymore.
* gas/arm/iwmmxt-bad.l, gas/arm/r15-bad.l, gas/arm/req.l
* gas/arm/vfp-bad.l:
Update expected diagnostics.
* gas/arm/pic.d: Update expected reloc name.
* gas/arm/thumbv6.d: CPY no longer appears in disassembly.
* gas/arm/r15-bad.s: Avoid two-argument mul.
* gas/arm/req.s: Adjust comments.
* gas/arm/maverick.d, gas/arm/maverick.s: Avoid inappropriate
use of PC.
* gas/arm/macro-1.d, gas/arm/macro1.s
* gas/arm/t16-bad.l, gas/arm/t16-bad.s
* gas/arm/tcompat.d, gas/arm/tcompat.s
* gas/arm/tcompat2.d, gas/arm/tcompat2.s
* gas/arm/thumb32.d, gas/arm/thumb32.s
New test pair.
2005-05-17 Jan Beulich <jbeulich@novell.com>
* gas/mmix/err-byte1.s: Adjust expected error text on line 10.

View File

@ -0,0 +1,36 @@
# name: ARM architecture 4t instructions
# as: -march=armv4t
# objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+00 <[^>]+> e12fff10 ? bx r0
0+04 <[^>]+> 012fff11 ? bxeq r1
0+08 <[^>]+> e15f30b8 ? ldrh r3, \[pc, #-8\] ; 0+08 <[^>]+>
0+0c <[^>]+> e1d540f0 ? ldrsh r4, \[r5\]
0+10 <[^>]+> e19140d3 ? ldrsb r4, \[r1, r3\]
0+14 <[^>]+> e1b410f4 ? ldrsh r1, \[r4, r4\]!
0+18 <[^>]+> 011510d3 ? ldreqsb r1, \[r5, -r3\]
0+1c <[^>]+> 109620b7 ? ldrneh r2, \[r6\], r7
0+20 <[^>]+> 309720f8 ? ldrccsh r2, \[r7\], r8
0+24 <[^>]+> e1d32fdf ? ldrsb r2, \[r3, #255\]
0+28 <[^>]+> e1541ffa ? ldrsh r1, \[r4, #-250\]
0+2c <[^>]+> e1d51fd0 ? ldrsb r1, \[r5, #240\]
0+30 <[^>]+> e1cf23b0 ? strh r2, \[pc, #48\] ; 0+68 <[^>]+>
0+34 <[^>]+> 11c330b0 ? strneh r3, \[r3\]
0+38 <[^>]+> e328f002 ? msr CPSR_f, #2 ; 0x2
0+3c <[^>]+> e121f003 ? msr CPSR_c, r3
0+40 <[^>]+> e122f004 ? msr CPSR_x, r4
0+44 <[^>]+> e124f005 ? msr CPSR_s, r5
0+48 <[^>]+> e128f006 ? msr CPSR_f, r6
0+4c <[^>]+> e129f007 ? msr CPSR_fc, r7
0+50 <[^>]+> e368f004 ? msr SPSR_f, #4 ; 0x4
0+54 <[^>]+> e161f008 ? msr SPSR_c, r8
0+58 <[^>]+> e162f009 ? msr SPSR_x, r9
0+5c <[^>]+> e164f00a ? msr SPSR_s, sl
0+60 <[^>]+> e168f00b ? msr SPSR_f, fp
0+64 <[^>]+> e169f00c ? msr SPSR_fc, ip
0+68 <[^>]+> e1a00000 ? nop \(mov r0,r0\)
0+6c <[^>]+> e1a00000 ? nop \(mov r0,r0\)

View File

@ -1,6 +1,6 @@
.text
.align 0
.text
.align 0
l:
bx r0
bxeq r1
@ -33,3 +33,6 @@ foo:
msr SPSR_f, r11
msr SPSR_all, r12
bar:
@ section padding for a.out's benefit
nop
nop

View File

@ -6,21 +6,21 @@
Disassembly of section .text:
0+000 <[^>]*> f57ff01f ? clrex
0+004 <[^>]*> e1dc3f9f ? ldrexb r3, \[ip\]
0+008 <[^>]*> 11d3cf9f ? ldrexbne ip, \[r3\]
0+00c <[^>]*> e1bc3f9f ? ldrexd r3, \[ip\]
0+010 <[^>]*> 11b3cf9f ? ldrexdne ip, \[r3\]
0+014 <[^>]*> e1fc3f9f ? ldrexh r3, \[ip\]
0+018 <[^>]*> 11f3cf9f ? ldrexhne ip, \[r3\]
0+004 <[^>]*> e1dc4f9f ? ldrexb r4, \[ip\]
0+008 <[^>]*> 11d4cf9f ? ldrexbne ip, \[r4\]
0+00c <[^>]*> e1bc4f9f ? ldrexd r4, \[ip\]
0+010 <[^>]*> 11b4cf9f ? ldrexdne ip, \[r4\]
0+014 <[^>]*> e1fc4f9f ? ldrexh r4, \[ip\]
0+018 <[^>]*> 11f4cf9f ? ldrexhne ip, \[r4\]
0+01c <[^>]*> e320f080 ? nop \{128\}
0+020 <[^>]*> 1320f07f ? nopne \{127\}
0+024 <[^>]*> e320f004 ? sev
0+028 <[^>]*> e1c73f9c ? strexb r3, ip, \[r7\]
0+02c <[^>]*> 11c8cf93 ? strexbne ip, r3, \[r8\]
0+030 <[^>]*> e1a73f9c ? strexd r3, ip, \[r7\]
0+034 <[^>]*> 11a8cf93 ? strexdne ip, r3, \[r8\]
0+038 <[^>]*> e1e73f9c ? strexh r3, ip, \[r7\]
0+03c <[^>]*> 11e8cf93 ? strexhne ip, r3, \[r8\]
0+028 <[^>]*> e1c74f9c ? strexb r4, ip, \[r7\]
0+02c <[^>]*> 11c8cf94 ? strexbne ip, r4, \[r8\]
0+030 <[^>]*> e1a74f9c ? strexd r4, ip, \[r7\]
0+034 <[^>]*> 11a8cf94 ? strexdne ip, r4, \[r8\]
0+038 <[^>]*> e1e74f9c ? strexh r4, ip, \[r7\]
0+03c <[^>]*> 11e8cf94 ? strexhne ip, r4, \[r8\]
0+040 <[^>]*> e320f002 ? wfe
0+044 <[^>]*> e320f003 ? wfi
0+048 <[^>]*> e320f001 ? yield

View File

@ -4,21 +4,21 @@
label:
# ARMV6K instructions
clrex
ldrexb r3, [r12]
ldrexbne r12, [r3]
ldrexd r3, [r12]
ldrexdne r12, [r3]
ldrexh r3, [r12]
ldrexhne r12, [r3]
nop {128}
nopne {127}
ldrexb r4, [r12]
ldrexbne r12, [r4]
ldrexd r4, [r12]
ldrexdne r12, [r4]
ldrexh r4, [r12]
ldrexhne r12, [r4]
nop {128}
nopne {127}
sev
strexb r3, r12, [r7]
strexbne r12, r3, [r8]
strexd r3, r12, [r7]
strexdne r12, r3, [r8]
strexh r3, r12, [r7]
strexhne r12, r3, [r8]
strexb r4, r12, [r7]
strexbne r12, r4, [r8]
strexd r4, r12, [r7]
strexdne r12, r4, [r8]
strexh r4, r12, [r7]
strexhne r12, r4, [r8]
wfe
wfi
yield

View File

@ -28,14 +28,13 @@ if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then {
run_dump_test "copro"
}
gas_test "arm3.s" "-mcpu=arm3" $stdoptlist "Arm 3 instructions"
gas_test "arm6.s" "-mcpu=arm6" $stdoptlist "Arm 6 instructions"
gas_test "arm7dm.s" "-mcpu=arm7dm" $stdoptlist "Arm 7DM instructions"
gas_test "arch4t.s" "-march=armv4t" $stdoptlist "Arm architecture 4t instructions"
gas_test "immed.s" "" $stdoptlist "immediate expressions"
gas_test "float.s" "-mcpu=arm7tdmi -mfpu=fpa" $stdoptlist "Core floating point instructions"
gas_test "offset.s" "" $stdoptlist "OFFSET_IMM regression"
run_dump_test "arm3"
run_dump_test "arm6"
run_dump_test "arm7dm"
run_dump_test "arch4t"
run_dump_test "immed"
run_dump_test "float"
run_dump_test "offset"
run_dump_test "armv1"
run_dump_test "arch5tej"
run_dump_test "fpa-monadic"
@ -53,12 +52,18 @@ if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then {
run_dump_test "thumbv6"
run_dump_test "thumbv6k"
run_dump_test "arch6zk"
run_dump_test "tcompat"
run_dump_test "tcompat2"
run_dump_test "iwmmxt"
run_dump_test "macro1"
run_errors_test "vfp-bad" "-mfpu=vfp" "VFP errors"
run_errors_test "req" "-mcpu=arm7m" ".req errors"
run_errors_test "armv1-bad" "-mcpu=arm7m" "ARM v1 errors"
run_errors_test "r15-bad" "" "Invalid use of r15 errors"
run_errors_test "archv6t2-bad" "-march=armv6t2" "Invalid V6T2 instructions"
run_errors_test "t16-bad" "-march=armv6k" "Valid ARM, invalid Thumb"
run_errors_test "iwmmxt-bad" "-mcpu=iwmmxt" "iWMMXt errors"
if {[istarget *-*-*coff] || [istarget *-*-pe] || [istarget *-*-wince] ||
[istarget *-*-*aout*] || [istarget *-*-netbsd] || [istarget *-*-riscix*]} then {
@ -70,29 +75,20 @@ if {[istarget *arm*-*-*] || [istarget "xscale-*-*"]} then {
run_dump_test "pic"
run_dump_test "mapping"
gas_test "bignum1.s" "" $stdoptlist "bignums"
run_dump_test "bignum1"
run_dump_test "unwind"
run_dump_test "tls"
}
# The arm-aout port does not support Thumb branch relocations.
if {! [istarget arm*-*-aout] && ![istarget arm-*-pe]} then {
# The arm-aout port does not support Thumb mode.
gas_test "thumb.s" "-mcpu=arm7t" $stdoptlist "Thumb instructions"
run_dump_test "thumb"
run_dump_test "thumb32"
}
# Not all arm targets are bi-endian, so only run this test on ones
# we know that are. FIXME: We should probably also key off armeb/armel.
if [istarget *-*-pe] {
run_dump_test "le-fpconst"
}
}
# Not all arm targets are bi-endian, so only run this test on ones
# we know that are. FIXME: We should probably also key off armeb/armel.
if [istarget arm-*-pe] {
run_dump_test "le-fpconst"
# Since big-endian numbers have the normal format, this doesn't exist.
#run_dump_test "be-fpconst"
}
if [istarget xscale-*] {
run_dump_test "iwmmxt"
run_errors_test "iwmmxt-bad" "-mcpu=iwmmxt" "iWMMXt errors"
}

View File

@ -0,0 +1,11 @@
# name: ARM 3 instructions
# as: -mcpu=arm3
# objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+0 <[^>]*> e1080091 ? swp r0, r1, \[r8\]
0+4 <[^>]*> e1432093 ? swpb r2, r3, \[r3\]
0+8 <[^>]*> a1444091 ? swpgeb r4, r1, \[r4\]
0+c <[^>]*> e1a00000 ? nop \(mov r0,r0\)

View File

@ -1,6 +1,7 @@
.text
.align 0
.text
.align 0
l:
swp r0, r1, [r8]
swpb r2, r3, [r3]
swpgeb r4, r1, [r4]
nop

View File

@ -0,0 +1,19 @@
# name: ARM 6 instructions
# as: -mcpu=arm6
# objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+00 <[^>]+> e10f8000 ? mrs r8, CPSR
0+04 <[^>]+> e14f2000 ? mrs r2, SPSR
0+08 <[^>]+> e129f001 ? msr CPSR_fc, r1
0+0c <[^>]+> 1328f20f ? msrne CPSR_f, #-268435456 ; 0xf0000000
0+10 <[^>]+> e168f008 ? msr SPSR_f, r8
0+14 <[^>]+> e169f009 ? msr SPSR_fc, r9
0+18 <[^>]+> e10f8000 ? mrs r8, CPSR
0+1c <[^>]+> e14f2000 ? mrs r2, SPSR
0+20 <[^>]+> e129f001 ? msr CPSR_fc, r1
0+24 <[^>]+> 1328f20f ? msrne CPSR_f, #-268435456 ; 0xf0000000
0+28 <[^>]+> e168f008 ? msr SPSR_f, r8
0+2c <[^>]+> e169f009 ? msr SPSR_fc, r9

View File

@ -1,6 +1,6 @@
.text
.align 0
.text
.align 0
l:
mrs r8, cpsr
mrs r2, spsr
@ -16,4 +16,3 @@
msrne CPSR_flg, #0xf0000000
msr SPSR_flg, r8
msr SPSR_all, r9

View File

@ -0,0 +1,19 @@
# name: ARM 7DM instructions
# as: -mcpu=arm7dm
# objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+00 <[^>]+> e0c10392 ? smull r0, r1, r2, r3
0+04 <[^>]+> e0810392 ? umull r0, r1, r2, r3
0+08 <[^>]+> e0e10392 ? smlal r0, r1, r2, r3
0+0c <[^>]+> e0a10394 ? umlal r0, r1, r4, r3
0+10 <[^>]+> 10c10493 ? smullne r0, r1, r3, r4
0+14 <[^>]+> e0d01b99 ? smulls r1, r0, r9, fp
0+18 <[^>]+> 00b92994 ? umlaleqs r2, r9, r4, r9
0+1c <[^>]+> a0eaee98 ? smlalge lr, sl, r8, lr
0+20 <[^>]+> e322f000 ? msr CPSR_x, #0 ; 0x0
0+24 <[^>]+> e1a00000 ? nop \(mov r0,r0\)
0+28 <[^>]+> e1a00000 ? nop \(mov r0,r0\)
0+2c <[^>]+> e1a00000 ? nop \(mov r0,r0\)

View File

@ -1,6 +1,6 @@
.text
.align 0
.text
.align 0
l:
smull r0, r1, r2, r3
umull r0, r1, r2, r3
smlal r0, r1, r2, r3
@ -11,4 +11,10 @@
umlaleqs r2, r9, r4, r9
smlalge r14, r10, r8, r14
msr CPSR_x, #0 @ This used to be illegal, but rev 2 of the ARM ARM allows it.
@ This used to be illegal, but rev 2 of the ARM ARM allows it.
msr CPSR_x, #0
@ padding for a.out's sake
nop
nop
nop

View File

@ -1,12 +1,9 @@
[^:]*: Assembler messages:
[^:]*:4: Error: invalid pseudo operation -- `str r0,=0x00ff0000'
[^:]*:5: Error: bad expression -- `ldr r0,{r1}'
[^:]*:6: Error: address offset too large -- `ldr r0,\[r1,#4096\]'
[^:]*:7: Error: address offset too large -- `ldr r0,\[r1,#-4096\]'
[^:]*:8: Error: invalid constant -- `mov r0,#0x1ff'
[^:]*:9: Error: bad instruction `cmpl r0,r0'
[^:]*:10: Error: selected processor does not support `strh r0,\[r1\]'
[^:]*:11: Warning: writeback of base register is UNPREDICTABLE
[^:]*:12: Warning: writeback of base register when in register list is UNPREDICTABLE
[^:]*:13: Warning: writeback of base register is UNPREDICTABLE
[^:]*:15: Warning: if writeback register is in list, it must be the lowest reg in the list
[^:]*:6: Error: bad instruction `cmpl r0,r0'
[^:]*:7: Error: selected processor does not support `strh r0,\[r1\]'
[^:]*:8: Warning: writeback of base register is UNPREDICTABLE
[^:]*:9: Warning: writeback of base register when in register list is UNPREDICTABLE
[^:]*:10: Warning: writeback of base register is UNPREDICTABLE
[^:]*:12: Warning: if writeback register is in list, it must be the lowest reg in the list

View File

@ -3,9 +3,6 @@
entry:
str r0, =0x00ff0000
ldr r0, {r1}
ldr r0, [r1, #4096]
ldr r0, [r1, #-4096]
mov r0, #0x1ff
cmpl r0, r0
strh r0, [r1]
ldmfa r4!, {r8, r9}^

View File

@ -0,0 +1,8 @@
# name: bignums
# as:
# objdump: --full-contents
.*: +file format .*arm.*
Contents of section .data:
0000 [08]0000000 000000[08]0 11111111 11111111 \.\.\.\.\.\.\.\.\.\.\.\.\.\.\.\.

View File

@ -1 +1,3 @@
.data
.8byte -9223372036854775808
.8byte 1229782938247303441

View File

@ -0,0 +1,131 @@
# name: Core floating point instructions
# as: -mcpu=arm7tdmi -mfpu=fpa
# objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+000 <[^>]+> ee088101 ? mvfe f0, f1
0+004 <[^>]+> 0e08b105 ? mvfeqe f3, f5
0+008 <[^>]+> 0e00c189 ? mvfeqd f4, #1\.0
0+00c <[^>]+> ee00c107 ? mvfs f4, f7
0+010 <[^>]+> ee008121 ? mvfsp f0, f1
0+014 <[^>]+> ee00b1c4 ? mvfdm f3, f4
0+018 <[^>]+> ee08f167 ? mvfez f7, f7
0+01c <[^>]+> ee09010a ? adfe f0, f1, #2\.0
0+020 <[^>]+> 0e0a110e ? adfeqe f1, f2, #0\.5
0+024 <[^>]+> ee043145 ? adfsm f3, f4, f5
0+028 <[^>]+> ee20018a ? sufd f0, f0, #2\.0
0+02c <[^>]+> ee22110f ? sufs f1, f2, #10\.0
0+030 <[^>]+> 1e2c3165 ? sufneez f3, f4, f5
0+034 <[^>]+> ee311108 ? rsfs f1, f1, #0\.0
0+038 <[^>]+> ee3031ad ? rsfdp f3, f0, #5\.0
0+03c <[^>]+> de367180 ? rsfled f7, f6, f0
0+040 <[^>]+> ee100180 ? mufd f0, f0, f0
0+044 <[^>]+> ee1a116b ? mufez f1, f2, #3\.0
0+048 <[^>]+> ee10010c ? mufs f0, f0, #4\.0
0+04c <[^>]+> ee400189 ? dvfd f0, f0, #1\.0
0+050 <[^>]+> ee49016f ? dvfez f0, f1, #10\.0
0+054 <[^>]+> 4e443145 ? dvfmism f3, f4, f5
0+058 <[^>]+> ee59010f ? rdfe f0, f1, #10\.0
0+05c <[^>]+> ee573109 ? rdfs f3, f7, #1\.0
0+060 <[^>]+> 3e5441a3 ? rdfccdp f4, f4, f3
0+064 <[^>]+> ee620183 ? powd f0, f2, f3
0+068 <[^>]+> ee63110f ? pows f1, f3, #10\.0
0+06c <[^>]+> 2e6f4169 ? powcsez f4, f7, #1\.0
0+070 <[^>]+> ee767107 ? rpws f7, f6, f7
0+074 <[^>]+> 0e710182 ? rpweqd f0, f1, f2
0+078 <[^>]+> ee7a2143 ? rpwem f2, f2, f3
0+07c <[^>]+> ee82118b ? rmfd f1, f2, #3\.0
0+080 <[^>]+> 6e843104 ? rmfvss f3, f4, f4
0+084 <[^>]+> ee8f4120 ? rmfep f4, f7, f0
0+088 <[^>]+> ee910102 ? fmls f0, f1, f2
0+08c <[^>]+> 0e931105 ? fmleqs f1, f3, f5
0+090 <[^>]+> 5e964160 ? fmlplsz f4, f6, f0
0+094 <[^>]+> eea3110f ? fdvs f1, f3, #10\.0
0+098 <[^>]+> eea10122 ? fdvsp f0, f1, f2
0+09c <[^>]+> 2ea44144 ? fdvcssm f4, f4, f4
0+0a0 <[^>]+> eeb11109 ? frds f1, f1, #1\.0
0+0a4 <[^>]+> ceb12100 ? frdgts f2, f1, f0
0+0a8 <[^>]+> ceb44165 ? frdgtsz f4, f4, f5
0+0ac <[^>]+> eec10182 ? pold f0, f1, f2
0+0b0 <[^>]+> eec6416b ? polsz f4, f6, #3\.0
0+0b4 <[^>]+> 0ece5107 ? poleqe f5, f6, f7
0+0b8 <[^>]+> ee108101 ? mnfs f0, f1
0+0bc <[^>]+> ee10818b ? mnfd f0, #3\.0
0+0c0 <[^>]+> ee18816c ? mnfez f0, #4\.0
0+0c4 <[^>]+> 0e188165 ? mnfeqez f0, f5
0+0c8 <[^>]+> ee108124 ? mnfsp f0, f4
0+0cc <[^>]+> ee1091c7 ? mnfdm f1, f7
0+0d0 <[^>]+> ee208181 ? absd f0, f1
0+0d4 <[^>]+> ee20912b ? abssp f1, #3\.0
0+0d8 <[^>]+> 0e28c105 ? abseqe f4, f5
0+0dc <[^>]+> ee309102 ? rnds f1, f2
0+0e0 <[^>]+> ee30b184 ? rndd f3, f4
0+0e4 <[^>]+> 0e38e16c ? rndeqez f6, #4\.0
0+0e8 <[^>]+> ee40d105 ? sqts f5, f5
0+0ec <[^>]+> ee40e1a6 ? sqtdp f6, f6
0+0f0 <[^>]+> 5e48f166 ? sqtplez f7, f6
0+0f4 <[^>]+> ee50810f ? logs f0, #10\.0
0+0f8 <[^>]+> ee58810f ? loge f0, #10\.0
0+0fc <[^>]+> 1e5081e1 ? lognedz f0, f1
0+100 <[^>]+> ee689102 ? lgne f1, f2
0+104 <[^>]+> ee6091e3 ? lgndz f1, f3
0+108 <[^>]+> 7e60b104 ? lgnvcs f3, f4
0+10c <[^>]+> ee709103 ? exps f1, f3
0+110 <[^>]+> ee78b14f ? expem f3, #10\.0
0+114 <[^>]+> 5e70e187 ? exppld f6, f7
0+118 <[^>]+> ee808181 ? sind f0, f1
0+11c <[^>]+> ee809142 ? sinsm f1, f2
0+120 <[^>]+> ce88c10d ? singte f4, #5\.0
0+124 <[^>]+> ee909183 ? cosd f1, f3
0+128 <[^>]+> ee98c145 ? cosem f4, f5
0+12c <[^>]+> 1e90e1a1 ? cosnedp f6, f1
0+130 <[^>]+> eea89105 ? tane f1, f5
0+134 <[^>]+> eea0c167 ? tansz f4, f7
0+138 <[^>]+> aea091ec ? tangedz f1, #4\.0
0+13c <[^>]+> eeb8c105 ? asne f4, f5
0+140 <[^>]+> eeb0e12e ? asnsp f6, #0\.5
0+144 <[^>]+> 4eb0d1e5 ? asnmidz f5, f5
0+148 <[^>]+> eec0d106 ? acss f5, f6
0+14c <[^>]+> eec0e180 ? acsd f6, f0
0+150 <[^>]+> 2ec8914e ? acscsem f1, #0\.5
0+154 <[^>]+> eed88105 ? atne f0, f5
0+158 <[^>]+> eed0916d ? atnsz f1, #5\.0
0+15c <[^>]+> bed0b182 ? atnltd f3, f2
0+160 <[^>]+> eee8d104 ? urde f5, f4
0+164 <[^>]+> eef8e105 ? nrme f6, f5
0+168 <[^>]+> 5ef0f1e5 ? nrmpldz f7, f5
0+16c <[^>]+> ee008130 ? fltsp f0, r8
0+170 <[^>]+> ee090110 ? flte f1, r0
0+174 <[^>]+> 0e0571f0 ? flteqdz f5, r7
0+178 <[^>]+> ee100111 ? fix r0, f1
0+17c <[^>]+> ee101177 ? fixz r1, f7
0+180 <[^>]+> 2e105155 ? fixcsm r5, f5
0+184 <[^>]+> ee400110 ? wfc r0
0+188 <[^>]+> ee201110 ? wfs r1
0+18c <[^>]+> 0e302110 ? rfseq r2
0+190 <[^>]+> ee504110 ? rfc r4
0+194 <[^>]+> ee90f119 ? cmf f0, #1\.0
0+198 <[^>]+> ee91f112 ? cmf f1, f2
0+19c <[^>]+> 0e90f111 ? cmfeq f0, f1
0+1a0 <[^>]+> eeb0f11b ? cnf f0, #3\.0
0+1a4 <[^>]+> eeb1f11e ? cnf f1, #0\.5
0+1a8 <[^>]+> 6eb3f114 ? cnfvs f3, f4
0+1ac <[^>]+> eed0f111 ? cmfe f0, f1
0+1b0 <[^>]+> 0ed1f112 ? cmfeeq f1, f2
0+1b4 <[^>]+> 0ed3f11d ? cmfeeq f3, #5\.0
0+1b8 <[^>]+> eef1f113 ? cnfe f1, f3
0+1bc <[^>]+> 0ef3f114 ? cnfeeq f3, f4
0+1c0 <[^>]+> 0ef4f117 ? cnfeeq f4, f7
0+1c4 <[^>]+> eef4f11d ? cnfe f4, #5\.0
0+1c8 <[^>]+> ed900200 ? lfm f0, 4, \[r0\]
0+1cc <[^>]+> ed900200 ? lfm f0, 4, \[r0\]
0+1d0 <[^>]+> ed911210 ? lfm f1, 4, \[r1, #64\]
0+1d4 <[^>]+> edae22ff ? sfm f2, 4, \[lr, #1020\]!
0+1d8 <[^>]+> 0c68f2ff ? sfmeq f7, 3, \[r8\], #-1020
0+1dc <[^>]+> eddf6200 ? lfm f6, 2, \[pc\]
0+1e0 <[^>]+> eca8f203 ? sfm f7, 1, \[r8\], #12
0+1e4 <[^>]+> 0d16520c ? lfmeq f5, 4, \[r6, #-48\]
0+1e8 <[^>]+> 1d42c209 ? sfmne f4, 3, \[r2, #-36\]
0+1ec <[^>]+> 1d62c209 ? sfmne f4, 3, \[r2, #-36\]!

View File

@ -1,5 +1,6 @@
.text
.align 0
.text
.align 0
l:
mvfe f0, f1
mvfeqe f3, f5
mvfeqd f4, #1.0

View File

@ -0,0 +1,16 @@
# name: immediate expressions
# as:
# objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+0000 <[^>]+> e3a00000 ? mov r0, #0 ; 0x0
0+0004 <[^>]+> e3e00003 ? mvn r0, #3 ; 0x3
0+0008 <[^>]+> e51f0010 ? ldr r0, \[pc, #-16\] ; 0+0 <[^>]+>
0+000c <[^>]+> e51f0014 ? ldr r0, \[pc, #-20\] ; 0+0 <[^>]+>
\.\.\.
0+1010 <[^>]+> e3a00008 ? mov r0, #8 ; 0x8
0+1014 <[^>]+> e59f00e4 ? ldr r0, \[pc, #228\] ; 0+1100 <[^>]+>
0+1018 <[^>]+> e1a00000 ? nop \(mov r0,r0\)
0+101c <[^>]+> e1a00000 ? nop \(mov r0,r0\)

View File

@ -9,3 +9,7 @@ bar:
.space 4096
mov r0, #(. - bar - 8) & 0xff
ldr r0, [pc, # (bar - . -8) & 0xff]
@ section padding for a.out's benefit
nop
nop

View File

@ -1,9 +1,9 @@
[^:]*: Assembler messages:
[^:]*:1: Error: conditional execution not supported with control register
[^:]*:2: Error: non-word size not supported with control register
[^:]*:3: Error: non-word size not supported with control register
[^:]*:4: Error: non-word size not supported with control register
[^:]*:5: Error: conditional execution not supported with control register
[^:]*:6: Error: non-word size not supported with control register
[^:]*:7: Error: non-word size not supported with control register
[^:]*:8: Error: non-word size not supported with control register
[^:]*:1: Error: instruction cannot be conditional -- `wldrwgt wcgr0,\[r1\]'
[^:]*:2: Error: iWMMXt data register expected -- `wldrb wcgr0,\[r1\]'
[^:]*:3: Error: iWMMXt data register expected -- `wldrh wcgr0,\[r1\]'
[^:]*:4: Error: iWMMXt data register expected -- `wldrd wcgr0,\[r1\]'
[^:]*:5: Error: instruction cannot be conditional -- `wstrwgt wcgr0,\[r1\]'
[^:]*:6: Error: iWMMXt data register expected -- `wstrb wcgr0,\[r1\]'
[^:]*:7: Error: iWMMXt data register expected -- `wstrh wcgr0,\[r1\]'
[^:]*:8: Error: iWMMXt data register expected -- `wstrd wcgr0,\[r1\]'

View File

@ -166,3 +166,6 @@ Disassembly of section .text:
0+278 <[^>]*> 0e9540ea[ ]+wunpckilweq[ ]+wr4, wr5, wr10
0+27c <[^>]*> 1e143005[ ]+wxorne[ ]+wr3, wr4, wr5
0+280 <[^>]*> ae377007[ ]+wandnge[ ]+wr7, wr7, wr7
0+284 <[^>]*> e1a00000[ ]+nop[ ]+\(mov r0,r0\)
0+288 <[^>]*> e1a00000[ ]+nop[ ]+\(mov r0,r0\)
0+28c <[^>]*> e1a00000[ ]+nop[ ]+\(mov r0,r0\)

View File

@ -202,3 +202,8 @@ iwmmxt:
wxorne wr3, wr4, wr5
wzeroge wr7
@ a.out-required section size padding
nop
nop
nop

View File

@ -0,0 +1,12 @@
# name: Macro scrubbing
# as:
# objdump: -dr --prefix-addresses --show-raw-insn
[^:]+: +file format .*arm.*
Disassembly of section .text:
0+0 <[^>]*> e8bd8030 ? ldmia sp!, {r4, r5, pc}
0+4 <[^>]*> e1a00000 ? nop \(mov r0,r0\)
0+8 <[^>]*> e1a00000 ? nop \(mov r0,r0\)
0+c <[^>]*> e1a00000 ? nop \(mov r0,r0\)

View File

@ -0,0 +1,12 @@
@ Test that macro expansions are properly scrubbed.
.macro popret regs
ldmia sp!, {\regs, pc}
.endm
.text
l:
popret "r4, r5"
@ section padding for a.out's sake
nop
nop
nop

View File

@ -13,121 +13,121 @@ Disassembly of section .text:
0*8 <load_store\+0x8> 7d ?1c ?24 ?ef ? * cfldrsvc mvf2, ?\[ip, #-956\]
0*c <load_store\+0xc> bd ?1a ?04 ?ff ? * cfldrslt mvf0, ?\[sl, #-1020\]
0*10 <load_store\+0x10> 3d ?11 ?c4 ?27 ? * cfldrscc mvf12, ?\[r1, #-156\]
0*14 <load_store\+0x14> ed ?bf ?d4 ?68 ? * cfldrs mvf13, ?\[pc, #416\]!
0*14 <load_store\+0x14> ed ?b9 ?d4 ?68 ? * cfldrs mvf13, ?\[r9, #416\]!
0*18 <load_store\+0x18> 2d ?30 ?94 ?ff ? * cfldrscs mvf9, ?\[r0, #-1020\]!
0*1c <load_store\+0x1c> 9d ?31 ?44 ?27 ? * cfldrsls mvf4, ?\[r1, #-156\]!
0*20 <load_store\+0x20> dd ?bf ?74 ?68 ? * cfldrsle mvf7, ?\[pc, #416\]!
0*20 <load_store\+0x20> dd ?b9 ?74 ?68 ? * cfldrsle mvf7, ?\[r9, #416\]!
0*24 <load_store\+0x24> 6d ?30 ?b4 ?ff ? * cfldrsvs mvf11, ?\[r0, #-1020\]!
0*28 <load_store\+0x28> 3c ?31 ?c4 ?27 ? * cfldrscc mvf12, ?\[r1\], #-156
0*2c <load_store\+0x2c> ec ?bf ?d4 ?68 ? * cfldrs mvf13, ?\[pc\], #416
0*2c <load_store\+0x2c> ec ?b9 ?d4 ?68 ? * cfldrs mvf13, ?\[r9\], #416
0*30 <load_store\+0x30> 2c ?30 ?94 ?ff ? * cfldrscs mvf9, ?\[r0\], #-1020
0*34 <load_store\+0x34> 9c ?31 ?44 ?27 ? * cfldrsls mvf4, ?\[r1\], #-156
0*38 <load_store\+0x38> dc ?bf ?74 ?68 ? * cfldrsle mvf7, ?\[pc\], #416
0*38 <load_store\+0x38> dc ?b9 ?74 ?68 ? * cfldrsle mvf7, ?\[r9\], #416
0*3c <load_store\+0x3c> 6d ?50 ?b4 ?ff ? * cfldrdvs mvd11, ?\[r0, #-1020\]
0*40 <load_store\+0x40> 3d ?51 ?c4 ?27 ? * cfldrdcc mvd12, ?\[r1, #-156\]
0*44 <load_store\+0x44> ed ?df ?d4 ?68 ? * cfldrd mvd13, ?\[pc, #416\]
0*44 <load_store\+0x44> ed ?d9 ?d4 ?68 ? * cfldrd mvd13, ?\[r9, #416\]
0*48 <load_store\+0x48> 2d ?50 ?94 ?ff ? * cfldrdcs mvd9, ?\[r0, #-1020\]
0*4c <load_store\+0x4c> 9d ?51 ?44 ?27 ? * cfldrdls mvd4, ?\[r1, #-156\]
0*50 <load_store\+0x50> dd ?ff ?74 ?68 ? * cfldrdle mvd7, ?\[pc, #416\]!
0*50 <load_store\+0x50> dd ?f9 ?74 ?68 ? * cfldrdle mvd7, ?\[r9, #416\]!
0*54 <load_store\+0x54> 6d ?70 ?b4 ?ff ? * cfldrdvs mvd11, ?\[r0, #-1020\]!
0*58 <load_store\+0x58> 3d ?71 ?c4 ?27 ? * cfldrdcc mvd12, ?\[r1, #-156\]!
0*5c <load_store\+0x5c> ed ?ff ?d4 ?68 ? * cfldrd mvd13, ?\[pc, #416\]!
0*5c <load_store\+0x5c> ed ?f9 ?d4 ?68 ? * cfldrd mvd13, ?\[r9, #416\]!
0*60 <load_store\+0x60> 2d ?70 ?94 ?ff ? * cfldrdcs mvd9, ?\[r0, #-1020\]!
0*64 <load_store\+0x64> 9c ?71 ?44 ?27 ? * cfldrdls mvd4, ?\[r1\], #-156
0*68 <load_store\+0x68> dc ?ff ?74 ?68 ? * cfldrdle mvd7, ?\[pc\], #416
0*68 <load_store\+0x68> dc ?f9 ?74 ?68 ? * cfldrdle mvd7, ?\[r9\], #416
0*6c <load_store\+0x6c> 6c ?70 ?b4 ?ff ? * cfldrdvs mvd11, ?\[r0\], #-1020
0*70 <load_store\+0x70> 3c ?71 ?c4 ?27 ? * cfldrdcc mvd12, ?\[r1\], #-156
0*74 <load_store\+0x74> ec ?ff ?d4 ?68 ? * cfldrd mvd13, ?\[pc\], #416
0*74 <load_store\+0x74> ec ?f9 ?d4 ?68 ? * cfldrd mvd13, ?\[r9\], #416
0*78 <load_store\+0x78> 2d ?10 ?95 ?ff ? * cfldr32cs mvfx9, ?\[r0, #-1020\]
0*7c <load_store\+0x7c> 9d ?11 ?45 ?27 ? * cfldr32ls mvfx4, ?\[r1, #-156\]
0*80 <load_store\+0x80> dd ?9f ?75 ?68 ? * cfldr32le mvfx7, ?\[pc, #416\]
0*80 <load_store\+0x80> dd ?99 ?75 ?68 ? * cfldr32le mvfx7, ?\[r9, #416\]
0*84 <load_store\+0x84> 6d ?10 ?b5 ?ff ? * cfldr32vs mvfx11, ?\[r0, #-1020\]
0*88 <load_store\+0x88> 3d ?11 ?c5 ?27 ? * cfldr32cc mvfx12, ?\[r1, #-156\]
0*8c <load_store\+0x8c> ed ?bf ?d5 ?68 ? * cfldr32 mvfx13, ?\[pc, #416\]!
0*8c <load_store\+0x8c> ed ?b9 ?d5 ?68 ? * cfldr32 mvfx13, ?\[r9, #416\]!
0*90 <load_store\+0x90> 2d ?30 ?95 ?ff ? * cfldr32cs mvfx9, ?\[r0, #-1020\]!
0*94 <load_store\+0x94> 9d ?31 ?45 ?27 ? * cfldr32ls mvfx4, ?\[r1, #-156\]!
0*98 <load_store\+0x98> dd ?bf ?75 ?68 ? * cfldr32le mvfx7, ?\[pc, #416\]!
0*98 <load_store\+0x98> dd ?b9 ?75 ?68 ? * cfldr32le mvfx7, ?\[r9, #416\]!
0*9c <load_store\+0x9c> 6d ?30 ?b5 ?ff ? * cfldr32vs mvfx11, ?\[r0, #-1020\]!
0*a0 <load_store\+0xa0> 3c ?31 ?c5 ?27 ? * cfldr32cc mvfx12, ?\[r1\], #-156
0*a4 <load_store\+0xa4> ec ?bf ?d5 ?68 ? * cfldr32 mvfx13, ?\[pc\], #416
0*a4 <load_store\+0xa4> ec ?b9 ?d5 ?68 ? * cfldr32 mvfx13, ?\[r9\], #416
0*a8 <load_store\+0xa8> 2c ?30 ?95 ?ff ? * cfldr32cs mvfx9, ?\[r0\], #-1020
0*ac <load_store\+0xac> 9c ?31 ?45 ?27 ? * cfldr32ls mvfx4, ?\[r1\], #-156
0*b0 <load_store\+0xb0> dc ?bf ?75 ?68 ? * cfldr32le mvfx7, ?\[pc\], #416
0*b0 <load_store\+0xb0> dc ?b9 ?75 ?68 ? * cfldr32le mvfx7, ?\[r9\], #416
0*b4 <load_store\+0xb4> 6d ?50 ?b5 ?ff ? * cfldr64vs mvdx11, ?\[r0, #-1020\]
0*b8 <load_store\+0xb8> 3d ?51 ?c5 ?27 ? * cfldr64cc mvdx12, ?\[r1, #-156\]
0*bc <load_store\+0xbc> ed ?df ?d5 ?68 ? * cfldr64 mvdx13, ?\[pc, #416\]
0*bc <load_store\+0xbc> ed ?d9 ?d5 ?68 ? * cfldr64 mvdx13, ?\[r9, #416\]
0*c0 <load_store\+0xc0> 2d ?50 ?95 ?ff ? * cfldr64cs mvdx9, ?\[r0, #-1020\]
0*c4 <load_store\+0xc4> 9d ?51 ?45 ?27 ? * cfldr64ls mvdx4, ?\[r1, #-156\]
0*c8 <load_store\+0xc8> dd ?ff ?75 ?68 ? * cfldr64le mvdx7, ?\[pc, #416\]!
0*c8 <load_store\+0xc8> dd ?f9 ?75 ?68 ? * cfldr64le mvdx7, ?\[r9, #416\]!
0*cc <load_store\+0xcc> 6d ?70 ?b5 ?ff ? * cfldr64vs mvdx11, ?\[r0, #-1020\]!
0*d0 <load_store\+0xd0> 3d ?71 ?c5 ?27 ? * cfldr64cc mvdx12, ?\[r1, #-156\]!
0*d4 <load_store\+0xd4> ed ?ff ?d5 ?68 ? * cfldr64 mvdx13, ?\[pc, #416\]!
0*d4 <load_store\+0xd4> ed ?f9 ?d5 ?68 ? * cfldr64 mvdx13, ?\[r9, #416\]!
0*d8 <load_store\+0xd8> 2d ?70 ?95 ?ff ? * cfldr64cs mvdx9, ?\[r0, #-1020\]!
0*dc <load_store\+0xdc> 9c ?71 ?45 ?27 ? * cfldr64ls mvdx4, ?\[r1\], #-156
0*e0 <load_store\+0xe0> dc ?ff ?75 ?68 ? * cfldr64le mvdx7, ?\[pc\], #416
0*e0 <load_store\+0xe0> dc ?f9 ?75 ?68 ? * cfldr64le mvdx7, ?\[r9\], #416
0*e4 <load_store\+0xe4> 6c ?70 ?b5 ?ff ? * cfldr64vs mvdx11, ?\[r0\], #-1020
0*e8 <load_store\+0xe8> 3c ?71 ?c5 ?27 ? * cfldr64cc mvdx12, ?\[r1\], #-156
0*ec <load_store\+0xec> ec ?ff ?d5 ?68 ? * cfldr64 mvdx13, ?\[pc\], #416
0*ec <load_store\+0xec> ec ?f9 ?d5 ?68 ? * cfldr64 mvdx13, ?\[r9\], #416
0*f0 <load_store\+0xf0> 2d ?00 ?94 ?ff ? * cfstrscs mvf9, ?\[r0, #-1020\]
0*f4 <load_store\+0xf4> 9d ?01 ?44 ?27 ? * cfstrsls mvf4, ?\[r1, #-156\]
0*f8 <load_store\+0xf8> dd ?8f ?74 ?68 ? * cfstrsle mvf7, ?\[pc, #416\]
0*f8 <load_store\+0xf8> dd ?89 ?74 ?68 ? * cfstrsle mvf7, ?\[r9, #416\]
0*fc <load_store\+0xfc> 6d ?00 ?b4 ?ff ? * cfstrsvs mvf11, ?\[r0, #-1020\]
0*100 <load_store\+0x100> 3d ?01 ?c4 ?27 ? * cfstrscc mvf12, ?\[r1, #-156\]
0*104 <load_store\+0x104> ed ?af ?d4 ?68 ? * cfstrs mvf13, ?\[pc, #416\]!
0*104 <load_store\+0x104> ed ?a9 ?d4 ?68 ? * cfstrs mvf13, ?\[r9, #416\]!
0*108 <load_store\+0x108> 2d ?20 ?94 ?ff ? * cfstrscs mvf9, ?\[r0, #-1020\]!
0*10c <load_store\+0x10c> 9d ?21 ?44 ?27 ? * cfstrsls mvf4, ?\[r1, #-156\]!
0*110 <load_store\+0x110> dd ?af ?74 ?68 ? * cfstrsle mvf7, ?\[pc, #416\]!
0*110 <load_store\+0x110> dd ?a9 ?74 ?68 ? * cfstrsle mvf7, ?\[r9, #416\]!
0*114 <load_store\+0x114> 6d ?20 ?b4 ?ff ? * cfstrsvs mvf11, ?\[r0, #-1020\]!
0*118 <load_store\+0x118> 3c ?21 ?c4 ?27 ? * cfstrscc mvf12, ?\[r1\], #-156
0*11c <load_store\+0x11c> ec ?af ?d4 ?68 ? * cfstrs mvf13, ?\[pc\], #416
0*11c <load_store\+0x11c> ec ?a9 ?d4 ?68 ? * cfstrs mvf13, ?\[r9\], #416
0*120 <load_store\+0x120> 2c ?20 ?94 ?ff ? * cfstrscs mvf9, ?\[r0\], #-1020
0*124 <load_store\+0x124> 9c ?21 ?44 ?27 ? * cfstrsls mvf4, ?\[r1\], #-156
0*128 <load_store\+0x128> dc ?af ?74 ?68 ? * cfstrsle mvf7, ?\[pc\], #416
0*128 <load_store\+0x128> dc ?a9 ?74 ?68 ? * cfstrsle mvf7, ?\[r9\], #416
0*12c <load_store\+0x12c> 6d ?40 ?b4 ?ff ? * cfstrdvs mvd11, ?\[r0, #-1020\]
0*130 <load_store\+0x130> 3d ?41 ?c4 ?27 ? * cfstrdcc mvd12, ?\[r1, #-156\]
0*134 <load_store\+0x134> ed ?cf ?d4 ?68 ? * cfstrd mvd13, ?\[pc, #416\]
0*134 <load_store\+0x134> ed ?c9 ?d4 ?68 ? * cfstrd mvd13, ?\[r9, #416\]
0*138 <load_store\+0x138> 2d ?40 ?94 ?ff ? * cfstrdcs mvd9, ?\[r0, #-1020\]
0*13c <load_store\+0x13c> 9d ?41 ?44 ?27 ? * cfstrdls mvd4, ?\[r1, #-156\]
0*140 <load_store\+0x140> dd ?ef ?74 ?68 ? * cfstrdle mvd7, ?\[pc, #416\]!
0*140 <load_store\+0x140> dd ?e9 ?74 ?68 ? * cfstrdle mvd7, ?\[r9, #416\]!
0*144 <load_store\+0x144> 6d ?60 ?b4 ?ff ? * cfstrdvs mvd11, ?\[r0, #-1020\]!
0*148 <load_store\+0x148> 3d ?61 ?c4 ?27 ? * cfstrdcc mvd12, ?\[r1, #-156\]!
0*14c <load_store\+0x14c> ed ?ef ?d4 ?68 ? * cfstrd mvd13, ?\[pc, #416\]!
0*14c <load_store\+0x14c> ed ?e9 ?d4 ?68 ? * cfstrd mvd13, ?\[r9, #416\]!
0*150 <load_store\+0x150> 2d ?60 ?94 ?ff ? * cfstrdcs mvd9, ?\[r0, #-1020\]!
0*154 <load_store\+0x154> 9c ?61 ?44 ?27 ? * cfstrdls mvd4, ?\[r1\], #-156
0*158 <load_store\+0x158> dc ?ef ?74 ?68 ? * cfstrdle mvd7, ?\[pc\], #416
0*158 <load_store\+0x158> dc ?e9 ?74 ?68 ? * cfstrdle mvd7, ?\[r9\], #416
0*15c <load_store\+0x15c> 6c ?60 ?b4 ?ff ? * cfstrdvs mvd11, ?\[r0\], #-1020
0*160 <load_store\+0x160> 3c ?61 ?c4 ?27 ? * cfstrdcc mvd12, ?\[r1\], #-156
0*164 <load_store\+0x164> ec ?ef ?d4 ?68 ? * cfstrd mvd13, ?\[pc\], #416
0*164 <load_store\+0x164> ec ?e9 ?d4 ?68 ? * cfstrd mvd13, ?\[r9\], #416
0*168 <load_store\+0x168> 2d ?00 ?95 ?ff ? * cfstr32cs mvfx9, ?\[r0, #-1020\]
0*16c <load_store\+0x16c> 9d ?01 ?45 ?27 ? * cfstr32ls mvfx4, ?\[r1, #-156\]
0*170 <load_store\+0x170> dd ?8f ?75 ?68 ? * cfstr32le mvfx7, ?\[pc, #416\]
0*170 <load_store\+0x170> dd ?89 ?75 ?68 ? * cfstr32le mvfx7, ?\[r9, #416\]
0*174 <load_store\+0x174> 6d ?00 ?b5 ?ff ? * cfstr32vs mvfx11, ?\[r0, #-1020\]
0*178 <load_store\+0x178> 3d ?01 ?c5 ?27 ? * cfstr32cc mvfx12, ?\[r1, #-156\]
0*17c <load_store\+0x17c> ed ?af ?d5 ?68 ? * cfstr32 mvfx13, ?\[pc, #416\]!
0*17c <load_store\+0x17c> ed ?a9 ?d5 ?68 ? * cfstr32 mvfx13, ?\[r9, #416\]!
0*180 <load_store\+0x180> 2d ?20 ?95 ?ff ? * cfstr32cs mvfx9, ?\[r0, #-1020\]!
0*184 <load_store\+0x184> 9d ?21 ?45 ?27 ? * cfstr32ls mvfx4, ?\[r1, #-156\]!
0*188 <load_store\+0x188> dd ?af ?75 ?68 ? * cfstr32le mvfx7, ?\[pc, #416\]!
0*188 <load_store\+0x188> dd ?a9 ?75 ?68 ? * cfstr32le mvfx7, ?\[r9, #416\]!
0*18c <load_store\+0x18c> 6d ?20 ?b5 ?ff ? * cfstr32vs mvfx11, ?\[r0, #-1020\]!
0*190 <load_store\+0x190> 3c ?21 ?c5 ?27 ? * cfstr32cc mvfx12, ?\[r1\], #-156
0*194 <load_store\+0x194> ec ?af ?d5 ?68 ? * cfstr32 mvfx13, ?\[pc\], #416
0*194 <load_store\+0x194> ec ?a9 ?d5 ?68 ? * cfstr32 mvfx13, ?\[r9\], #416
0*198 <load_store\+0x198> 2c ?20 ?95 ?ff ? * cfstr32cs mvfx9, ?\[r0\], #-1020
0*19c <load_store\+0x19c> 9c ?21 ?45 ?27 ? * cfstr32ls mvfx4, ?\[r1\], #-156
0*1a0 <load_store\+0x1a0> dc ?af ?75 ?68 ? * cfstr32le mvfx7, ?\[pc\], #416
0*1a0 <load_store\+0x1a0> dc ?a9 ?75 ?68 ? * cfstr32le mvfx7, ?\[r9\], #416
0*1a4 <load_store\+0x1a4> 6d ?40 ?b5 ?ff ? * cfstr64vs mvdx11, ?\[r0, #-1020\]
0*1a8 <load_store\+0x1a8> 3d ?41 ?c5 ?27 ? * cfstr64cc mvdx12, ?\[r1, #-156\]
0*1ac <load_store\+0x1ac> ed ?cf ?d5 ?68 ? * cfstr64 mvdx13, ?\[pc, #416\]
0*1ac <load_store\+0x1ac> ed ?c9 ?d5 ?68 ? * cfstr64 mvdx13, ?\[r9, #416\]
0*1b0 <load_store\+0x1b0> 2d ?40 ?95 ?ff ? * cfstr64cs mvdx9, ?\[r0, #-1020\]
0*1b4 <load_store\+0x1b4> 9d ?41 ?45 ?27 ? * cfstr64ls mvdx4, ?\[r1, #-156\]
0*1b8 <load_store\+0x1b8> dd ?ef ?75 ?68 ? * cfstr64le mvdx7, ?\[pc, #416\]!
0*1b8 <load_store\+0x1b8> dd ?e9 ?75 ?68 ? * cfstr64le mvdx7, ?\[r9, #416\]!
0*1bc <load_store\+0x1bc> 6d ?60 ?b5 ?ff ? * cfstr64vs mvdx11, ?\[r0, #-1020\]!
0*1c0 <load_store\+0x1c0> 3d ?61 ?c5 ?27 ? * cfstr64cc mvdx12, ?\[r1, #-156\]!
0*1c4 <load_store\+0x1c4> ed ?ef ?d5 ?68 ? * cfstr64 mvdx13, ?\[pc, #416\]!
0*1c4 <load_store\+0x1c4> ed ?e9 ?d5 ?68 ? * cfstr64 mvdx13, ?\[r9, #416\]!
0*1c8 <load_store\+0x1c8> 2d ?60 ?95 ?ff ? * cfstr64cs mvdx9, ?\[r0, #-1020\]!
0*1cc <load_store\+0x1cc> 9c ?61 ?45 ?27 ? * cfstr64ls mvdx4, ?\[r1\], #-156
0*1d0 <load_store\+0x1d0> dc ?ef ?75 ?68 ? * cfstr64le mvdx7, ?\[pc\], #416
0*1d0 <load_store\+0x1d0> dc ?e9 ?75 ?68 ? * cfstr64le mvdx7, ?\[r9\], #416
0*1d4 <load_store\+0x1d4> 6c ?60 ?b5 ?ff ? * cfstr64vs mvdx11, ?\[r0\], #-1020
0*1d8 <load_store\+0x1d8> 3c ?61 ?c5 ?27 ? * cfstr64cc mvdx12, ?\[r1\], #-156
0*1dc <load_store\+0x1dc> ec ?ef ?d5 ?68 ? * cfstr64 mvdx13, ?\[pc\], #416
0*1dc <load_store\+0x1dc> ec ?e9 ?d5 ?68 ? * cfstr64 mvdx13, ?\[r9\], #416
# move:
0*1e0 <move> 2e ?09 ?04 ?50 ? * cfmvsrcs mvf9, ?r0
0*1e4 <move\+0x4> 5e ?0f ?74 ?50 ? * cfmvsrpl mvf15, ?r7

View File

@ -6,121 +6,121 @@ load_store:
cfldrsvc mvf2, [r12, #-956]
cfldrslt mvf0, [sl, #-1020]
cfldrscc mvf12, [r1, #-156]
cfldrs mvf13, [r15, #416]!
cfldrs mvf13, [r9, #416]!
cfldrscs mvf9, [r0, #-1020]!
cfldrsls mvf4, [r1, #-156]!
cfldrsle mvf7, [pc, #416]!
cfldrsle mvf7, [r9, #416]!
cfldrsvs mvf11, [r0, #-1020]!
cfldrscc mvf12, [r1], #-156
cfldrs mvf13, [r15], #416
cfldrs mvf13, [r9], #416
cfldrscs mvf9, [r0], #-1020
cfldrsls mvf4, [r1], #-156
cfldrsle mvf7, [pc], #416
cfldrsle mvf7, [r9], #416
cfldrdvs mvd11, [r0, #-1020]
cfldrdcc mvd12, [r1, #-156]
cfldrd mvd13, [r15, #416]
cfldrd mvd13, [r9, #416]
cfldrdcs mvd9, [r0, #-1020]
cfldrdls mvd4, [r1, #-156]
cfldrdle mvd7, [pc, #416]!
cfldrdle mvd7, [r9, #416]!
cfldrdvs mvd11, [r0, #-1020]!
cfldrdcc mvd12, [r1, #-156]!
cfldrd mvd13, [r15, #416]!
cfldrd mvd13, [r9, #416]!
cfldrdcs mvd9, [r0, #-1020]!
cfldrdls mvd4, [r1], #-156
cfldrdle mvd7, [pc], #416
cfldrdle mvd7, [r9], #416
cfldrdvs mvd11, [r0], #-1020
cfldrdcc mvd12, [r1], #-156
cfldrd mvd13, [r15], #416
cfldrd mvd13, [r9], #416
cfldr32cs mvfx9, [r0, #-1020]
cfldr32ls mvfx4, [r1, #-156]
cfldr32le mvfx7, [pc, #416]
cfldr32le mvfx7, [r9, #416]
cfldr32vs mvfx11, [r0, #-1020]
cfldr32cc mvfx12, [r1, #-156]
cfldr32 mvfx13, [r15, #416]!
cfldr32 mvfx13, [r9, #416]!
cfldr32cs mvfx9, [r0, #-1020]!
cfldr32ls mvfx4, [r1, #-156]!
cfldr32le mvfx7, [pc, #416]!
cfldr32le mvfx7, [r9, #416]!
cfldr32vs mvfx11, [r0, #-1020]!
cfldr32cc mvfx12, [r1], #-156
cfldr32 mvfx13, [r15], #416
cfldr32 mvfx13, [r9], #416
cfldr32cs mvfx9, [r0], #-1020
cfldr32ls mvfx4, [r1], #-156
cfldr32le mvfx7, [pc], #416
cfldr32le mvfx7, [r9], #416
cfldr64vs mvdx11, [r0, #-1020]
cfldr64cc mvdx12, [r1, #-156]
cfldr64 mvdx13, [r15, #416]
cfldr64 mvdx13, [r9, #416]
cfldr64cs mvdx9, [r0, #-1020]
cfldr64ls mvdx4, [r1, #-156]
cfldr64le mvdx7, [pc, #416]!
cfldr64le mvdx7, [r9, #416]!
cfldr64vs mvdx11, [r0, #-1020]!
cfldr64cc mvdx12, [r1, #-156]!
cfldr64 mvdx13, [r15, #416]!
cfldr64 mvdx13, [r9, #416]!
cfldr64cs mvdx9, [r0, #-1020]!
cfldr64ls mvdx4, [r1], #-156
cfldr64le mvdx7, [pc], #416
cfldr64le mvdx7, [r9], #416
cfldr64vs mvdx11, [r0], #-1020
cfldr64cc mvdx12, [r1], #-156
cfldr64 mvdx13, [r15], #416
cfldr64 mvdx13, [r9], #416
cfstrscs mvf9, [r0, #-1020]
cfstrsls mvf4, [r1, #-156]
cfstrsle mvf7, [pc, #416]
cfstrsle mvf7, [r9, #416]
cfstrsvs mvf11, [r0, #-1020]
cfstrscc mvf12, [r1, #-156]
cfstrs mvf13, [r15, #416]!
cfstrs mvf13, [r9, #416]!
cfstrscs mvf9, [r0, #-1020]!
cfstrsls mvf4, [r1, #-156]!
cfstrsle mvf7, [pc, #416]!
cfstrsle mvf7, [r9, #416]!
cfstrsvs mvf11, [r0, #-1020]!
cfstrscc mvf12, [r1], #-156
cfstrs mvf13, [r15], #416
cfstrs mvf13, [r9], #416
cfstrscs mvf9, [r0], #-1020
cfstrsls mvf4, [r1], #-156
cfstrsle mvf7, [pc], #416
cfstrsle mvf7, [r9], #416
cfstrdvs mvd11, [r0, #-1020]
cfstrdcc mvd12, [r1, #-156]
cfstrd mvd13, [r15, #416]
cfstrd mvd13, [r9, #416]
cfstrdcs mvd9, [r0, #-1020]
cfstrdls mvd4, [r1, #-156]
cfstrdle mvd7, [pc, #416]!
cfstrdle mvd7, [r9, #416]!
cfstrdvs mvd11, [r0, #-1020]!
cfstrdcc mvd12, [r1, #-156]!
cfstrd mvd13, [r15, #416]!
cfstrd mvd13, [r9, #416]!
cfstrdcs mvd9, [r0, #-1020]!
cfstrdls mvd4, [r1], #-156
cfstrdle mvd7, [pc], #416
cfstrdle mvd7, [r9], #416
cfstrdvs mvd11, [r0], #-1020
cfstrdcc mvd12, [r1], #-156
cfstrd mvd13, [r15], #416
cfstrd mvd13, [r9], #416
cfstr32cs mvfx9, [r0, #-1020]
cfstr32ls mvfx4, [r1, #-156]
cfstr32le mvfx7, [pc, #416]
cfstr32le mvfx7, [r9, #416]
cfstr32vs mvfx11, [r0, #-1020]
cfstr32cc mvfx12, [r1, #-156]
cfstr32 mvfx13, [r15, #416]!
cfstr32 mvfx13, [r9, #416]!
cfstr32cs mvfx9, [r0, #-1020]!
cfstr32ls mvfx4, [r1, #-156]!
cfstr32le mvfx7, [pc, #416]!
cfstr32le mvfx7, [r9, #416]!
cfstr32vs mvfx11, [r0, #-1020]!
cfstr32cc mvfx12, [r1], #-156
cfstr32 mvfx13, [r15], #416
cfstr32 mvfx13, [r9], #416
cfstr32cs mvfx9, [r0], #-1020
cfstr32ls mvfx4, [r1], #-156
cfstr32le mvfx7, [pc], #416
cfstr32le mvfx7, [r9], #416
cfstr64vs mvdx11, [r0, #-1020]
cfstr64cc mvdx12, [r1, #-156]
cfstr64 mvdx13, [r15, #416]
cfstr64 mvdx13, [r9, #416]
cfstr64cs mvdx9, [r0, #-1020]
cfstr64ls mvdx4, [r1, #-156]
cfstr64le mvdx7, [pc, #416]!
cfstr64le mvdx7, [r9, #416]!
cfstr64vs mvdx11, [r0, #-1020]!
cfstr64cc mvdx12, [r1, #-156]!
cfstr64 mvdx13, [r15, #416]!
cfstr64 mvdx13, [r9, #416]!
cfstr64cs mvdx9, [r0, #-1020]!
cfstr64ls mvdx4, [r1], #-156
cfstr64le mvdx7, [pc], #416
cfstr64le mvdx7, [r9], #416
cfstr64vs mvdx11, [r0], #-1020
cfstr64cc mvdx12, [r1], #-156
cfstr64 mvdx13, [r15], #416
cfstr64 mvdx13, [r9], #416
move:
cfmvsrcs mvf9, r0
cfmvsrpl mvf15, r7

View File

@ -0,0 +1,11 @@
# name: OFFSET_IMM regression
# as:
# objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+0 <[^>]+> e51f0004 ? ldr r0, \[pc, #-4\] ; 0+4 <[^>]+>
0+4 <[^>]+> e1a00000 ? nop \(mov r0,r0\)
0+8 <[^>]+> e1a00000 ? nop \(mov r0,r0\)
0+c <[^>]+> e1a00000 ? nop \(mov r0,r0\)

View File

@ -1,5 +1,14 @@
@ test for OFFSET_IMM reloc against global symbols
@ test that an OFFSET_IMM reloc against a global symbol is
@ still resolved by the assembler, as long as the symbol is in
@ the same section as the reference
.text
.globl l
.globl foo
l:
ldr r0, foo
foo:
nop
.globl foo
foo: .word 0
ldr r0, foo
@ pad section for a.out's benefit
nop
nop

View File

@ -13,7 +13,7 @@ Disassembly of section .text:
\.\.\.
8: R_ARM_ABS32 sym
c: R_ARM_GOT32 sym
10: R_ARM_GOTOFF sym
10: R_ARM_GOTOFF32 sym
14: R_ARM_GOTPC _GLOBAL_OFFSET_TABLE_
18: R_ARM_TARGET1 foo2
1c: R_ARM_SBREL32 foo3

View File

@ -1,6 +1,6 @@
[^:]*: Assembler messages:
[^:]*:5: Error: r15 not allowed here -- `mul r15,r1'
[^:]*:6: Error: r15 not allowed here -- `mul r1,r15'
[^:]*:5: Error: r15 not allowed here -- `mul r15,r1,r2'
[^:]*:6: Error: r15 not allowed here -- `mul r1,r15,r2'
[^:]*:7: Error: r15 not allowed here -- `mla r15,r2,r3,r4'
[^:]*:8: Error: r15 not allowed here -- `mla r1,r15,r3,r4'
[^:]*:9: Error: r15 not allowed here -- `mla r1,r2,r15,r4'
@ -59,6 +59,6 @@
[^:]*:62: Error: r15 not allowed here -- `pkhtb r1,r2,r15'
[^:]*:63: Error: r15 not allowed here -- `ldrex r15,[[]r2[]]'
[^:]*:64: Error: r15 not allowed here -- `ldrex r1,[[]r15[]]'
[^:]*:65: Error: r15 not allowed in swap -- `swp r15,r2,[[]r3[]]'
[^:]*:66: Error: r15 not allowed in swap -- `swp r1,r15,[[]r3[]]'
[^:]*:65: Error: r15 not allowed here -- `swp r15,r2,[[]r3[]]'
[^:]*:66: Error: r15 not allowed here -- `swp r1,r15,[[]r3[]]'
[^:]*:67: Error: r15 not allowed here -- `swp r1,r2,[[]r15[]]'

View File

@ -2,8 +2,8 @@
.align 0
label:
mul r15, r1
mul r1, r15
mul r15, r1, r2
mul r1, r15, r2
mla r15, r2, r3, r4
mla r1, r15, r3, r4
mla r1, r2, r15, r4

View File

@ -1,3 +1,3 @@
[^:]*: Assembler messages:
[^:]*:18: Error: register expected, not 'foo,foo,foo' -- `add foo,foo,foo'
[^:]*:24: Error: register expected, not 'r0,r0,r0' -- `add r0,r0,r0'
[^:]*:18: Error: ARM register expected -- `add foo,foo,foo'
[^:]*:21: Warning: ignoring attempt to undefine built-in register 'r0'

View File

@ -2,7 +2,7 @@
.global test_dot_req_and_unreq
test_dot_req_and_unreq:
# Check that builtin register alias 'r0' works.
# Check that builtin register alias 'r0' works.
add r0, r0, r0
# Create an alias for r0.
@ -17,9 +17,9 @@ test_dot_req_and_unreq:
# And make sure that it no longer works.
add foo, foo, foo
# Finally remove the builtin alias for r0.
# Attempt to remove the builtin alias for r0.
.unreq r0
# And make sure that this no longer works.
# That is ignored, so this should still work.
add r0, r0, r0

View File

@ -0,0 +1,186 @@
[^:]*: Assembler messages:
[^:]*:36: Error: lo register required -- `tst r8,r0'
[^:]*:36: Error: lo register required -- `tst r0,r8'
[^:]*:36: Error: unshifted register required -- `tst r0,#12'
[^:]*:36: Error: unshifted register required -- `tst r0,r1,lsl#2'
[^:]*:36: Error: unshifted register required -- `tst r0,r1,lsl r3'
[^:]*:37: Error: lo register required -- `cmn r8,r0'
[^:]*:37: Error: lo register required -- `cmn r0,r8'
[^:]*:37: Error: unshifted register required -- `cmn r0,#12'
[^:]*:37: Error: unshifted register required -- `cmn r0,r1,lsl#2'
[^:]*:37: Error: unshifted register required -- `cmn r0,r1,lsl r3'
[^:]*:38: Error: lo register required -- `mvn r8,r0'
[^:]*:38: Error: lo register required -- `mvn r0,r8'
[^:]*:38: Error: unshifted register required -- `mvn r0,#12'
[^:]*:38: Error: unshifted register required -- `mvn r0,r1,lsl#2'
[^:]*:38: Error: unshifted register required -- `mvn r0,r1,lsl r3'
[^:]*:39: Error: lo register required -- `neg r8,r0'
[^:]*:39: Error: lo register required -- `neg r0,r8'
[^:]*:40: Error: lo register required -- `rev r8,r0'
[^:]*:40: Error: lo register required -- `rev r0,r8'
[^:]*:41: Error: lo register required -- `rev16 r8,r0'
[^:]*:41: Error: lo register required -- `rev16 r0,r8'
[^:]*:42: Error: lo register required -- `revsh r8,r0'
[^:]*:42: Error: lo register required -- `revsh r0,r8'
[^:]*:43: Error: lo register required -- `sxtb r8,r0'
[^:]*:43: Error: lo register required -- `sxtb r0,r8'
[^:]*:43: Error: Thumb encoding does not support rotation -- `sxtb r0,r1,ror#8'
[^:]*:44: Error: lo register required -- `sxth r8,r0'
[^:]*:44: Error: lo register required -- `sxth r0,r8'
[^:]*:44: Error: Thumb encoding does not support rotation -- `sxth r0,r1,ror#8'
[^:]*:45: Error: lo register required -- `uxtb r8,r0'
[^:]*:45: Error: lo register required -- `uxtb r0,r8'
[^:]*:45: Error: Thumb encoding does not support rotation -- `uxtb r0,r1,ror#8'
[^:]*:46: Error: lo register required -- `uxth r8,r0'
[^:]*:46: Error: lo register required -- `uxth r0,r8'
[^:]*:46: Error: Thumb encoding does not support rotation -- `uxth r0,r1,ror#8'
[^:]*:48: Error: dest must overlap one source register -- `adc r1,r2,r3'
[^:]*:48: Error: lo register required -- `adc r8,r0'
[^:]*:48: Error: lo register required -- `adc r0,r8'
[^:]*:48: Error: unshifted register required -- `adc r0,#12'
[^:]*:48: Error: unshifted register required -- `adc r0,r1,lsl#2'
[^:]*:48: Error: unshifted register required -- `adc r0,r1,lsl r3'
[^:]*:49: Error: dest must overlap one source register -- `and r1,r2,r3'
[^:]*:49: Error: lo register required -- `and r8,r0'
[^:]*:49: Error: lo register required -- `and r0,r8'
[^:]*:49: Error: unshifted register required -- `and r0,#12'
[^:]*:49: Error: unshifted register required -- `and r0,r1,lsl#2'
[^:]*:49: Error: unshifted register required -- `and r0,r1,lsl r3'
[^:]*:50: Error: dest and source1 must be the same register -- `bic r1,r2,r3'
[^:]*:50: Error: lo register required -- `bic r8,r0'
[^:]*:50: Error: lo register required -- `bic r0,r8'
[^:]*:50: Error: unshifted register required -- `bic r0,#12'
[^:]*:50: Error: unshifted register required -- `bic r0,r1,lsl#2'
[^:]*:50: Error: unshifted register required -- `bic r0,r1,lsl r3'
[^:]*:51: Error: dest must overlap one source register -- `eor r1,r2,r3'
[^:]*:51: Error: lo register required -- `eor r8,r0'
[^:]*:51: Error: lo register required -- `eor r0,r8'
[^:]*:51: Error: unshifted register required -- `eor r0,#12'
[^:]*:51: Error: unshifted register required -- `eor r0,r1,lsl#2'
[^:]*:51: Error: unshifted register required -- `eor r0,r1,lsl r3'
[^:]*:52: Error: dest must overlap one source register -- `orr r1,r2,r3'
[^:]*:52: Error: lo register required -- `orr r8,r0'
[^:]*:52: Error: lo register required -- `orr r0,r8'
[^:]*:52: Error: unshifted register required -- `orr r0,#12'
[^:]*:52: Error: unshifted register required -- `orr r0,r1,lsl#2'
[^:]*:52: Error: unshifted register required -- `orr r0,r1,lsl r3'
[^:]*:53: Error: dest and source1 must be the same register -- `sbc r1,r2,r3'
[^:]*:53: Error: lo register required -- `sbc r8,r0'
[^:]*:53: Error: lo register required -- `sbc r0,r8'
[^:]*:53: Error: unshifted register required -- `sbc r0,#12'
[^:]*:53: Error: unshifted register required -- `sbc r0,r1,lsl#2'
[^:]*:53: Error: unshifted register required -- `sbc r0,r1,lsl r3'
[^:]*:54: Error: dest must overlap one source register -- `mul r1,r2,r3'
[^:]*:54: Error: lo register required -- `mul r8,r0'
[^:]*:54: Error: lo register required -- `mul r0,r8'
[^:]*:62: Error: lo register required -- `asr r8,r0,#12'
[^:]*:62: Error: lo register required -- `asr r0,r8,#12'
[^:]*:62: Error: lo register required -- `asr r8,r0'
[^:]*:62: Error: lo register required -- `asr r0,r8'
[^:]*:63: Error: lo register required -- `lsl r8,r0,#12'
[^:]*:63: Error: lo register required -- `lsl r0,r8,#12'
[^:]*:63: Error: lo register required -- `lsl r8,r0'
[^:]*:63: Error: lo register required -- `lsl r0,r8'
[^:]*:64: Error: lo register required -- `lsr r8,r0,#12'
[^:]*:64: Error: lo register required -- `lsr r0,r8,#12'
[^:]*:64: Error: lo register required -- `lsr r8,r0'
[^:]*:64: Error: lo register required -- `lsr r0,r8'
[^:]*:65: Error: lo register required -- `ror r8,r0,#12'
[^:]*:65: Error: lo register required -- `ror r0,r8,#12'
[^:]*:65: Error: lo register required -- `ror r8,r0'
[^:]*:65: Error: lo register required -- `ror r0,r8'
[^:]*:66: Error: ror #imm not supported -- `ror r0,r1,#12'
[^:]*:69: Error: unshifted register required -- `add r0,r1,lsl#2'
[^:]*:70: Error: unshifted register required -- `add r0,r1,lsl r3'
[^:]*:71: Error: lo register required -- `add r8,r0,#1'
[^:]*:72: Error: lo register required -- `add r0,r8,#1'
[^:]*:73: Error: lo register required -- `add r8,#10'
[^:]*:74: Error: dest must overlap one source register -- `add r8,r1,r2'
[^:]*:75: Error: dest must overlap one source register -- `add r1,r8,r2'
[^:]*:76: Error: dest must overlap one source register -- `add r1,r2,r8'
[^:]*:77: Error: lo register required -- `add r8,pc,#4'
[^:]*:78: Error: lo register required -- `add r8,sp,#4'
[^:]*:80: Error: lo register required -- `sub r8,r0'
[^:]*:80: Error: lo register required -- `sub r0,r8'
[^:]*:80: Error: unshifted register required -- `sub r0,r1,lsl#2'
[^:]*:80: Error: unshifted register required -- `sub r0,r1,lsl r3'
[^:]*:81: Error: lo register required -- `sub r8,r0,#1'
[^:]*:82: Error: lo register required -- `sub r0,r8,#1'
[^:]*:83: Error: lo register required -- `sub r8,#10'
[^:]*:84: Error: lo register required -- `sub r8,r1,r2'
[^:]*:85: Error: lo register required -- `sub r1,r8,r2'
[^:]*:86: Error: lo register required -- `sub r1,r2,r8'
[^:]*:90: Error: only lo regs allowed with immediate -- `cmp r8,#255'
[^:]*:94: Error: only lo regs allowed with immediate -- `mov r8,#255'
[^:]*:106: Error: lo register required -- `ldr r8,\[r0\]'
[^:]*:106: Error: lo register required -- `ldr r0,\[r8\]'
[^:]*:106: Error: lo register required -- `ldr r0,\[r0,r8\]'
[^:]*:106: Error: Thumb does not support this addressing mode -- `ldr r0,\[r1,#4\]!'
[^:]*:106: Error: Thumb does not support this addressing mode -- `ldr r0,\[r1\],#4'
[^:]*:106: Error: Thumb does not support this addressing mode -- `ldr r0,\[r1,-r2\]'
[^:]*:106: Error: Thumb does not support this addressing mode -- `ldr r0,\[r1\],r2'
[^:]*:107: Error: lo register required -- `ldrb r8,\[r0\]'
[^:]*:107: Error: lo register required -- `ldrb r0,\[r8\]'
[^:]*:107: Error: lo register required -- `ldrb r0,\[r0,r8\]'
[^:]*:107: Error: Thumb does not support this addressing mode -- `ldrb r0,\[r1,#4\]!'
[^:]*:107: Error: Thumb does not support this addressing mode -- `ldrb r0,\[r1\],#4'
[^:]*:107: Error: Thumb does not support this addressing mode -- `ldrb r0,\[r1,-r2\]'
[^:]*:107: Error: Thumb does not support this addressing mode -- `ldrb r0,\[r1\],r2'
[^:]*:108: Error: lo register required -- `ldrh r8,\[r0\]'
[^:]*:108: Error: lo register required -- `ldrh r0,\[r8\]'
[^:]*:108: Error: lo register required -- `ldrh r0,\[r0,r8\]'
[^:]*:108: Error: Thumb does not support this addressing mode -- `ldrh r0,\[r1,#4\]!'
[^:]*:108: Error: Thumb does not support this addressing mode -- `ldrh r0,\[r1\],#4'
[^:]*:108: Error: Thumb does not support this addressing mode -- `ldrh r0,\[r1,-r2\]'
[^:]*:108: Error: Thumb does not support this addressing mode -- `ldrh r0,\[r1\],r2'
[^:]*:109: Error: lo register required -- `ldrsb r8,\[r0\]'
[^:]*:109: Error: lo register required -- `ldrsb r0,\[r8\]'
[^:]*:109: Error: lo register required -- `ldrsb r0,\[r0,r8\]'
[^:]*:109: Error: Thumb does not support this addressing mode -- `ldrsb r0,\[r1,#4\]!'
[^:]*:109: Error: Thumb does not support this addressing mode -- `ldrsb r0,\[r1\],#4'
[^:]*:109: Error: Thumb does not support this addressing mode -- `ldrsb r0,\[r1,-r2\]'
[^:]*:109: Error: Thumb does not support this addressing mode -- `ldrsb r0,\[r1\],r2'
[^:]*:110: Error: lo register required -- `ldrsh r8,\[r0\]'
[^:]*:110: Error: lo register required -- `ldrsh r0,\[r8\]'
[^:]*:110: Error: lo register required -- `ldrsh r0,\[r0,r8\]'
[^:]*:110: Error: Thumb does not support this addressing mode -- `ldrsh r0,\[r1,#4\]!'
[^:]*:110: Error: Thumb does not support this addressing mode -- `ldrsh r0,\[r1\],#4'
[^:]*:110: Error: Thumb does not support this addressing mode -- `ldrsh r0,\[r1,-r2\]'
[^:]*:110: Error: Thumb does not support this addressing mode -- `ldrsh r0,\[r1\],r2'
[^:]*:111: Error: lo register required -- `str r8,\[r0\]'
[^:]*:111: Error: lo register required -- `str r0,\[r8\]'
[^:]*:111: Error: lo register required -- `str r0,\[r0,r8\]'
[^:]*:111: Error: Thumb does not support this addressing mode -- `str r0,\[r1,#4\]!'
[^:]*:111: Error: Thumb does not support this addressing mode -- `str r0,\[r1\],#4'
[^:]*:111: Error: Thumb does not support this addressing mode -- `str r0,\[r1,-r2\]'
[^:]*:111: Error: Thumb does not support this addressing mode -- `str r0,\[r1\],r2'
[^:]*:112: Error: lo register required -- `strb r8,\[r0\]'
[^:]*:112: Error: lo register required -- `strb r0,\[r8\]'
[^:]*:112: Error: lo register required -- `strb r0,\[r0,r8\]'
[^:]*:112: Error: Thumb does not support this addressing mode -- `strb r0,\[r1,#4\]!'
[^:]*:112: Error: Thumb does not support this addressing mode -- `strb r0,\[r1\],#4'
[^:]*:112: Error: Thumb does not support this addressing mode -- `strb r0,\[r1,-r2\]'
[^:]*:112: Error: Thumb does not support this addressing mode -- `strb r0,\[r1\],r2'
[^:]*:113: Error: lo register required -- `strh r8,\[r0\]'
[^:]*:113: Error: lo register required -- `strh r0,\[r8\]'
[^:]*:113: Error: lo register required -- `strh r0,\[r0,r8\]'
[^:]*:113: Error: Thumb does not support this addressing mode -- `strh r0,\[r1,#4\]!'
[^:]*:113: Error: Thumb does not support this addressing mode -- `strh r0,\[r1\],#4'
[^:]*:113: Error: Thumb does not support this addressing mode -- `strh r0,\[r1,-r2\]'
[^:]*:113: Error: Thumb does not support this addressing mode -- `strh r0,\[r1\],r2'
[^:]*:115: Error: Thumb does not support this addressing mode -- `ldr r0,\[r1,r2,lsl#1\]'
[^:]*:116: Error: Thumb does not support this addressing mode -- `str r0,\[r1,r2,lsl#1\]'
[^:]*:119: Error: lo register required -- `ldmia r8!,{r1,r2}'
[^:]*:120: Error: lo register required -- `ldmia r7!,{r8}'
[^:]*:121: Warning: this instruction will write back the base register
[^:]*:122: Warning: this instruction will not write back the base register
[^:]*:124: Error: lo register required -- `stmia r8!,{r1,r2}'
[^:]*:125: Error: lo register required -- `stmia r7!,{r8}'
[^:]*:126: Warning: this instruction will write back the base register
[^:]*:127: Warning: value stored for r7 is UNPREDICTABLE
[^:]*:129: Error: invalid register list to push/pop instruction -- `push {r8,r9}'
[^:]*:130: Error: invalid register list to push/pop instruction -- `pop {r8,r9}'
[^:]*:133: Error: immediate value out of range -- `bkpt #257'
[^:]*:134: Error: Thumb does not support the 2-argument form of this instruction -- `cpsie ai,#5'
[^:]*:135: Error: Thumb does not support the 2-argument form of this instruction -- `cpsid ai,#5'
[^:]*:138: Error: Thumb does not support conditional execution

View File

@ -0,0 +1,138 @@
@ Things you can't do with 16-bit Thumb instructions, but you can
@ do with the equivalent ARM instruction. Does not include errors
@ caught by fixup processing (e.g. out-of-range immediates).
.text
.code 16
.thumb_func
l:
@ Arithmetic instruction templates
.macro ar2 opc
\opc r8,r0
\opc r0,r8
.endm
.macro ar2sh opc
ar2 \opc
\opc r0,#12
\opc r0,r1,lsl #2
\opc r0,r1,lsl r3
.endm
.macro ar2r opc
ar2 \opc
\opc r0,r1,ror #8
.endm
.macro ar3 opc
\opc r1,r2,r3
\opc r8,r0
\opc r0,r8
.endm
.macro ar3sh opc
ar3 \opc
\opc r0,#12
\opc r0,r1,lsl #2
\opc r0,r1,lsl r3
.endm
ar2sh tst
ar2sh cmn
ar2sh mvn
ar2 neg
ar2 rev
ar2 rev16
ar2 revsh
ar2r sxtb
ar2r sxth
ar2r uxtb
ar2r uxth
ar3sh adc
ar3sh and
ar3sh bic
ar3sh eor
ar3sh orr
ar3sh sbc
ar3 mul
@ Shift instruction template
.macro shift opc
\opc r8,r0,#12 @ form 1
\opc r0,r8,#12
ar2 \opc @ form 2
.endm
shift asr
shift lsl
shift lsr
shift ror
ror r0,r1,#12
@ add/sub/mov/cmp are idiosyncratic
add r0,r1,lsl #2
add r0,r1,lsl r3
add r8,r0,#1 @ form 1
add r0,r8,#1
add r8,#10 @ form 2
add r8,r1,r2 @ form 3
add r1,r8,r2
add r1,r2,r8
add r8,pc,#4 @ form 5
add r8,sp,#4 @ form 6
ar3sh sub
sub r8,r0,#1 @ form 1
sub r0,r8,#1
sub r8,#10 @ form 2
sub r8,r1,r2 @ form 3
sub r1,r8,r2
sub r1,r2,r8
cmp r0,r1,lsl #2
cmp r0,r1,lsl r3
cmp r8,#255
mov r0,r1,lsl #2
mov r0,r1,lsl r3
mov r8,#255
@ Load/store template
.macro ldst opc
\opc r8,[r0]
\opc r0,[r8]
\opc r0,[r0,r8]
\opc r0,[r1,#4]!
\opc r0,[r1],#4
\opc r0,[r1,-r2]
\opc r0,[r1],r2
.endm
ldst ldr
ldst ldrb
ldst ldrh
ldst ldrsb
ldst ldrsh
ldst str
ldst strb
ldst strh
ldr r0,[r1,r2,lsl #1]
str r0,[r1,r2,lsl #1]
@ Load/store multiple
ldmia r8!,{r1,r2}
ldmia r7!,{r8}
ldmia r7,{r1,r2}
ldmia r7!,{r1,r7}
stmia r8!,{r1,r2}
stmia r7!,{r8}
stmia r7,{r1,r2}
stmia r7!,{r1,r7}
push {r8,r9}
pop {r8,r9}
@ Miscellaneous
bkpt #257
cpsie ai,#5
cpsid ai,#5
@ Conditional suffixes
addeq r0,r1,r2

View File

@ -0,0 +1,50 @@
#name: ARM Thumb-compat pseudos
#objdump: -dr --prefix-addresses --show-raw-insn
#as:
# Test the ARM pseudo instructions that exist for Thumb source compatibility
.*: +file format .*arm.*
Disassembly of section .text:
0+00 <[^>]*> 91a00000 ? movls r0, r0
0+04 <[^>]*> e1a09000 ? mov r9, r0
0+08 <[^>]*> e1a00009 ? mov r0, r9
0+0c <[^>]*> e1a0c00e ? mov ip, lr
0+10 <[^>]*> 91b09019 ? movlss r9, r9, lsl r0
0+14 <[^>]*> 91a00910 ? movls r0, r0, lsl r9
0+18 <[^>]*> e1b00880 ? movs r0, r0, lsl #17
0+1c <[^>]*> e1a00889 ? mov r0, r9, lsl #17
0+20 <[^>]*> 91b09039 ? movlss r9, r9, lsr r0
0+24 <[^>]*> 91a00930 ? movls r0, r0, lsr r9
0+28 <[^>]*> e1b008a0 ? movs r0, r0, lsr #17
0+2c <[^>]*> e1a008a9 ? mov r0, r9, lsr #17
0+30 <[^>]*> 91b09059 ? movlss r9, r9, asr r0
0+34 <[^>]*> 91a00950 ? movls r0, r0, asr r9
0+38 <[^>]*> e1b008c0 ? movs r0, r0, asr #17
0+3c <[^>]*> e1a008c9 ? mov r0, r9, asr #17
0+40 <[^>]*> 91b09079 ? movlss r9, r9, ror r0
0+44 <[^>]*> 91a00970 ? movls r0, r0, ror r9
0+48 <[^>]*> e1b008e0 ? movs r0, r0, ror #17
0+4c <[^>]*> e1a008e9 ? mov r0, r9, ror #17
0+50 <[^>]*> e2690000 ? rsb r0, r9, #0 ; 0x0
0+54 <[^>]*> e2709000 ? rsbs r9, r0, #0 ; 0x0
0+58 <[^>]*> 92600000 ? rsbls r0, r0, #0 ; 0x0
0+5c <[^>]*> 92799000 ? rsblss r9, r9, #0 ; 0x0
0+60 <[^>]*> e92d000e ? stmdb sp!, {r1, r2, r3}
0+64 <[^>]*> 992d8154 ? stmlsdb sp!, {r2, r4, r6, r8, pc}
0+68 <[^>]*> e8bd000e ? ldmia sp!, {r1, r2, r3}
0+6c <[^>]*> 98bd8154 ? ldmlsia sp!, {r2, r4, r6, r8, pc}
0+70 <[^>]*> e0000001 ? and r0, r0, r1
0+74 <[^>]*> e0200001 ? eor r0, r0, r1
0+78 <[^>]*> e0400001 ? sub r0, r0, r1
0+7c <[^>]*> e0600001 ? rsb r0, r0, r1
0+80 <[^>]*> e0800001 ? add r0, r0, r1
0+84 <[^>]*> e0a00001 ? adc r0, r0, r1
0+88 <[^>]*> e0c00001 ? sbc r0, r0, r1
0+8c <[^>]*> e0e00001 ? rsc r0, r0, r1
0+90 <[^>]*> e1800001 ? orr r0, r0, r1
0+94 <[^>]*> e1c00001 ? bic r0, r0, r1
0+98 <[^>]*> e0000091 ? mul r0, r1, r0
0+9c <[^>]*> e1a00000 ? nop \(mov r0,r0\)

View File

@ -0,0 +1,45 @@
@ ARM instructions defined for source compatibility with Thumb.
.macro shift op opls ops oplss
\oplss r9,r0
\opls r0,r0,r9
\ops r0,#17
\op r0,r9,#17
.endm
.text
.global l
l:
cpyls r0,r0
cpy r9,r0
cpy r0,r9
cpy ip,lr
shift lsl lslls lsls lsllss
shift lsr lsrls lsrs lsrlss
shift asr asrls asrs asrlss
shift ror rorls rors rorlss
neg r0,r9
negs r9,r0
negls r0,r0
neglss r9,r9
push {r1,r2,r3}
pushls {r2,r4,r6,r8,pc}
pop {r1,r2,r3}
popls {r2,r4,r6,r8,pc}
@ Two-argument forms of ARM arithmetic instructions.
and r0,r1
eor r0,r1
sub r0,r1
rsb r0,r1
add r0,r1
adc r0,r1
sbc r0,r1
rsc r0,r1
orr r0,r1
bic r0,r1
mul r0,r1
nop

View File

@ -0,0 +1,26 @@
#name: Thumb ARM-compat pseudos
#objdump: -dr --prefix-addresses --show-raw-insn -M force-thumb
#as:
# Test the Thumb pseudo instructions that exist for ARM source compatibility
.*: +file format .*arm.*
Disassembly of section .text:
0+00 <[^>]*> 4148 * adcs r0, r1
0+02 <[^>]*> 4148 * adcs r0, r1
0+04 <[^>]*> 4008 * ands r0, r1
0+06 <[^>]*> 4008 * ands r0, r1
0+08 <[^>]*> 4048 * eors r0, r1
0+0a <[^>]*> 4048 * eors r0, r1
0+0c <[^>]*> 4348 * muls r0, r1
0+0e <[^>]*> 4348 * muls r0, r1
0+10 <[^>]*> 4308 * orrs r0, r1
0+12 <[^>]*> 4308 * orrs r0, r1
0+14 <[^>]*> 4388 * bics r0, r1
0+16 <[^>]*> 4188 * sbcs r0, r1
0+18 <[^>]*> 46c0 * nop \(mov r8, r8\)
0+1a <[^>]*> 46c0 * nop \(mov r8, r8\)
0+1c <[^>]*> 46c0 * nop \(mov r8, r8\)
0+1e <[^>]*> 46c0 * nop \(mov r8, r8\)

View File

@ -0,0 +1,32 @@
@ Three-argument forms of Thumb arithmetic instructions.
@ Commutative instructions allow either the second or third
@ operand to equal the first.
.text
.global m
.thumb_func
m:
adc r0,r0,r1
adc r0,r1,r0
and r0,r0,r1
and r0,r1,r0
eor r0,r0,r1
eor r0,r1,r0
mul r0,r0,r1
mul r0,r1,r0
orr r0,r0,r1
orr r0,r1,r0
bic r0,r0,r1
sbc r0,r0,r1
@ section padding for a.out's sake
nop
nop
nop
nop

View File

@ -0,0 +1,189 @@
# name: Thumb instructions
# as: -mcpu=arm7t
# objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section \.text:
0+000 <[^>]+> 00ca lsls r2, r1, #3
0+002 <[^>]+> 0fe3 lsrs r3, r4, #31
0+004 <[^>]+> 1147 asrs r7, r0, #5
0+006 <[^>]+> 0011 lsls r1, r2, #0
0+008 <[^>]+> 0023 lsls r3, r4, #0
0+00a <[^>]+> 002c lsls r4, r5, #0
0+00c <[^>]+> 083e lsrs r6, r7, #32
0+00e <[^>]+> 1008 asrs r0, r1, #32
0+010 <[^>]+> 18d1 adds r1, r2, r3
0+012 <[^>]+> 1ca2 adds r2, r4, #2
0+014 <[^>]+> 1beb sub r3, r5, r7
0+016 <[^>]+> 1fe2 sub r2, r4, #7
0+018 <[^>]+> 24ff movs r4, #255
0+01a <[^>]+> 2bfa cmp r3, #250
0+01c <[^>]+> 367b adds r6, #123
0+01e <[^>]+> 3d80 subs r5, #128
0+020 <[^>]+> 402b ands r3, r5
0+022 <[^>]+> 4074 eors r4, r6
0+024 <[^>]+> 4081 lsls r1, r0
0+026 <[^>]+> 40da lsrs r2, r3
0+028 <[^>]+> 4134 asrs r4, r6
0+02a <[^>]+> 417d adcs r5, r7
0+02c <[^>]+> 41a0 sbcs r0, r4
0+02e <[^>]+> 41e1 rors r1, r4
0+030 <[^>]+> 422a tst r2, r5
0+032 <[^>]+> 4249 negs r1, r1
0+034 <[^>]+> 429a cmp r2, r3
0+036 <[^>]+> 42e1 cmn r1, r4
0+038 <[^>]+> 4318 orrs r0, r3
0+03a <[^>]+> 436c muls r4, r5
0+03c <[^>]+> 43bd bics r5, r7
0+03e <[^>]+> 43ed mvns r5, r5
0+040 <[^>]+> 4469 add r1, sp
0+042 <[^>]+> 4494 add ip, r2
0+044 <[^>]+> 44c9 add r9, r9
0+046 <[^>]+> 4571 cmp r1, lr
0+048 <[^>]+> 4580 cmp r8, r0
0+04a <[^>]+> 45f4 cmp ip, lr
0+04c <[^>]+> 4648 mov r0, r9
0+04e <[^>]+> 46a1 mov r9, r4
0+050 <[^>]+> 46c0 nop \(mov r8, r8\)
0+052 <[^>]+> 4738 bx r7
0+054 <[^>]+> 4740 bx r8
0+056 <[^>]+> 0000 lsls r0, r0, #0
0+058 <[^>]+> 4778 bx pc
0+05a <[^>]+> 4b20 ldr r3, \[pc, #128\] \(0+0dc <[^>]+>\)
0+05c <[^>]+> 4c02 ldr r4, \[pc, #8\] \(0+068 <[^>]+>\)
0+05e <[^>]+> 5088 str r0, \[r1, r2\]
0+060 <[^>]+> 5511 strb r1, \[r2, r4\]
0+062 <[^>]+> 59f5 ldr r5, \[r6, r7\]
0+064 <[^>]+> 5d62 ldrb r2, \[r4, r5\]
\.\.\.
0+068 <[^>]+> 52d1 strh r1, \[r2, r3\]
0+06a <[^>]+> 5a23 ldrh r3, \[r4, r0\]
0+06c <[^>]+> 57f1 ldrsb r1, \[r6, r7\]
0+06e <[^>]+> 5f42 ldrsh r2, \[r0, r5\]
0+070 <[^>]+> 67db str r3, \[r3, #124\]
0+072 <[^>]+> 6fe1 ldr r1, \[r4, #124\]
0+074 <[^>]+> 682d ldr r5, \[r5, #0\]
0+076 <[^>]+> 77e9 strb r1, \[r5, #31\]
0+078 <[^>]+> 7161 strb r1, \[r4, #5\]
0+07a <[^>]+> 7032 strb r2, \[r6, #0\]
0+07c <[^>]+> 87ec strh r4, \[r5, #62\]
0+07e <[^>]+> 8885 ldrh r5, \[r0, #4\]
0+080 <[^>]+> 8813 ldrh r3, \[r2, #0\]
0+082 <[^>]+> 93ff str r3, \[sp, #1020\]
0+084 <[^>]+> 990b ldr r1, \[sp, #44\]
0+086 <[^>]+> 9a00 ldr r2, \[sp, #0\]
0+088 <[^>]+> a7ff add r7, pc, #1020 \(adr r7,0+488 <[^>]+>\)
0+08a <[^>]+> ac80 add r4, sp, #512
0+08c <[^>]+> b043 add sp, #268
0+08e <[^>]+> b09a sub sp, #104
0+090 <[^>]+> b0c3 sub sp, #268
0+092 <[^>]+> b01b add sp, #108
0+094 <[^>]+> b417 push {r0, r1, r2, r4}
0+096 <[^>]+> b5f9 push {r0, r3, r4, r5, r6, r7, lr}
0+098 <[^>]+> bc98 pop {r3, r4, r7}
0+09a <[^>]+> bdff pop {r0, r1, r2, r3, r4, r5, r6, r7, pc}
0+09c <[^>]+> c3f3 stmia r3!, {r0, r1, r4, r5, r6, r7}
0+09e <[^>]+> c8fe ldmia r0!, {r1, r2, r3, r4, r5, r6, r7}
0+0a0 <[^>]+> d0e2 beq.n 0+068 <[^>]+>
0+0a2 <[^>]+> d1e1 bne.n 0+068 <[^>]+>
0+0a4 <[^>]+> d2e0 bcs.n 0+068 <[^>]+>
0+0a6 <[^>]+> d3df bcc.n 0+068 <[^>]+>
0+0a8 <[^>]+> d4de bmi.n 0+068 <[^>]+>
0+0aa <[^>]+> d5dd bpl.n 0+068 <[^>]+>
0+0ac <[^>]+> d6dc bvs.n 0+068 <[^>]+>
0+0ae <[^>]+> d7db bvc.n 0+068 <[^>]+>
0+0b0 <[^>]+> d8da bhi.n 0+068 <[^>]+>
0+0b2 <[^>]+> d9d9 bls.n 0+068 <[^>]+>
0+0b4 <[^>]+> dad8 bge.n 0+068 <[^>]+>
0+0b6 <[^>]+> dcd7 bgt.n 0+068 <[^>]+>
0+0b8 <[^>]+> dbd6 blt.n 0+068 <[^>]+>
0+0ba <[^>]+> dcd5 bgt.n 0+068 <[^>]+>
0+0bc <[^>]+> ddd4 ble.n 0+068 <[^>]+>
0+0be <[^>]+> d8d3 bhi.n 0+068 <[^>]+>
0+0c0 <[^>]+> d3d2 bcc.n 0+068 <[^>]+>
0+0c2 <[^>]+> d3d1 bcc.n 0+068 <[^>]+>
0+0c4 <[^>]+> e7d0 b.n 0+068 <[^>]+>
0+0c6 <[^>]+> 00ac lsls r4, r5, #2
0+0c8 <[^>]+> 1c9a adds r2, r3, #2
0+0ca <[^>]+> b07f add sp, #508
0+0cc <[^>]+> b0ff sub sp, #508
0+0ce <[^>]+> a8ff add r0, sp, #1020
0+0d0 <[^>]+> a0ff add r0, pc, #1020 \(adr r0,0+4d0 <[^>]+>\)
0+0d2 <[^>]+> b01a add sp, #104
0+0d4 <[^>]+> b09a sub sp, #104
0+0d6 <[^>]+> a81a add r0, sp, #104
0+0d8 <[^>]+> a01a add r0, pc, #104 \(adr r0,0+144 <[^>]+>\)
0+0da <[^>]+> 3168 adds r1, #104
0+0dc <[^>]+> 2668 movs r6, #104
0+0de <[^>]+> 2f68 cmp r7, #104
0+0e0 <[^>]+> 46c0 nop \(mov r8, r8\)
0+0e2 <[^>]+> 46c0 nop \(mov r8, r8\)
0+0e4 <[^>]+> ea000037 b 0+0e4 <[^>]+>
e4: R_ARM_PC24 \.text
0+0e8 <[^>]+> eafffffe b 0+000 <[^>]+>
e8: R_ARM_PC24 \.wombat
0+0ec <[^>]+> eb000037 bl 0+0e4 <[^>]+>
ec: R_ARM_PC24 \.text
0+0f0 <[^>]+> ebfffffe bl 0+000 <[^>]+>
f0: R_ARM_PC24 \.wombat
0+0f4 <[^>]+> e12fff10 bx r0
0+0f8 <[^>]+> ef123456 swi 0x00123456
0+0fc <[^>]+> a004 add r0, pc, #16 \(adr r0,0+110 <[^>]+>\)
0+0fe <[^>]+> e77f b.n 0+000 <[^>]+>
0+100 <[^>]+> e7fe b.n 0+000 <[^>]+>
100: R_ARM_THM_JUMP11 \.wombat
0+102 <[^>]+> f7ff fffe bl 0+000 <[^>]+>
102: R_ARM_THM_CALL \.text
0+106 <[^>]+> f7ff fffe bl 0+000 <[^>]+>
106: R_ARM_THM_CALL \.wombat
0+10a <[^>]+> 4700 bx r0
0+10c <[^>]+> dfff swi 255
\.\.\.
0+110 <[^>]+> d0fe beq.n 0+000 <[^>]+>
110: R_ARM_THM_JUMP8 \.wombat
0+112 <[^>]+> d1fe bne.n 0+000 <[^>]+>
112: R_ARM_THM_JUMP8 \.wombat
0+114 <[^>]+> d2fe bcs.n 0+000 <[^>]+>
114: R_ARM_THM_JUMP8 \.wombat
0+116 <[^>]+> d3fe bcc.n 0+000 <[^>]+>
116: R_ARM_THM_JUMP8 \.wombat
0+118 <[^>]+> d4fe bmi.n 0+000 <[^>]+>
118: R_ARM_THM_JUMP8 \.wombat
0+11a <[^>]+> d5fe bpl.n 0+000 <[^>]+>
11a: R_ARM_THM_JUMP8 \.wombat
0+11c <[^>]+> d6fe bvs.n 0+000 <[^>]+>
11c: R_ARM_THM_JUMP8 \.wombat
0+11e <[^>]+> d7fe bvc.n 0+000 <[^>]+>
11e: R_ARM_THM_JUMP8 \.wombat
0+120 <[^>]+> d8fe bhi.n 0+000 <[^>]+>
120: R_ARM_THM_JUMP8 \.wombat
0+122 <[^>]+> d9fe bls.n 0+000 <[^>]+>
122: R_ARM_THM_JUMP8 \.wombat
0+124 <[^>]+> dafe bge.n 0+000 <[^>]+>
124: R_ARM_THM_JUMP8 \.wombat
0+126 <[^>]+> dcfe bgt.n 0+000 <[^>]+>
126: R_ARM_THM_JUMP8 \.wombat
0+128 <[^>]+> dbfe blt.n 0+000 <[^>]+>
128: R_ARM_THM_JUMP8 \.wombat
0+12a <[^>]+> dcfe bgt.n 0+000 <[^>]+>
12a: R_ARM_THM_JUMP8 \.wombat
0+12c <[^>]+> ddfe ble.n 0+000 <[^>]+>
12c: R_ARM_THM_JUMP8 \.wombat
0+12e <[^>]+> d8fe bhi.n 0+000 <[^>]+>
12e: R_ARM_THM_JUMP8 \.wombat
0+130 <[^>]+> d3fe bcc.n 0+000 <[^>]+>
130: R_ARM_THM_JUMP8 \.wombat
0+132 <[^>]+> d3fe bcc.n 0+000 <[^>]+>
132: R_ARM_THM_JUMP8 \.wombat
0+134 <[^>]+> f000 fc9a bl 0+938 <[^>]+>
134: R_ARM_THM_CALL \.text
\.\.\.
0+938 <[^>]+> f000 f898 bl 0+134 <[^>]+>
938: R_ARM_THM_CALL \.text
0+93c <[^>]+> 4801 ldr r0, \[pc, #4\] \(0+944 <[^>]+>\)
0+93e <[^>]+> 4801 ldr r0, \[pc, #4\] \(0+944 <[^>]+>\)
0+940 <[^>]+> 4801 ldr r0, \[pc, #4\] \(0+948 <[^>]+>\)
0+942 <[^>]+> 4801 ldr r0, \[pc, #4\] \(0+948 <[^>]+>\)
0+944 <[^>]+> 46c0 nop \(mov r8, r8\)
0+946 <[^>]+> 46c0 nop \(mov r8, r8\)

View File

@ -192,3 +192,11 @@ forwardonly:
.space (1 << 11) @ leave space to force long offsets
.local:
bl .back
ldr r0, .target
ldr r0, .target
ldr r0, [pc, #4]
ldr r0, [pc, #4]
.target:
nop @ pad for a.out
nop

View File

@ -0,0 +1,995 @@
# name: 32-bit Thumb instructions
# as: -march=armv6kt2
# objdump: -dr --prefix-addresses --show-raw-insn
.*: +file format .*arm.*
Disassembly of section .text:
0+000 <[^>]+> f041 0000 orr\.w r0, r1, #0 ; 0x0
0+004 <[^>]+> f041 00a5 orr\.w r0, r1, #165 ; 0xa5
0+008 <[^>]+> f041 10a5 orr\.w r0, r1, #10813605 ; 0xa500a5
0+00c <[^>]+> f041 20a5 orr\.w r0, r1, #2768282880 ; 0xa500a500
0+010 <[^>]+> f041 30a5 orr\.w r0, r1, #2779096485 ; 0xa5a5a5a5
0+014 <[^>]+> f041 4000 orr\.w r0, r1, #2147483648 ; 0x80000000
0+018 <[^>]+> f041 4080 orr\.w r0, r1, #1073741824 ; 0x40000000
0+01c <[^>]+> f041 4020 orr\.w r0, r1, #2684354560 ; 0xa0000000
0+020 <[^>]+> f041 40a0 orr\.w r0, r1, #1342177280 ; 0x50000000
0+024 <[^>]+> f041 5020 orr\.w r0, r1, #671088640 ; 0x28000000
0+028 <[^>]+> f041 4014 orr\.w r0, r1, #2483027968 ; 0x94000000
0+02c <[^>]+> f041 4094 orr\.w r0, r1, #1241513984 ; 0x4a000000
0+030 <[^>]+> f041 4025 orr\.w r0, r1, #2768240640 ; 0xa5000000
0+034 <[^>]+> f041 40a5 orr\.w r0, r1, #1384120320 ; 0x52800000
0+038 <[^>]+> f041 5025 orr\.w r0, r1, #692060160 ; 0x29400000
0+03c <[^>]+> f041 50a5 orr\.w r0, r1, #346030080 ; 0x14a00000
0+040 <[^>]+> f041 6025 orr\.w r0, r1, #173015040 ; 0xa500000
0+044 <[^>]+> f041 60a5 orr\.w r0, r1, #86507520 ; 0x5280000
0+048 <[^>]+> f041 7025 orr\.w r0, r1, #43253760 ; 0x2940000
0+04c <[^>]+> f041 70a5 orr\.w r0, r1, #21626880 ; 0x14a0000
0+050 <[^>]+> f441 0025 orr\.w r0, r1, #10813440 ; 0xa50000
0+054 <[^>]+> f441 00a5 orr\.w r0, r1, #5406720 ; 0x528000
0+058 <[^>]+> f441 1025 orr\.w r0, r1, #2703360 ; 0x294000
0+05c <[^>]+> f441 10a5 orr\.w r0, r1, #1351680 ; 0x14a000
0+060 <[^>]+> f441 2025 orr\.w r0, r1, #675840 ; 0xa5000
0+064 <[^>]+> f441 20a5 orr\.w r0, r1, #337920 ; 0x52800
0+068 <[^>]+> f441 3025 orr\.w r0, r1, #168960 ; 0x29400
0+06c <[^>]+> f441 30a5 orr\.w r0, r1, #84480 ; 0x14a00
0+070 <[^>]+> f441 4025 orr\.w r0, r1, #42240 ; 0xa500
0+074 <[^>]+> f441 40a5 orr\.w r0, r1, #21120 ; 0x5280
0+078 <[^>]+> f441 5025 orr\.w r0, r1, #10560 ; 0x2940
0+07c <[^>]+> f441 50a5 orr\.w r0, r1, #5280 ; 0x14a0
0+080 <[^>]+> f441 6025 orr\.w r0, r1, #2640 ; 0xa50
0+084 <[^>]+> f441 60a5 orr\.w r0, r1, #1320 ; 0x528
0+088 <[^>]+> f441 7025 orr\.w r0, r1, #660 ; 0x294
0+08c <[^>]+> f441 70a5 orr\.w r0, r1, #330 ; 0x14a
0+090 <[^>]+> f110 0000 adds\.w r0, r0, #0 ; 0x0
0+094 <[^>]+> f110 0500 adds\.w r5, r0, #0 ; 0x0
0+098 <[^>]+> f115 0000 adds\.w r0, r5, #0 ; 0x0
0+09c <[^>]+> f110 0005 adds\.w r0, r0, #5 ; 0x5
0+0a0 <[^>]+> f110 0081 adds\.w r0, r0, #129 ; 0x81
0+0a4 <[^>]+> f110 0081 adds\.w r0, r0, #129 ; 0x81
0+0a8 <[^>]+> f110 057e adds\.w r5, r0, #126 ; 0x7e
0+0ac <[^>]+> 1800 adds r0, r0, r0
0+0ae <[^>]+> 1805 adds r5, r0, r0
0+0b0 <[^>]+> 1828 adds r0, r5, r0
0+0b2 <[^>]+> 1940 adds r0, r0, r5
0+0b4 <[^>]+> 18d1 adds r1, r2, r3
0+0b6 <[^>]+> 4480 add r8, r0
0+0b8 <[^>]+> 4440 add r0, r8
0+0ba <[^>]+> 4440 add r0, r8
0+0bc <[^>]+> 4440 add r0, r8
0+0be <[^>]+> eb00 0800 add\.w r8, r0, r0
0+0c2 <[^>]+> 4401 add r1, r0
0+0c4 <[^>]+> 4408 add r0, r1
0+0c6 <[^>]+> f10f 0000 add\.w r0, pc, #0 ; 0x0
0+0ca <[^>]+> f10f 0500 add\.w r5, pc, #0 ; 0x0
0+0ce <[^>]+> f50f 7001 add\.w r0, pc, #516 ; 0x204
0+0d2 <[^>]+> f10d 0000 add\.w r0, sp, #0 ; 0x0
0+0d6 <[^>]+> f10d 0500 add\.w r5, sp, #0 ; 0x0
0+0da <[^>]+> f50d 7001 add\.w r0, sp, #516 ; 0x204
0+0de <[^>]+> f100 0d00 add\.w sp, r0, #0 ; 0x0
0+0e2 <[^>]+> f10d 0d00 add\.w sp, sp, #0 ; 0x0
0+0e6 <[^>]+> f500 7d82 add\.w sp, r0, #260 ; 0x104
0+0ea <[^>]+> f100 0000 add\.w r0, r0, #0 ; 0x0
0+0ee <[^>]+> f110 0000 adds\.w r0, r0, #0 ; 0x0
0+0f2 <[^>]+> f100 0900 add\.w r9, r0, #0 ; 0x0
0+0f6 <[^>]+> f109 0000 add\.w r0, r9, #0 ; 0x0
0+0fa <[^>]+> f100 0081 add\.w r0, r0, #129 ; 0x81
0+0fe <[^>]+> eb00 0000 add\.w r0, r0, r0
0+102 <[^>]+> eb10 0000 adds\.w r0, r0, r0
0+106 <[^>]+> eb00 0900 add\.w r9, r0, r0
0+10a <[^>]+> eb09 0000 add\.w r0, r9, r0
0+10e <[^>]+> eb00 0009 add\.w r0, r0, r9
0+112 <[^>]+> eb09 080a add\.w r8, r9, sl
0+116 <[^>]+> eb09 484a add\.w r8, r9, sl, lsl #17
0+11a <[^>]+> eb08 081a add\.w r8, r8, sl, lsr #32
0+11e <[^>]+> eb08 485a add\.w r8, r8, sl, lsr #17
0+122 <[^>]+> eb09 082a add\.w r8, r9, sl, asr #32
0+126 <[^>]+> eb09 486a add\.w r8, r9, sl, asr #17
0+12a <[^>]+> eb09 083a add\.w r8, r9, sl, rrx
0+12e <[^>]+> eb09 487a add\.w r8, r9, sl, ror #17
0+132 <[^>]+> f1b0 0000 subs\.w r0, r0, #0 ; 0x0
0+136 <[^>]+> f1b0 0500 subs\.w r5, r0, #0 ; 0x0
0+13a <[^>]+> f1b5 0000 subs\.w r0, r5, #0 ; 0x0
0+13e <[^>]+> f1b0 0005 subs\.w r0, r0, #5 ; 0x5
0+142 <[^>]+> f1b0 0081 subs\.w r0, r0, #129 ; 0x81
0+146 <[^>]+> f1b0 0508 subs\.w r5, r0, #8 ; 0x8
0+14a <[^>]+> 1a00 sub r0, r0, r0
0+14c <[^>]+> 1a05 sub r5, r0, r0
0+14e <[^>]+> 1a28 sub r0, r5, r0
0+150 <[^>]+> 1b40 sub r0, r0, r5
0+152 <[^>]+> f5a0 7d82 sub\.w sp, r0, #260 ; 0x104
0+156 <[^>]+> f5ad 7d82 sub\.w sp, sp, #260 ; 0x104
0+15a <[^>]+> ebb8 0800 subs\.w r8, r8, r0
0+15e <[^>]+> ebb0 0008 subs\.w r0, r0, r8
0+162 <[^>]+> f5b0 7082 subs\.w r0, r0, #260 ; 0x104
0+166 <[^>]+> 4140 adcs r0, r0
0+168 <[^>]+> 4145 adcs r5, r0
0+16a <[^>]+> 4168 adcs r0, r5
0+16c <[^>]+> 4168 adcs r0, r5
0+16e <[^>]+> 4168 adcs r0, r5
0+170 <[^>]+> eb45 0000 adc\.w r0, r5, r0
0+174 <[^>]+> eb41 0002 adc\.w r0, r1, r2
0+178 <[^>]+> eb40 0900 adc\.w r9, r0, r0
0+17c <[^>]+> eb49 0000 adc\.w r0, r9, r0
0+180 <[^>]+> eb40 0009 adc\.w r0, r0, r9
0+184 <[^>]+> eb50 0000 adcs\.w r0, r0, r0
0+188 <[^>]+> eb41 4062 adc\.w r0, r1, r2, asr #17
0+18c <[^>]+> f141 0081 adc\.w r0, r1, #129 ; 0x81
0+190 <[^>]+> 4000 ands r0, r0
0+192 <[^>]+> 4005 ands r5, r0
0+194 <[^>]+> 4028 ands r0, r5
0+196 <[^>]+> 4028 ands r0, r5
0+198 <[^>]+> 4028 ands r0, r5
0+19a <[^>]+> ea05 0000 and\.w r0, r5, r0
0+19e <[^>]+> ea01 0002 and\.w r0, r1, r2
0+1a2 <[^>]+> ea00 0900 and\.w r9, r0, r0
0+1a6 <[^>]+> ea09 0000 and\.w r0, r9, r0
0+1aa <[^>]+> ea00 0009 and\.w r0, r0, r9
0+1ae <[^>]+> ea10 0000 ands\.w r0, r0, r0
0+1b2 <[^>]+> ea01 4062 and\.w r0, r1, r2, asr #17
0+1b6 <[^>]+> f001 0081 and\.w r0, r1, #129 ; 0x81
0+1ba <[^>]+> 4380 bics r0, r0
0+1bc <[^>]+> 4385 bics r5, r0
0+1be <[^>]+> 43a8 bics r0, r5
0+1c0 <[^>]+> 43a8 bics r0, r5
0+1c2 <[^>]+> ea35 0000 bics\.w r0, r5, r0
0+1c6 <[^>]+> ea25 0000 bic\.w r0, r5, r0
0+1ca <[^>]+> ea21 0002 bic\.w r0, r1, r2
0+1ce <[^>]+> ea20 0900 bic\.w r9, r0, r0
0+1d2 <[^>]+> ea29 0000 bic\.w r0, r9, r0
0+1d6 <[^>]+> ea20 0009 bic\.w r0, r0, r9
0+1da <[^>]+> ea30 0000 bics\.w r0, r0, r0
0+1de <[^>]+> ea21 4062 bic\.w r0, r1, r2, asr #17
0+1e2 <[^>]+> f021 0081 bic\.w r0, r1, #129 ; 0x81
0+1e6 <[^>]+> 4040 eors r0, r0
0+1e8 <[^>]+> 4045 eors r5, r0
0+1ea <[^>]+> 4068 eors r0, r5
0+1ec <[^>]+> 4068 eors r0, r5
0+1ee <[^>]+> 4068 eors r0, r5
0+1f0 <[^>]+> ea85 0000 eor\.w r0, r5, r0
0+1f4 <[^>]+> ea81 0002 eor\.w r0, r1, r2
0+1f8 <[^>]+> ea80 0900 eor\.w r9, r0, r0
0+1fc <[^>]+> ea89 0000 eor\.w r0, r9, r0
0+200 <[^>]+> ea80 0009 eor\.w r0, r0, r9
0+204 <[^>]+> ea90 0000 eors\.w r0, r0, r0
0+208 <[^>]+> ea81 4062 eor\.w r0, r1, r2, asr #17
0+20c <[^>]+> f081 0081 eor\.w r0, r1, #129 ; 0x81
0+210 <[^>]+> 4300 orrs r0, r0
0+212 <[^>]+> 4305 orrs r5, r0
0+214 <[^>]+> 4328 orrs r0, r5
0+216 <[^>]+> 4328 orrs r0, r5
0+218 <[^>]+> 4328 orrs r0, r5
0+21a <[^>]+> ea45 0000 orr\.w r0, r5, r0
0+21e <[^>]+> ea41 0002 orr\.w r0, r1, r2
0+222 <[^>]+> ea40 0900 orr\.w r9, r0, r0
0+226 <[^>]+> ea49 0000 orr\.w r0, r9, r0
0+22a <[^>]+> ea40 0009 orr\.w r0, r0, r9
0+22e <[^>]+> ea50 0000 orrs\.w r0, r0, r0
0+232 <[^>]+> ea41 4062 orr\.w r0, r1, r2, asr #17
0+236 <[^>]+> f041 0081 orr\.w r0, r1, #129 ; 0x81
0+23a <[^>]+> ebd0 0000 rsbs r0, r0, r0
0+23e <[^>]+> ebd5 0500 rsbs r5, r5, r0
0+242 <[^>]+> ebd0 0005 rsbs r0, r0, r5
0+246 <[^>]+> ebd0 0005 rsbs r0, r0, r5
0+24a <[^>]+> ebd5 0000 rsbs r0, r5, r0
0+24e <[^>]+> ebc5 0000 rsb r0, r5, r0
0+252 <[^>]+> ebc1 0002 rsb r0, r1, r2
0+256 <[^>]+> ebc0 0900 rsb r9, r0, r0
0+25a <[^>]+> ebc9 0000 rsb r0, r9, r0
0+25e <[^>]+> ebc0 0009 rsb r0, r0, r9
0+262 <[^>]+> ebd0 0000 rsbs r0, r0, r0
0+266 <[^>]+> ebc1 4062 rsb r0, r1, r2, asr #17
0+26a <[^>]+> f1c1 0081 rsb r0, r1, #129 ; 0x81
0+26e <[^>]+> 4180 sbcs r0, r0
0+270 <[^>]+> 4185 sbcs r5, r0
0+272 <[^>]+> 41a8 sbcs r0, r5
0+274 <[^>]+> 41a8 sbcs r0, r5
0+276 <[^>]+> eb75 0000 sbcs\.w r0, r5, r0
0+27a <[^>]+> eb65 0000 sbc\.w r0, r5, r0
0+27e <[^>]+> eb61 0002 sbc\.w r0, r1, r2
0+282 <[^>]+> eb60 0900 sbc\.w r9, r0, r0
0+286 <[^>]+> eb69 0000 sbc\.w r0, r9, r0
0+28a <[^>]+> eb60 0009 sbc\.w r0, r0, r9
0+28e <[^>]+> eb70 0000 sbcs\.w r0, r0, r0
0+292 <[^>]+> eb61 4062 sbc\.w r0, r1, r2, asr #17
0+296 <[^>]+> f161 0081 sbc\.w r0, r1, #129 ; 0x81
0+29a <[^>]+> f36f 0000 bfc r0, #0, #1
0+29e <[^>]+> f36f 0900 bfc r9, #0, #1
0+2a2 <[^>]+> f36f 0900 bfc r9, #0, #1
0+2a6 <[^>]+> f36f 5055 bfc r0, #21, #1
0+2aa <[^>]+> f36f 0011 bfc r0, #0, #18
0+2ae <[^>]+> f360 0000 bfi r0, r0, #0, #1
0+2b2 <[^>]+> f360 0900 bfi r9, r0, #0, #1
0+2b6 <[^>]+> f369 0000 bfi r0, r9, #0, #1
0+2ba <[^>]+> f360 5055 bfi r0, r0, #21, #1
0+2be <[^>]+> f360 0011 bfi r0, r0, #0, #18
0+2c2 <[^>]+> f340 0000 sbfx r0, r0, #0, #1
0+2c6 <[^>]+> f3c0 0900 ubfx r9, r0, #0, #1
0+2ca <[^>]+> f349 0000 sbfx r0, r9, #0, #1
0+2ce <[^>]+> f3c0 5040 ubfx r0, r0, #21, #1
0+2d2 <[^>]+> f340 0011 sbfx r0, r0, #0, #18
0+2d6 <[^>]+> d0fe beq\.n 0+2d6 <[^>]+>
0+2d8 <[^>]+> d02a beq\.n 0+330 <[^>]+>
0+2da <[^>]+> d1fc bne\.n 0+2d6 <[^>]+>
0+2dc <[^>]+> d128 bne\.n 0+330 <[^>]+>
0+2de <[^>]+> d2fa bcs\.n 0+2d6 <[^>]+>
0+2e0 <[^>]+> d226 bcs\.n 0+330 <[^>]+>
0+2e2 <[^>]+> d2f8 bcs\.n 0+2d6 <[^>]+>
0+2e4 <[^>]+> d224 bcs\.n 0+330 <[^>]+>
0+2e6 <[^>]+> d3f6 bcc\.n 0+2d6 <[^>]+>
0+2e8 <[^>]+> d322 bcc\.n 0+330 <[^>]+>
0+2ea <[^>]+> d3f4 bcc\.n 0+2d6 <[^>]+>
0+2ec <[^>]+> d320 bcc\.n 0+330 <[^>]+>
0+2ee <[^>]+> d3f2 bcc\.n 0+2d6 <[^>]+>
0+2f0 <[^>]+> d31e bcc\.n 0+330 <[^>]+>
0+2f2 <[^>]+> d4f0 bmi\.n 0+2d6 <[^>]+>
0+2f4 <[^>]+> d41c bmi\.n 0+330 <[^>]+>
0+2f6 <[^>]+> d5ee bpl\.n 0+2d6 <[^>]+>
0+2f8 <[^>]+> d51a bpl\.n 0+330 <[^>]+>
0+2fa <[^>]+> d6ec bvs\.n 0+2d6 <[^>]+>
0+2fc <[^>]+> d618 bvs\.n 0+330 <[^>]+>
0+2fe <[^>]+> d7ea bvc\.n 0+2d6 <[^>]+>
0+300 <[^>]+> d716 bvc\.n 0+330 <[^>]+>
0+302 <[^>]+> d8e8 bhi\.n 0+2d6 <[^>]+>
0+304 <[^>]+> d814 bhi\.n 0+330 <[^>]+>
0+306 <[^>]+> d9e6 bls\.n 0+2d6 <[^>]+>
0+308 <[^>]+> d912 bls\.n 0+330 <[^>]+>
0+30a <[^>]+> d7e4 bvc\.n 0+2d6 <[^>]+>
0+30c <[^>]+> d710 bvc\.n 0+330 <[^>]+>
0+30e <[^>]+> d8e2 bhi\.n 0+2d6 <[^>]+>
0+310 <[^>]+> d80e bhi\.n 0+330 <[^>]+>
0+312 <[^>]+> d9e0 bls\.n 0+2d6 <[^>]+>
0+314 <[^>]+> d90c bls\.n 0+330 <[^>]+>
0+316 <[^>]+> dade bge\.n 0+2d6 <[^>]+>
0+318 <[^>]+> da0a bge\.n 0+330 <[^>]+>
0+31a <[^>]+> dbdc blt\.n 0+2d6 <[^>]+>
0+31c <[^>]+> db08 blt\.n 0+330 <[^>]+>
0+31e <[^>]+> dcda bgt\.n 0+2d6 <[^>]+>
0+320 <[^>]+> dc06 bgt\.n 0+330 <[^>]+>
0+322 <[^>]+> ddd8 ble\.n 0+2d6 <[^>]+>
0+324 <[^>]+> dd04 ble\.n 0+330 <[^>]+>
0+326 <[^>]+> e7d6 b\.n 0+2d6 <[^>]+>
0+328 <[^>]+> e002 b\.n 0+330 <[^>]+>
0+32a <[^>]+> e7d4 b\.n 0+2d6 <[^>]+>
0+32c <[^>]+> e000 b\.n 0+330 <[^>]+>
0+32e <[^>]+> 46c0 nop \(mov r8, r8\)
0+330 <[^>]+> f43f affe beq\.w 0+330 <[^>]+>
0+334 <[^>]+> f000 8058 beq\.w 0+3e8 <[^>]+>
0+338 <[^>]+> f47f affa bne\.w 0+330 <[^>]+>
0+33c <[^>]+> f040 8054 bne\.w 0+3e8 <[^>]+>
0+340 <[^>]+> f4bf aff6 bcs\.w 0+330 <[^>]+>
0+344 <[^>]+> f080 8050 bcs\.w 0+3e8 <[^>]+>
0+348 <[^>]+> f4bf aff2 bcs\.w 0+330 <[^>]+>
0+34c <[^>]+> f080 804c bcs\.w 0+3e8 <[^>]+>
0+350 <[^>]+> f4ff afee bcc\.w 0+330 <[^>]+>
0+354 <[^>]+> f0c0 8048 bcc\.w 0+3e8 <[^>]+>
0+358 <[^>]+> f4ff afea bcc\.w 0+330 <[^>]+>
0+35c <[^>]+> f0c0 8044 bcc\.w 0+3e8 <[^>]+>
0+360 <[^>]+> f4ff afe6 bcc\.w 0+330 <[^>]+>
0+364 <[^>]+> f0c0 8040 bcc\.w 0+3e8 <[^>]+>
0+368 <[^>]+> f53f afe2 bmi\.w 0+330 <[^>]+>
0+36c <[^>]+> f100 803c bmi\.w 0+3e8 <[^>]+>
0+370 <[^>]+> f57f afde bpl\.w 0+330 <[^>]+>
0+374 <[^>]+> f140 8038 bpl\.w 0+3e8 <[^>]+>
0+378 <[^>]+> f5bf afda bvs\.w 0+330 <[^>]+>
0+37c <[^>]+> f180 8034 bvs\.w 0+3e8 <[^>]+>
0+380 <[^>]+> f5ff afd6 bvc\.w 0+330 <[^>]+>
0+384 <[^>]+> f1c0 8030 bvc\.w 0+3e8 <[^>]+>
0+388 <[^>]+> f63f afd2 bhi\.w 0+330 <[^>]+>
0+38c <[^>]+> f200 802c bhi\.w 0+3e8 <[^>]+>
0+390 <[^>]+> f67f afce bls\.w 0+330 <[^>]+>
0+394 <[^>]+> f240 8028 bls\.w 0+3e8 <[^>]+>
0+398 <[^>]+> f5ff afca bvc\.w 0+330 <[^>]+>
0+39c <[^>]+> f1c0 8024 bvc\.w 0+3e8 <[^>]+>
0+3a0 <[^>]+> f63f afc6 bhi\.w 0+330 <[^>]+>
0+3a4 <[^>]+> f200 8020 bhi\.w 0+3e8 <[^>]+>
0+3a8 <[^>]+> f67f afc2 bls\.w 0+330 <[^>]+>
0+3ac <[^>]+> f240 801c bls\.w 0+3e8 <[^>]+>
0+3b0 <[^>]+> f6bf afbe bge\.w 0+330 <[^>]+>
0+3b4 <[^>]+> f280 8018 bge\.w 0+3e8 <[^>]+>
0+3b8 <[^>]+> f6ff afba blt\.w 0+330 <[^>]+>
0+3bc <[^>]+> f2c0 8014 blt\.w 0+3e8 <[^>]+>
0+3c0 <[^>]+> f73f afb6 bgt\.w 0+330 <[^>]+>
0+3c4 <[^>]+> f300 8010 bgt\.w 0+3e8 <[^>]+>
0+3c8 <[^>]+> f77f afb2 ble\.w 0+330 <[^>]+>
0+3cc <[^>]+> f340 800c ble\.w 0+3e8 <[^>]+>
0+3d0 <[^>]+> f7ff bfae b\.w 0+330 <[^>]+>
0+3d4 <[^>]+> f000 b808 b\.w 0+3e8 <[^>]+>
0+3d8 <[^>]+> f000 f996 bl 0+330 <[^>]+>
3d8: R_ARM_THM_CALL \.text
0+3dc <[^>]+> f000 f9f2 bl 0+3e8 <[^>]+>
3dc: R_ARM_THM_CALL \.text
0+3e0 <[^>]+> f000 e996 blx 0+330 <[^>]+>
3e0: R_ARM_THM_XPC22 \.text
0+3e4 <[^>]+> f000 e9f2 blx 0+3e8 <[^>]+>
3e4: R_ARM_THM_XPC22 \.text
0+3e8 <[^>]+> 4748 bx r9
0+3ea <[^>]+> 4780 blx r0
0+3ec <[^>]+> 47c8 blx r9
0+3ee <[^>]+> f3c0 8f00 bxj r0
0+3f2 <[^>]+> f3c9 8f00 bxj r9
0+3f6 <[^>]+> fab0 f080 clz r0, r0
0+3fa <[^>]+> fab0 f980 clz r9, r0
0+3fe <[^>]+> fab9 f089 clz r0, r9
0+402 <[^>]+> b661 cpsie f
0+404 <[^>]+> b672 cpsid i
0+406 <[^>]+> b664 cpsie a
0+408 <[^>]+> f3af 8620 cpsid\.w f
0+40c <[^>]+> f3af 8440 cpsie\.w i
0+410 <[^>]+> f3af 8680 cpsid\.w a
0+414 <[^>]+> f3af 8540 cpsie i, #0
0+418 <[^>]+> f3af 8751 cpsid i, #17
0+41c <[^>]+> f3af 8100 cps #0
0+420 <[^>]+> f3af 8111 cps #17
0+424 <[^>]+> 4600 mov r0, r0
0+426 <[^>]+> 4681 mov r9, r0
0+428 <[^>]+> 4648 mov r0, r9
0+42a <[^>]+> ea4f 0000 mov\.w r0, r0
0+42e <[^>]+> ea4f 0900 mov\.w r9, r0
0+432 <[^>]+> ea4f 0009 mov\.w r0, r9
0+436 <[^>]+> b910 cbnz r0, 0+43e <[^>]+>
0+438 <[^>]+> b105 cbz r5, 0+43c <[^>]+>
0+43a <[^>]+> bf00 nop
0+43c <[^>]+> bf10 yield
0+43e <[^>]+> bf20 wfe
0+440 <[^>]+> bf30 wfi
0+442 <[^>]+> bf40 sev
0+444 <[^>]+> f3af 8000 nop\.w
0+448 <[^>]+> f3af 8001 yield\.w
0+44c <[^>]+> f3af 8002 wfe\.w
0+450 <[^>]+> f3af 8003 wfi\.w
0+454 <[^>]+> f3af 9004 sev\.w
0+458 <[^>]+> bf90 nop \{9\}
0+45a <[^>]+> f3af 8081 nop\.w \{129\}
0+45e <[^>]+> bf08 it eq
0+460 <[^>]+> bf00 nop
0+462 <[^>]+> bf18 it ne
0+464 <[^>]+> bf00 nop
0+466 <[^>]+> bf28 it cs
0+468 <[^>]+> bf00 nop
0+46a <[^>]+> bf28 it cs
0+46c <[^>]+> bf00 nop
0+46e <[^>]+> bf38 it cc
0+470 <[^>]+> bf00 nop
0+472 <[^>]+> bf38 it cc
0+474 <[^>]+> bf00 nop
0+476 <[^>]+> bf38 it cc
0+478 <[^>]+> bf00 nop
0+47a <[^>]+> bf48 it mi
0+47c <[^>]+> bf00 nop
0+47e <[^>]+> bf58 it pl
0+480 <[^>]+> bf00 nop
0+482 <[^>]+> bf68 it vs
0+484 <[^>]+> bf00 nop
0+486 <[^>]+> bf78 it vc
0+488 <[^>]+> bf00 nop
0+48a <[^>]+> bf88 it hi
0+48c <[^>]+> bf00 nop
0+48e <[^>]+> bfa8 it ge
0+490 <[^>]+> bf00 nop
0+492 <[^>]+> bfb8 it lt
0+494 <[^>]+> bf00 nop
0+496 <[^>]+> bfc8 it gt
0+498 <[^>]+> bf00 nop
0+49a <[^>]+> bfd8 it le
0+49c <[^>]+> bf00 nop
0+49e <[^>]+> bfe8 it al
0+4a0 <[^>]+> bf00 nop
0+4a2 <[^>]+> bf04 itt eq
0+4a4 <[^>]+> bf00 nop
0+4a6 <[^>]+> bf00 nop
0+4a8 <[^>]+> bf0c ite eq
0+4aa <[^>]+> bf00 nop
0+4ac <[^>]+> bf00 nop
0+4ae <[^>]+> bf02 ittt eq
0+4b0 <[^>]+> bf00 nop
0+4b2 <[^>]+> bf00 nop
0+4b4 <[^>]+> bf00 nop
0+4b6 <[^>]+> bf0a itet eq
0+4b8 <[^>]+> bf00 nop
0+4ba <[^>]+> bf00 nop
0+4bc <[^>]+> bf00 nop
0+4be <[^>]+> bf06 itte eq
0+4c0 <[^>]+> bf00 nop
0+4c2 <[^>]+> bf00 nop
0+4c4 <[^>]+> bf00 nop
0+4c6 <[^>]+> bf0e itee eq
0+4c8 <[^>]+> bf00 nop
0+4ca <[^>]+> bf00 nop
0+4cc <[^>]+> bf00 nop
0+4ce <[^>]+> bf01 itttt eq
0+4d0 <[^>]+> bf00 nop
0+4d2 <[^>]+> bf00 nop
0+4d4 <[^>]+> bf00 nop
0+4d6 <[^>]+> bf00 nop
0+4d8 <[^>]+> bf09 itett eq
0+4da <[^>]+> bf00 nop
0+4dc <[^>]+> bf00 nop
0+4de <[^>]+> bf00 nop
0+4e0 <[^>]+> bf00 nop
0+4e2 <[^>]+> bf05 ittet eq
0+4e4 <[^>]+> bf00 nop
0+4e6 <[^>]+> bf00 nop
0+4e8 <[^>]+> bf00 nop
0+4ea <[^>]+> bf00 nop
0+4ec <[^>]+> bf03 ittte eq
0+4ee <[^>]+> bf00 nop
0+4f0 <[^>]+> bf00 nop
0+4f2 <[^>]+> bf00 nop
0+4f4 <[^>]+> bf00 nop
0+4f6 <[^>]+> bf07 ittee eq
0+4f8 <[^>]+> bf00 nop
0+4fa <[^>]+> bf00 nop
0+4fc <[^>]+> bf00 nop
0+4fe <[^>]+> bf00 nop
0+500 <[^>]+> bf0b itete eq
0+502 <[^>]+> bf00 nop
0+504 <[^>]+> bf00 nop
0+506 <[^>]+> bf00 nop
0+508 <[^>]+> bf00 nop
0+50a <[^>]+> bf0d iteet eq
0+50c <[^>]+> bf00 nop
0+50e <[^>]+> bf00 nop
0+510 <[^>]+> bf00 nop
0+512 <[^>]+> bf00 nop
0+514 <[^>]+> bf0f iteee eq
0+516 <[^>]+> bf00 nop
0+518 <[^>]+> bf00 nop
0+51a <[^>]+> bf00 nop
0+51c <[^>]+> bf00 nop
0+51e <[^>]+> bf1c itt ne
0+520 <[^>]+> bf00 nop
0+522 <[^>]+> bf00 nop
0+524 <[^>]+> bf14 ite ne
0+526 <[^>]+> bf00 nop
0+528 <[^>]+> bf00 nop
0+52a <[^>]+> bf1e ittt ne
0+52c <[^>]+> bf00 nop
0+52e <[^>]+> bf00 nop
0+530 <[^>]+> bf00 nop
0+532 <[^>]+> bf16 itet ne
0+534 <[^>]+> bf00 nop
0+536 <[^>]+> bf00 nop
0+538 <[^>]+> bf00 nop
0+53a <[^>]+> bf1a itte ne
0+53c <[^>]+> bf00 nop
0+53e <[^>]+> bf00 nop
0+540 <[^>]+> bf00 nop
0+542 <[^>]+> bf12 itee ne
0+544 <[^>]+> bf00 nop
0+546 <[^>]+> bf00 nop
0+548 <[^>]+> bf00 nop
0+54a <[^>]+> bf1f itttt ne
0+54c <[^>]+> bf00 nop
0+54e <[^>]+> bf00 nop
0+550 <[^>]+> bf00 nop
0+552 <[^>]+> bf00 nop
0+554 <[^>]+> bf17 itett ne
0+556 <[^>]+> bf00 nop
0+558 <[^>]+> bf00 nop
0+55a <[^>]+> bf00 nop
0+55c <[^>]+> bf00 nop
0+55e <[^>]+> bf1b ittet ne
0+560 <[^>]+> bf00 nop
0+562 <[^>]+> bf00 nop
0+564 <[^>]+> bf00 nop
0+566 <[^>]+> bf00 nop
0+568 <[^>]+> bf1d ittte ne
0+56a <[^>]+> bf00 nop
0+56c <[^>]+> bf00 nop
0+56e <[^>]+> bf00 nop
0+570 <[^>]+> bf00 nop
0+572 <[^>]+> bf19 ittee ne
0+574 <[^>]+> bf00 nop
0+576 <[^>]+> bf00 nop
0+578 <[^>]+> bf00 nop
0+57a <[^>]+> bf00 nop
0+57c <[^>]+> bf15 itete ne
0+57e <[^>]+> bf00 nop
0+580 <[^>]+> bf00 nop
0+582 <[^>]+> bf00 nop
0+584 <[^>]+> bf00 nop
0+586 <[^>]+> bf13 iteet ne
0+588 <[^>]+> bf00 nop
0+58a <[^>]+> bf00 nop
0+58c <[^>]+> bf00 nop
0+58e <[^>]+> bf00 nop
0+590 <[^>]+> bf11 iteee ne
0+592 <[^>]+> bf00 nop
0+594 <[^>]+> bf00 nop
0+596 <[^>]+> bf00 nop
0+598 <[^>]+> bf00 nop
0+59a <[^>]+> f895 1000 ldrb\.w r1, \[r5\]
0+59e <[^>]+> f895 1330 ldrb\.w r1, \[r5, #816\]
0+5a2 <[^>]+> f815 1c30 ldrb\.w r1, \[r5, #-48\]
0+5a6 <[^>]+> f815 1b30 ldrb\.w r1, \[r5, #48\]!
0+5aa <[^>]+> f815 1930 ldrb\.w r1, \[r5, #-48\]!
0+5ae <[^>]+> f815 1f30 ldrb\.w r1, \[r5\], #48
0+5b2 <[^>]+> f815 1d30 ldrb\.w r1, \[r5\], #-48
0+5b6 <[^>]+> 5d29 ldrb r1, \[r5, r4\]
0+5b8 <[^>]+> f819 100c ldrb\.w r1, \[r9, ip\]
0+5bc <[^>]+> f89f 10ac ldrb\.w r1, \[pc, #172\] ; 0+66c <[^>]+>
0+5c0 <[^>]+> f81f 102a ldrb\.w r1, \[pc, #-42\] ; 0+59a <[^>]+>
0+5c4 <[^>]+> f995 1000 ldrsb\.w r1, \[r5\]
0+5c8 <[^>]+> f995 1330 ldrsb\.w r1, \[r5, #816\]
0+5cc <[^>]+> f915 1c30 ldrsb\.w r1, \[r5, #-48\]
0+5d0 <[^>]+> f915 1b30 ldrsb\.w r1, \[r5, #48\]!
0+5d4 <[^>]+> f915 1930 ldrsb\.w r1, \[r5, #-48\]!
0+5d8 <[^>]+> f915 1f30 ldrsb\.w r1, \[r5\], #48
0+5dc <[^>]+> f915 1d30 ldrsb\.w r1, \[r5\], #-48
0+5e0 <[^>]+> 5729 ldrsb r1, \[r5, r4\]
0+5e2 <[^>]+> f919 100c ldrsb\.w r1, \[r9, ip\]
0+5e6 <[^>]+> f99f 1084 ldrsb\.w r1, \[pc, #132\] ; 0+66c <[^>]+>
0+5ea <[^>]+> f91f 1052 ldrsb\.w r1, \[pc, #-82\] ; 0+59a <[^>]+>
0+5ee <[^>]+> f8b5 1000 ldrh\.w r1, \[r5\]
0+5f2 <[^>]+> f8b5 1330 ldrh\.w r1, \[r5, #816\]
0+5f6 <[^>]+> f835 1c30 ldrh\.w r1, \[r5, #-48\]
0+5fa <[^>]+> f835 1b30 ldrh\.w r1, \[r5, #48\]!
0+5fe <[^>]+> f835 1930 ldrh\.w r1, \[r5, #-48\]!
0+602 <[^>]+> f835 1f30 ldrh\.w r1, \[r5\], #48
0+606 <[^>]+> f835 1d30 ldrh\.w r1, \[r5\], #-48
0+60a <[^>]+> 5b29 ldrh r1, \[r5, r4\]
0+60c <[^>]+> f839 100c ldrh\.w r1, \[r9, ip\]
0+610 <[^>]+> f8bf 1058 ldrh\.w r1, \[pc, #88\] ; 0+66c <[^>]+>
0+614 <[^>]+> f83f 107e ldrh\.w r1, \[pc, #-126\] ; 0+59a <[^>]+>
0+618 <[^>]+> f9b5 1000 ldrsh\.w r1, \[r5\]
0+61c <[^>]+> f9b5 1330 ldrsh\.w r1, \[r5, #816\]
0+620 <[^>]+> f935 1c30 ldrsh\.w r1, \[r5, #-48\]
0+624 <[^>]+> f935 1b30 ldrsh\.w r1, \[r5, #48\]!
0+628 <[^>]+> f935 1930 ldrsh\.w r1, \[r5, #-48\]!
0+62c <[^>]+> f935 1f30 ldrsh\.w r1, \[r5\], #48
0+630 <[^>]+> f935 1d30 ldrsh\.w r1, \[r5\], #-48
0+634 <[^>]+> 5f29 ldrsh r1, \[r5, r4\]
0+636 <[^>]+> f939 100c ldrsh\.w r1, \[r9, ip\]
0+63a <[^>]+> f9bf 1030 ldrsh\.w r1, \[pc, #48\] ; 0+66c <[^>]+>
0+63e <[^>]+> f93f 10a6 ldrsh\.w r1, \[pc, #-166\] ; 0+59a <[^>]+>
0+642 <[^>]+> f8d5 1000 ldr\.w r1, \[r5\]
0+646 <[^>]+> f8d5 1330 ldr\.w r1, \[r5, #816\]
0+64a <[^>]+> f855 1c30 ldr\.w r1, \[r5, #-48\]
0+64e <[^>]+> f855 1b30 ldr\.w r1, \[r5, #48\]!
0+652 <[^>]+> f855 1930 ldr\.w r1, \[r5, #-48\]!
0+656 <[^>]+> f855 1f30 ldr\.w r1, \[r5\], #48
0+65a <[^>]+> f855 1d30 ldr\.w r1, \[r5\], #-48
0+65e <[^>]+> 5929 ldr r1, \[r5, r4\]
0+660 <[^>]+> f859 100c ldr\.w r1, \[r9, ip\]
0+664 <[^>]+> f8df 1004 ldr\.w r1, \[pc, #4\] ; 0+66c <[^>]+>
0+668 <[^>]+> f85f 10d2 ldr\.w r1, \[pc, #-210\] ; 0+59a <[^>]+>
0+66c <[^>]+> f885 1000 strb\.w r1, \[r5\]
0+670 <[^>]+> f885 1330 strb\.w r1, \[r5, #816\]
0+674 <[^>]+> f805 1c30 strb\.w r1, \[r5, #-48\]
0+678 <[^>]+> f805 1b30 strb\.w r1, \[r5, #48\]!
0+67c <[^>]+> f805 1930 strb\.w r1, \[r5, #-48\]!
0+680 <[^>]+> f805 1f30 strb\.w r1, \[r5\], #48
0+684 <[^>]+> f805 1d30 strb\.w r1, \[r5\], #-48
0+688 <[^>]+> 5529 strb r1, \[r5, r4\]
0+68a <[^>]+> f809 100c strb\.w r1, \[r9, ip\]
0+68e <[^>]+> f88f 1086 strb\.w r1, \[pc, #134\] ; 0+716 <[^>]+>
0+692 <[^>]+> f80f 1028 strb\.w r1, \[pc, #-40\] ; 0+66c <[^>]+>
0+696 <[^>]+> f8a5 1000 strh\.w r1, \[r5\]
0+69a <[^>]+> f8a5 1330 strh\.w r1, \[r5, #816\]
0+69e <[^>]+> f825 1c30 strh\.w r1, \[r5, #-48\]
0+6a2 <[^>]+> f825 1b30 strh\.w r1, \[r5, #48\]!
0+6a6 <[^>]+> f825 1930 strh\.w r1, \[r5, #-48\]!
0+6aa <[^>]+> f825 1f30 strh\.w r1, \[r5\], #48
0+6ae <[^>]+> f825 1d30 strh\.w r1, \[r5\], #-48
0+6b2 <[^>]+> 5329 strh r1, \[r5, r4\]
0+6b4 <[^>]+> f829 100c strh\.w r1, \[r9, ip\]
0+6b8 <[^>]+> f8af 105a strh\.w r1, \[pc, #90\] ; 0+716 <[^>]+>
0+6bc <[^>]+> f82f 1054 strh\.w r1, \[pc, #-84\] ; 0+66c <[^>]+>
0+6c0 <[^>]+> f8c5 1000 str\.w r1, \[r5\]
0+6c4 <[^>]+> f8c5 1330 str\.w r1, \[r5, #816\]
0+6c8 <[^>]+> f845 1c30 str\.w r1, \[r5, #-48\]
0+6cc <[^>]+> f845 1b30 str\.w r1, \[r5, #48\]!
0+6d0 <[^>]+> f845 1930 str\.w r1, \[r5, #-48\]!
0+6d4 <[^>]+> f845 1f30 str\.w r1, \[r5\], #48
0+6d8 <[^>]+> f845 1d30 str\.w r1, \[r5\], #-48
0+6dc <[^>]+> 5129 str r1, \[r5, r4\]
0+6de <[^>]+> f849 100c str\.w r1, \[r9, ip\]
0+6e2 <[^>]+> f8cf 1032 str\.w r1, \[pc, #50\] ; 0+716 <[^>]+>
0+6e6 <[^>]+> f84f 107c str\.w r1, \[pc, #-124\] ; 0+66c <[^>]+>
0+6ea <[^>]+> f895 f000 pld \[r5\]
0+6ee <[^>]+> f895 f330 pld \[r5, #816\]
0+6f2 <[^>]+> f815 fc30 pld \[r5, #-48\]
0+6f6 <[^>]+> f815 fb30 pld \[r5, #48\]!
0+6fa <[^>]+> f815 f930 pld \[r5, #-48\]!
0+6fe <[^>]+> f815 ff30 pld \[r5\], #48
0+702 <[^>]+> f815 fd30 pld \[r5\], #-48
0+706 <[^>]+> f815 f000 pld \[r5, r0\]
0+70a <[^>]+> f819 f000 pld \[r9, r0\]
0+70e <[^>]+> f89f f006 pld \[pc, #6\] ; 0+716 <[^>]+>
0+712 <[^>]+> f81f f0a8 pld \[pc, #-168\] ; 0+66c <[^>]+>
0+716 <[^>]+> e9d5 2300 ldrd r2, r3, \[r5\]
0+71a <[^>]+> e9d5 230c ldrd r2, r3, \[r5, #48\]
0+71e <[^>]+> e955 230c ldrd r2, r3, \[r5, #-48\]
0+722 <[^>]+> e9c5 2300 strd r2, r3, \[r5\]
0+726 <[^>]+> e9c5 230c strd r2, r3, \[r5, #48\]
0+72a <[^>]+> e945 230c strd r2, r3, \[r5, #-48\]
0+72e <[^>]+> f835 1e00 ldrht r1, \[r5\]
0+732 <[^>]+> f835 1e30 ldrht r1, \[r5, #48\]
0+736 <[^>]+> f915 1e00 ldrsbt r1, \[r5\]
0+73a <[^>]+> f915 1e30 ldrsbt r1, \[r5, #48\]
0+73e <[^>]+> f835 1e00 ldrht r1, \[r5\]
0+742 <[^>]+> f835 1e30 ldrht r1, \[r5, #48\]
0+746 <[^>]+> f935 1e00 ldrsht r1, \[r5\]
0+74a <[^>]+> f935 1e30 ldrsht r1, \[r5, #48\]
0+74e <[^>]+> f855 1e00 ldrt r1, \[r5\]
0+752 <[^>]+> f855 1e30 ldrt r1, \[r5, #48\]
0+756 <[^>]+> e8d4 1f4f ldrexb r1, \[r4\]
0+75a <[^>]+> e8d4 1f5f ldrexh r1, \[r4\]
0+75e <[^>]+> e854 1f00 ldrex r1, \[r4\]
0+762 <[^>]+> e8d4 127f ldrexd r1, r2, \[r4\]
0+766 <[^>]+> e8c4 2f41 strexb r1, r2, \[r4\]
0+76a <[^>]+> e8c4 2f51 strexh r1, r2, \[r4\]
0+76e <[^>]+> e844 2100 strex r1, r2, \[r4\]
0+772 <[^>]+> e8c4 2371 strexd r1, r2, r3, \[r4\]
0+776 <[^>]+> e854 1f81 ldrex r1, \[r4, #516\]
0+77a <[^>]+> e844 2181 strex r1, r2, \[r4, #516\]
0+77e <[^>]+> c80e ldmia r0!, \{r1, r2, r3\}
0+780 <[^>]+> ca07 ldmia r2!, \{r0, r1, r2\}
0+782 <[^>]+> e892 0007 ldmia\.w r2, \{r0, r1, r2\}
0+786 <[^>]+> e899 0007 ldmia\.w r9, \{r0, r1, r2\}
0+78a <[^>]+> e890 0580 ldmia\.w r0, \{r7, r8, sl\}
0+78e <[^>]+> e8b0 0580 ldmia\.w r0!, \{r7, r8, sl\}
0+792 <[^>]+> c00e stmia r0!, \{r1, r2, r3\}
0+794 <[^>]+> c20b stmia r2!, \{r0, r1, r3\}
0+796 <[^>]+> e8a2 000b stmia\.w r2!, \{r0, r1, r3\}
0+79a <[^>]+> e889 0007 stmia\.w r9, \{r0, r1, r2\}
0+79e <[^>]+> e880 0580 stmia\.w r0, \{r7, r8, sl\}
0+7a2 <[^>]+> e8a0 0580 stmia\.w r0!, \{r7, r8, sl\}
0+7a6 <[^>]+> e900 0580 stmdb r0, \{r7, r8, sl\}
0+7aa <[^>]+> e910 0580 ldmdb r0, \{r7, r8, sl\}
0+7ae <[^>]+> fb00 0000 mla r0, r0, r0, r0
0+7b2 <[^>]+> fb00 0010 mls r0, r0, r0, r0
0+7b6 <[^>]+> fb00 0900 mla r9, r0, r0, r0
0+7ba <[^>]+> fb09 0000 mla r0, r9, r0, r0
0+7be <[^>]+> fb00 0009 mla r0, r0, r9, r0
0+7c2 <[^>]+> fb00 9000 mla r0, r0, r0, r9
0+7c6 <[^>]+> 4200 tst r0, r0
0+7c8 <[^>]+> 4200 tst r0, r0
0+7ca <[^>]+> 4205 tst r5, r0
0+7cc <[^>]+> 4228 tst r0, r5
0+7ce <[^>]+> ea10 4f65 tst\.w r0, r5, asr #17
0+7d2 <[^>]+> ea10 0f00 tst\.w r0, r0
0+7d6 <[^>]+> ea19 0f00 tst\.w r9, r0
0+7da <[^>]+> ea10 0f09 tst\.w r0, r9
0+7de <[^>]+> f010 0f81 tst\.w r0, #129 ; 0x81
0+7e2 <[^>]+> f015 0f81 tst\.w r5, #129 ; 0x81
0+7e6 <[^>]+> ea90 0f00 teq r0, r0
0+7ea <[^>]+> ea90 0f00 teq r0, r0
0+7ee <[^>]+> ea95 0f00 teq r5, r0
0+7f2 <[^>]+> ea90 0f05 teq r0, r5
0+7f6 <[^>]+> ea90 4f65 teq r0, r5, asr #17
0+7fa <[^>]+> ea90 0f00 teq r0, r0
0+7fe <[^>]+> ea99 0f00 teq r9, r0
0+802 <[^>]+> ea90 0f09 teq r0, r9
0+806 <[^>]+> f090 0f81 teq r0, #129 ; 0x81
0+80a <[^>]+> f095 0f81 teq r5, #129 ; 0x81
0+80e <[^>]+> 4280 cmp r0, r0
0+810 <[^>]+> 4280 cmp r0, r0
0+812 <[^>]+> 4285 cmp r5, r0
0+814 <[^>]+> 42a8 cmp r0, r5
0+816 <[^>]+> ebb0 4f65 cmp\.w r0, r5, asr #17
0+81a <[^>]+> ebb0 0f00 cmp\.w r0, r0
0+81e <[^>]+> 4581 cmp r9, r0
0+820 <[^>]+> ebb0 0f09 cmp\.w r0, r9
0+824 <[^>]+> f1b0 0f81 cmp\.w r0, #129 ; 0x81
0+828 <[^>]+> f1b5 0f81 cmp\.w r5, #129 ; 0x81
0+82c <[^>]+> 42c0 cmn r0, r0
0+82e <[^>]+> 42c0 cmn r0, r0
0+830 <[^>]+> 42c5 cmn r5, r0
0+832 <[^>]+> 42e8 cmn r0, r5
0+834 <[^>]+> eb10 4f65 cmn\.w r0, r5, asr #17
0+838 <[^>]+> eb10 0f00 cmn\.w r0, r0
0+83c <[^>]+> eb19 0f00 cmn\.w r9, r0
0+840 <[^>]+> eb10 0f09 cmn\.w r0, r9
0+844 <[^>]+> f110 0f81 cmn\.w r0, #129 ; 0x81
0+848 <[^>]+> f115 0f81 cmn\.w r5, #129 ; 0x81
0+84c <[^>]+> 1c00 adds r0, r0, #0
0+84e <[^>]+> 4600 mov r0, r0
0+850 <[^>]+> 1c05 adds r5, r0, #0
0+852 <[^>]+> 4628 mov r0, r5
0+854 <[^>]+> ea4f 4065 mov\.w r0, r5, asr #17
0+858 <[^>]+> ea4f 0000 mov\.w r0, r0
0+85c <[^>]+> ea5f 0900 movs\.w r9, r0
0+860 <[^>]+> ea5f 0009 movs\.w r0, r9
0+864 <[^>]+> f04f 0081 mov\.w r0, #129 ; 0x81
0+868 <[^>]+> f04f 0581 mov\.w r5, #129 ; 0x81
0+86c <[^>]+> 43c0 mvns r0, r0
0+86e <[^>]+> ea6f 0000 mvn\.w r0, r0
0+872 <[^>]+> 43c5 mvns r5, r0
0+874 <[^>]+> ea6f 0005 mvn\.w r0, r5
0+878 <[^>]+> ea6f 4065 mvn\.w r0, r5, asr #17
0+87c <[^>]+> ea6f 0000 mvn\.w r0, r0
0+880 <[^>]+> ea7f 0900 mvns\.w r9, r0
0+884 <[^>]+> ea7f 0009 mvns\.w r0, r9
0+888 <[^>]+> f06f 0081 mvn\.w r0, #129 ; 0x81
0+88c <[^>]+> f06f 0581 mvn\.w r5, #129 ; 0x81
0+890 <[^>]+> f240 0000 movw r0, #0 ; 0x0
0+894 <[^>]+> f2c0 0000 movt r0, #0 ; 0x0
0+898 <[^>]+> f240 0900 movw r9, #0 ; 0x0
0+89c <[^>]+> f249 0000 movw r0, #36864 ; 0x9000
0+8a0 <[^>]+> f640 0000 movw r0, #2048 ; 0x800
0+8a4 <[^>]+> f240 5000 movw r0, #1280 ; 0x500
0+8a8 <[^>]+> f240 0081 movw r0, #129 ; 0x81
0+8ac <[^>]+> f64f 70ff movw r0, #65535 ; 0xffff
0+8b0 <[^>]+> f3ef 8000 mrs r0, SPSR
0+8b4 <[^>]+> f3ff 8000 mrs r0, CPSR
0+8b8 <[^>]+> f3ef 8900 mrs r9, SPSR
0+8bc <[^>]+> f3ff 8900 mrs r9, CPSR
0+8c0 <[^>]+> f380 8100 msr SPSR_c, r0
0+8c4 <[^>]+> f390 8100 msr CPSR_c, r0
0+8c8 <[^>]+> f389 8100 msr SPSR_c, r9
0+8cc <[^>]+> f380 8200 msr SPSR_x, r0
0+8d0 <[^>]+> f380 8400 msr SPSR_s, r0
0+8d4 <[^>]+> f380 8800 msr SPSR_f, r0
0+8d8 <[^>]+> fb00 f000 mul\.w r0, r0, r0
0+8dc <[^>]+> fb09 f000 mul\.w r0, r9, r0
0+8e0 <[^>]+> fb00 f009 mul\.w r0, r0, r9
0+8e4 <[^>]+> fb00 f000 mul\.w r0, r0, r0
0+8e8 <[^>]+> fb00 f909 mul\.w r9, r0, r9
0+8ec <[^>]+> 4345 muls r5, r0
0+8ee <[^>]+> 4345 muls r5, r0
0+8f0 <[^>]+> 4368 muls r0, r5
0+8f2 <[^>]+> fb80 0100 smull r0, r1, r0, r0
0+8f6 <[^>]+> fba0 0100 umull r0, r1, r0, r0
0+8fa <[^>]+> fbc0 0100 smlal r0, r1, r0, r0
0+8fe <[^>]+> fbe0 0100 umlal r0, r1, r0, r0
0+902 <[^>]+> fb80 9000 smull r9, r0, r0, r0
0+906 <[^>]+> fb80 0900 smull r0, r9, r0, r0
0+90a <[^>]+> fb89 0100 smull r0, r1, r9, r0
0+90e <[^>]+> fb80 0109 smull r0, r1, r0, r9
0+912 <[^>]+> 4240 negs r0, r0
0+914 <[^>]+> 4268 negs r0, r5
0+916 <[^>]+> 4245 negs r5, r0
0+918 <[^>]+> f1d0 0000 rsbs r0, r0, #0 ; 0x0
0+91c <[^>]+> f1d0 0500 rsbs r5, r0, #0 ; 0x0
0+920 <[^>]+> f1d5 0000 rsbs r0, r5, #0 ; 0x0
0+924 <[^>]+> f1c9 0000 rsb r0, r9, #0 ; 0x0
0+928 <[^>]+> f1c0 0900 rsb r9, r0, #0 ; 0x0
0+92c <[^>]+> f1d9 0000 rsbs r0, r9, #0 ; 0x0
0+930 <[^>]+> f1d0 0900 rsbs r9, r0, #0 ; 0x0
0+934 <[^>]+> eac0 0000 pkhbt r0, r0, r0
0+938 <[^>]+> eac0 0900 pkhbt r9, r0, r0
0+93c <[^>]+> eac9 0000 pkhbt r0, r9, r0
0+940 <[^>]+> eac0 0009 pkhbt r0, r0, r9
0+944 <[^>]+> eac0 5000 pkhbt r0, r0, r0, lsl #20
0+948 <[^>]+> eac0 00c0 pkhbt r0, r0, r0, lsl #3
0+94c <[^>]+> eac2 0103 pkhbt r1, r2, r3
0+950 <[^>]+> eac2 4163 pkhtb r1, r2, r3, asr #17
0+954 <[^>]+> b401 push \{r0\}
0+956 <[^>]+> bc01 pop \{r0\}
0+958 <[^>]+> b502 push \{r1, lr\}
0+95a <[^>]+> bd02 pop \{r1, pc\}
0+95c <[^>]+> e8bd 1f00 ldmia\.w sp!, \{r8, r9, sl, fp, ip\}
0+960 <[^>]+> e8ad 1f00 stmia\.w sp!, \{r8, r9, sl, fp, ip\}
0+964 <[^>]+> fa92 f113 qadd16 r1, r2, r3
0+968 <[^>]+> fa82 f113 qadd8 r1, r2, r3
0+96c <[^>]+> faa2 f113 qaddsubx r1, r2, r3
0+970 <[^>]+> fad2 f113 qsub16 r1, r2, r3
0+974 <[^>]+> fac2 f113 qsub8 r1, r2, r3
0+978 <[^>]+> fae2 f113 qsubaddx r1, r2, r3
0+97c <[^>]+> fa92 f103 sadd16 r1, r2, r3
0+980 <[^>]+> fa82 f103 sadd8 r1, r2, r3
0+984 <[^>]+> faa2 f103 saddsubx r1, r2, r3
0+988 <[^>]+> fad2 f103 ssub16 r1, r2, r3
0+98c <[^>]+> fac2 f103 ssub8 r1, r2, r3
0+990 <[^>]+> fae2 f103 ssubaddx r1, r2, r3
0+994 <[^>]+> fa92 f123 shadd16 r1, r2, r3
0+998 <[^>]+> fa82 f123 shadd8 r1, r2, r3
0+99c <[^>]+> faa2 f123 shaddsubx r1, r2, r3
0+9a0 <[^>]+> fad2 f123 shsub16 r1, r2, r3
0+9a4 <[^>]+> fac2 f123 shsub8 r1, r2, r3
0+9a8 <[^>]+> fae2 f123 shsubaddx r1, r2, r3
0+9ac <[^>]+> fa92 f143 uadd16 r1, r2, r3
0+9b0 <[^>]+> fa82 f143 uadd8 r1, r2, r3
0+9b4 <[^>]+> faa2 f143 uaddsubx r1, r2, r3
0+9b8 <[^>]+> fad2 f143 usub16 r1, r2, r3
0+9bc <[^>]+> fac2 f143 usub8 r1, r2, r3
0+9c0 <[^>]+> fae2 f143 usubaddx r1, r2, r3
0+9c4 <[^>]+> fa92 f163 uhadd16 r1, r2, r3
0+9c8 <[^>]+> fa82 f163 uhadd8 r1, r2, r3
0+9cc <[^>]+> faa2 f163 uhaddsubx r1, r2, r3
0+9d0 <[^>]+> fad2 f163 uhsub16 r1, r2, r3
0+9d4 <[^>]+> fac2 f163 uhsub8 r1, r2, r3
0+9d8 <[^>]+> fae2 f163 uhsubaddx r1, r2, r3
0+9dc <[^>]+> fa92 f153 uqadd16 r1, r2, r3
0+9e0 <[^>]+> fa82 f153 uqadd8 r1, r2, r3
0+9e4 <[^>]+> faa2 f153 uqaddsubx r1, r2, r3
0+9e8 <[^>]+> fad2 f153 uqsub16 r1, r2, r3
0+9ec <[^>]+> fac2 f153 uqsub8 r1, r2, r3
0+9f0 <[^>]+> fae2 f153 uqsubaddx r1, r2, r3
0+9f4 <[^>]+> faa2 f183 sel r1, r2, r3
0+9f8 <[^>]+> ba00 rev r0, r0
0+9fa <[^>]+> fa90 f080 rev\.w r0, r0
0+9fe <[^>]+> ba28 rev r0, r5
0+a00 <[^>]+> ba05 rev r5, r0
0+a02 <[^>]+> fa99 f089 rev\.w r0, r9
0+a06 <[^>]+> fa90 f980 rev\.w r9, r0
0+a0a <[^>]+> ba40 rev16 r0, r0
0+a0c <[^>]+> fa90 f090 rev16\.w r0, r0
0+a10 <[^>]+> ba68 rev16 r0, r5
0+a12 <[^>]+> ba45 rev16 r5, r0
0+a14 <[^>]+> fa99 f099 rev16\.w r0, r9
0+a18 <[^>]+> fa90 f990 rev16\.w r9, r0
0+a1c <[^>]+> bac0 revsh r0, r0
0+a1e <[^>]+> fa90 f0b0 revsh\.w r0, r0
0+a22 <[^>]+> bae8 revsh r0, r5
0+a24 <[^>]+> bac5 revsh r5, r0
0+a26 <[^>]+> fa99 f0b9 revsh\.w r0, r9
0+a2a <[^>]+> fa90 f9b0 revsh\.w r9, r0
0+a2e <[^>]+> fa90 f0a0 rbit r0, r0
0+a32 <[^>]+> fa90 f0a0 rbit r0, r0
0+a36 <[^>]+> fa95 f0a0 rbit r0, r5
0+a3a <[^>]+> fa90 f5a0 rbit r5, r0
0+a3e <[^>]+> fa99 f0a0 rbit r0, r9
0+a42 <[^>]+> fa90 f9a0 rbit r9, r0
0+a46 <[^>]+> 0440 lsls r0, r0, #17
0+a48 <[^>]+> 0380 lsls r0, r0, #14
0+a4a <[^>]+> 0445 lsls r5, r0, #17
0+a4c <[^>]+> 03a8 lsls r0, r5, #14
0+a4e <[^>]+> 4080 lsls r0, r0
0+a50 <[^>]+> 40a8 lsls r0, r5
0+a52 <[^>]+> 40a8 lsls r0, r5
0+a54 <[^>]+> ea4f 4949 mov\.w r9, r9, lsl #17
0+a58 <[^>]+> ea4f 3989 mov\.w r9, r9, lsl #14
0+a5c <[^>]+> ea5f 4049 movs\.w r0, r9, lsl #17
0+a60 <[^>]+> ea4f 3980 mov\.w r9, r0, lsl #14
0+a64 <[^>]+> fa00 f000 lsl\.w r0, r0, r0
0+a68 <[^>]+> fa09 f909 lsl\.w r9, r9, r9
0+a6c <[^>]+> fa19 f900 lsls\.w r9, r9, r0
0+a70 <[^>]+> fa00 f009 lsl\.w r0, r0, r9
0+a74 <[^>]+> fa00 f005 lsl\.w r0, r0, r5
0+a78 <[^>]+> fa11 f002 lsls\.w r0, r1, r2
0+a7c <[^>]+> 0c40 lsrs r0, r0, #17
0+a7e <[^>]+> 0b80 lsrs r0, r0, #14
0+a80 <[^>]+> 0c45 lsrs r5, r0, #17
0+a82 <[^>]+> 0ba8 lsrs r0, r5, #14
0+a84 <[^>]+> 40c0 lsrs r0, r0
0+a86 <[^>]+> 40e8 lsrs r0, r5
0+a88 <[^>]+> 40e8 lsrs r0, r5
0+a8a <[^>]+> ea4f 4959 mov\.w r9, r9, lsr #17
0+a8e <[^>]+> ea4f 3999 mov\.w r9, r9, lsr #14
0+a92 <[^>]+> ea5f 4059 movs\.w r0, r9, lsr #17
0+a96 <[^>]+> ea4f 3990 mov\.w r9, r0, lsr #14
0+a9a <[^>]+> fa20 f000 lsr\.w r0, r0, r0
0+a9e <[^>]+> fa29 f909 lsr\.w r9, r9, r9
0+aa2 <[^>]+> fa39 f900 lsrs\.w r9, r9, r0
0+aa6 <[^>]+> fa20 f009 lsr\.w r0, r0, r9
0+aaa <[^>]+> fa20 f005 lsr\.w r0, r0, r5
0+aae <[^>]+> fa31 f002 lsrs\.w r0, r1, r2
0+ab2 <[^>]+> 1440 asrs r0, r0, #17
0+ab4 <[^>]+> 1380 asrs r0, r0, #14
0+ab6 <[^>]+> 1445 asrs r5, r0, #17
0+ab8 <[^>]+> 13a8 asrs r0, r5, #14
0+aba <[^>]+> 4100 asrs r0, r0
0+abc <[^>]+> 4128 asrs r0, r5
0+abe <[^>]+> 4128 asrs r0, r5
0+ac0 <[^>]+> ea4f 4969 mov\.w r9, r9, asr #17
0+ac4 <[^>]+> ea4f 39a9 mov\.w r9, r9, asr #14
0+ac8 <[^>]+> ea5f 4069 movs\.w r0, r9, asr #17
0+acc <[^>]+> ea4f 39a0 mov\.w r9, r0, asr #14
0+ad0 <[^>]+> fa40 f000 asr\.w r0, r0, r0
0+ad4 <[^>]+> fa49 f909 asr\.w r9, r9, r9
0+ad8 <[^>]+> fa59 f900 asrs\.w r9, r9, r0
0+adc <[^>]+> fa40 f009 asr\.w r0, r0, r9
0+ae0 <[^>]+> fa40 f005 asr\.w r0, r0, r5
0+ae4 <[^>]+> fa51 f002 asrs\.w r0, r1, r2
0+ae8 <[^>]+> ea5f 4070 movs\.w r0, r0, ror #17
0+aec <[^>]+> ea5f 30b0 movs\.w r0, r0, ror #14
0+af0 <[^>]+> ea5f 4570 movs\.w r5, r0, ror #17
0+af4 <[^>]+> ea5f 30b5 movs\.w r0, r5, ror #14
0+af8 <[^>]+> 41c0 rors r0, r0
0+afa <[^>]+> 41e8 rors r0, r5
0+afc <[^>]+> 41e8 rors r0, r5
0+afe <[^>]+> ea4f 4979 mov\.w r9, r9, ror #17
0+b02 <[^>]+> ea4f 39b9 mov\.w r9, r9, ror #14
0+b06 <[^>]+> ea5f 4079 movs\.w r0, r9, ror #17
0+b0a <[^>]+> ea4f 39b0 mov\.w r9, r0, ror #14
0+b0e <[^>]+> fa60 f000 ror\.w r0, r0, r0
0+b12 <[^>]+> fa69 f909 ror\.w r9, r9, r9
0+b16 <[^>]+> fa79 f900 rors\.w r9, r9, r0
0+b1a <[^>]+> fa60 f009 ror\.w r0, r0, r9
0+b1e <[^>]+> fa60 f005 ror\.w r0, r0, r5
0+b22 <[^>]+> fa71 f002 rors\.w r0, r1, r2
0+b26 <[^>]+> f7f0 8000 smi #0 ; 0x0
0+b2a <[^>]+> f7fd 8bca smi #43981 ; 0xabcd
0+b2e <[^>]+> fb10 0000 smlabb r0, r0, r0, r0
0+b32 <[^>]+> fb10 0900 smlabb r9, r0, r0, r0
0+b36 <[^>]+> fb19 0000 smlabb r0, r9, r0, r0
0+b3a <[^>]+> fb10 0009 smlabb r0, r0, r9, r0
0+b3e <[^>]+> fb10 9000 smlabb r0, r0, r0, r9
0+b42 <[^>]+> fb10 0020 smlatb r0, r0, r0, r0
0+b46 <[^>]+> fb10 0010 smlabt r0, r0, r0, r0
0+b4a <[^>]+> fb10 0030 smlatt r0, r0, r0, r0
0+b4e <[^>]+> fb30 0000 smlawb r0, r0, r0, r0
0+b52 <[^>]+> fb30 0010 smlawt r0, r0, r0, r0
0+b56 <[^>]+> fb20 0000 smlad r0, r0, r0, r0
0+b5a <[^>]+> fb20 0010 smladx r0, r0, r0, r0
0+b5e <[^>]+> fb40 0000 smlsd r0, r0, r0, r0
0+b62 <[^>]+> fb40 0010 smlsdx r0, r0, r0, r0
0+b66 <[^>]+> fb50 0000 smmla r0, r0, r0, r0
0+b6a <[^>]+> fb50 0010 smmlar r0, r0, r0, r0
0+b6e <[^>]+> fb60 0000 smmls r0, r0, r0, r0
0+b72 <[^>]+> fb60 0010 smmlsr r0, r0, r0, r0
0+b76 <[^>]+> fb70 0000 usada8 r0, r0, r0, r0
0+b7a <[^>]+> fbc0 0080 smlalbb r0, r0, r0, r0
0+b7e <[^>]+> fbc0 9080 smlalbb r9, r0, r0, r0
0+b82 <[^>]+> fbc0 0980 smlalbb r0, r9, r0, r0
0+b86 <[^>]+> fbc9 0080 smlalbb r0, r0, r9, r0
0+b8a <[^>]+> fbc0 0089 smlalbb r0, r0, r0, r9
0+b8e <[^>]+> fbc0 00a0 smlaltb r0, r0, r0, r0
0+b92 <[^>]+> fbc0 0090 smlalbt r0, r0, r0, r0
0+b96 <[^>]+> fbc0 00b0 smlaltt r0, r0, r0, r0
0+b9a <[^>]+> fbc0 00c0 smlald r0, r0, r0, r0
0+b9e <[^>]+> fbc0 00d0 smlaldx r0, r0, r0, r0
0+ba2 <[^>]+> fbd0 00c0 smlsld r0, r0, r0, r0
0+ba6 <[^>]+> fbd0 00d0 smlsldx r0, r0, r0, r0
0+baa <[^>]+> fbe0 0060 umaal r0, r0, r0, r0
0+bae <[^>]+> fb10 f000 smulbb r0, r0, r0
0+bb2 <[^>]+> fb10 f900 smulbb r9, r0, r0
0+bb6 <[^>]+> fb19 f000 smulbb r0, r9, r0
0+bba <[^>]+> fb10 f009 smulbb r0, r0, r9
0+bbe <[^>]+> fb10 f020 smultb r0, r0, r0
0+bc2 <[^>]+> fb10 f010 smulbt r0, r0, r0
0+bc6 <[^>]+> fb10 f030 smultt r0, r0, r0
0+bca <[^>]+> fb30 f000 smulwb r0, r0, r0
0+bce <[^>]+> fb30 f010 smulwt r0, r0, r0
0+bd2 <[^>]+> fb50 f000 smmul r0, r0, r0
0+bd6 <[^>]+> fb50 f010 smmulr r0, r0, r0
0+bda <[^>]+> fb20 f000 smuad r0, r0, r0
0+bde <[^>]+> fb20 f010 smuadx r0, r0, r0
0+be2 <[^>]+> fb40 f000 smusd r0, r0, r0
0+be6 <[^>]+> fb40 f010 smusdx r0, r0, r0
0+bea <[^>]+> fb70 f000 usad8 r0, r0, r0
0+bee <[^>]+> f300 0000 ssat r0, #0, r0
0+bf2 <[^>]+> f300 0000 ssat r0, #0, r0
0+bf6 <[^>]+> f300 0000 ssat r0, #0, r0
0+bfa <[^>]+> f300 0900 ssat r9, #0, r0
0+bfe <[^>]+> f300 0011 ssat r0, #17, r0
0+c02 <[^>]+> f309 0000 ssat r0, #0, r9
0+c06 <[^>]+> f300 7000 ssat r0, #0, r0, lsl #28
0+c0a <[^>]+> f320 00c0 ssat r0, #0, r0, asr #3
0+c0e <[^>]+> f320 0000 ssat16 r0, #0, r0
0+c12 <[^>]+> f320 0900 ssat16 r9, #0, r0
0+c16 <[^>]+> f320 0009 ssat16 r0, #9, r0
0+c1a <[^>]+> f329 0000 ssat16 r0, #0, r9
0+c1e <[^>]+> f380 0000 usat r0, #0, r0
0+c22 <[^>]+> f380 0000 usat r0, #0, r0
0+c26 <[^>]+> f380 0000 usat r0, #0, r0
0+c2a <[^>]+> f380 0900 usat r9, #0, r0
0+c2e <[^>]+> f380 0011 usat r0, #17, r0
0+c32 <[^>]+> f389 0000 usat r0, #0, r9
0+c36 <[^>]+> f380 7000 usat r0, #0, r0, lsl #28
0+c3a <[^>]+> f3a0 00c0 usat r0, #0, r0, asr #3
0+c3e <[^>]+> f3a0 0000 usat16 r0, #0, r0
0+c42 <[^>]+> f3a0 0900 usat16 r9, #0, r0
0+c46 <[^>]+> f3a0 0009 usat16 r0, #9, r0
0+c4a <[^>]+> f3a9 0000 usat16 r0, #0, r9
0+c4e <[^>]+> b240 sxtb r0, r0
0+c50 <[^>]+> b240 sxtb r0, r0
0+c52 <[^>]+> b245 sxtb r5, r0
0+c54 <[^>]+> b268 sxtb r0, r5
0+c56 <[^>]+> fa4f f182 sxtb\.w r1, r2
0+c5a <[^>]+> fa4f f192 sxtb\.w r1, r2, ror #8
0+c5e <[^>]+> fa4f f1a2 sxtb\.w r1, r2, ror #16
0+c62 <[^>]+> fa4f f1b2 sxtb\.w r1, r2, ror #24
0+c66 <[^>]+> fa2f f182 sxtb16 r1, r2
0+c6a <[^>]+> fa2f f889 sxtb16 r8, r9
0+c6e <[^>]+> b211 sxth r1, r2
0+c70 <[^>]+> fa0f f889 sxth\.w r8, r9
0+c74 <[^>]+> b2d1 uxtb r1, r2
0+c76 <[^>]+> fa5f f889 uxtb\.w r8, r9
0+c7a <[^>]+> fa3f f182 uxtb16 r1, r2
0+c7e <[^>]+> fa3f f889 uxtb16 r8, r9
0+c82 <[^>]+> b291 uxth r1, r2
0+c84 <[^>]+> fa1f f889 uxth\.w r8, r9
0+c88 <[^>]+> fa40 f080 sxtab r0, r0, r0
0+c8c <[^>]+> fa40 f080 sxtab r0, r0, r0
0+c90 <[^>]+> fa40 f990 sxtab r9, r0, r0, ror #8
0+c94 <[^>]+> fa49 f0a0 sxtab r0, r9, r0, ror #16
0+c98 <[^>]+> fa40 f0b9 sxtab r0, r0, r9, ror #24
0+c9c <[^>]+> fa22 f183 sxtab16 r1, r2, r3
0+ca0 <[^>]+> fa02 f183 sxtah r1, r2, r3
0+ca4 <[^>]+> fa52 f183 uxtab r1, r2, r3
0+ca8 <[^>]+> fa32 f183 uxtab16 r1, r2, r3
0+cac <[^>]+> fa12 f183 uxtah r1, r2, r3

View File

@ -0,0 +1,735 @@
.text
.thumb
.syntax unified
encode_thumb32_immediate:
orr r0, r1, #0x00000000
orr r0, r1, #0x000000a5
orr r0, r1, #0x00a500a5
orr r0, r1, #0xa500a500
orr r0, r1, #0xa5a5a5a5
orr r0, r1, #0xa5 << 31
orr r0, r1, #0xa5 << 30
orr r0, r1, #0xa5 << 29
orr r0, r1, #0xa5 << 28
orr r0, r1, #0xa5 << 27
orr r0, r1, #0xa5 << 26
orr r0, r1, #0xa5 << 25
orr r0, r1, #0xa5 << 24
orr r0, r1, #0xa5 << 23
orr r0, r1, #0xa5 << 22
orr r0, r1, #0xa5 << 21
orr r0, r1, #0xa5 << 20
orr r0, r1, #0xa5 << 19
orr r0, r1, #0xa5 << 18
orr r0, r1, #0xa5 << 17
orr r0, r1, #0xa5 << 16
orr r0, r1, #0xa5 << 15
orr r0, r1, #0xa5 << 14
orr r0, r1, #0xa5 << 13
orr r0, r1, #0xa5 << 12
orr r0, r1, #0xa5 << 11
orr r0, r1, #0xa5 << 10
orr r0, r1, #0xa5 << 9
orr r0, r1, #0xa5 << 8
orr r0, r1, #0xa5 << 7
orr r0, r1, #0xa5 << 6
orr r0, r1, #0xa5 << 5
orr r0, r1, #0xa5 << 4
orr r0, r1, #0xa5 << 3
orr r0, r1, #0xa5 << 2
orr r0, r1, #0xa5 << 1
add_sub:
adds r0, r0, #0 @ format 1
adds r5, r0, #0
adds r0, r5, #0
adds r0, r0, #5
adds r0, #129 @ format 2
adds r0, r0, #129
adds r5, #126
adds r0, r0, r0 @ format 3
adds r5, r0, r0
adds r0, r5, r0
adds r0, r0, r5
adds r1, r2, r3
add r8, r0 @ format 4
add r0, r8
add r0, r8, r0
add r0, r0, r8
add r8, r0, r0 @ ... not this one
add r1, r0
add r0, r1
add r0, pc, #0 @ format 5
add r5, pc, #0
add r0, pc, #516
add r0, sp, #0 @ format 6
add r5, sp, #0
add r0, sp, #516
add sp, #0 @ format 7
add sp, sp, #0
add sp, #260
add.w r0, r0, #0 @ T32 format 1
adds.w r0, r0, #0
add.w r9, r0, #0
add.w r0, r9, #0
add.w r0, r0, #129
add.w r0, r0, r0 @ T32 format 2
adds.w r0, r0, r0
add.w r9, r0, r0
add.w r0, r9, r0
add.w r0, r0, r9
add.w r8, r9, r10
add.w r8, r9, r10, lsl #17
add.w r8, r8, r10, lsr #32
add.w r8, r8, r10, lsr #17
add.w r8, r9, r10, asr #32
add.w r8, r9, r10, asr #17
add.w r8, r9, r10, rrx
add.w r8, r9, r10, ror #17
subs r0, r0, #0 @ format 1
subs r5, r0, #0
subs r0, r5, #0
subs r0, r0, #5
subs r0, r0, #129
subs r5, #8
subs r0, r0, r0 @ format 3
subs r5, r0, r0
subs r0, r5, r0
subs r0, r0, r5
sub sp, #260 @ format 4
sub sp, sp, #260
subs r8, r0 @ T32 format 2
subs r0, r8
subs r0, #260 @ T32 format 1
arit3:
.macro arit3 op ops opw opsw
\ops r0, r0
\ops r5, r0
\ops r0, r5
\ops r0, r0, r5
\ops r0, r5, r0
\op r0, r5, r0
\op r0, r1, r2
\op r9, r0, r0
\op r0, r9, r0
\op r0, r0, r9
\opsw r0, r0, r0
\opw r0, r1, r2, asr #17
\opw r0, r1, #129
.endm
arit3 adc adcs adc.w adcs.w
arit3 and ands and.w ands.w
arit3 bic bics bic.w bics.w
arit3 eor eors eor.w eors.w
arit3 orr orrs orr.w orrs.w
arit3 rsb rsbs rsb.w rsbs.w
arit3 sbc sbcs sbc.w sbcs.w
.purgem arit3
bfc_bfi_bfx:
bfc r0, #0, #1
bfc r9, #0, #1
bfi r9, #0, #0, #1
bfc r0, #21, #1
bfc r0, #0, #18
bfi r0, r0, #0, #1
bfi r9, r0, #0, #1
bfi r0, r9, #0, #1
bfi r0, r0, #21, #1
bfi r0, r0, #0, #18
sbfx r0, r0, #0, #1
ubfx r9, r0, #0, #1
sbfx r0, r9, #0, #1
ubfx r0, r0, #21, #1
sbfx r0, r0, #0, #18
.globl branches
branches:
.macro bra op
\op 1b
\op 1f
.endm
1:
bra beq.n
bra bne.n
bra bcs.n
bra bhs.n
bra bcc.n
bra bul.n
bra blo.n
bra bmi.n
bra bpl.n
bra bvs.n
bra bvc.n
bra bhi.n
bra bls.n
bra bvc.n
bra bhi.n
bra bls.n
bra bge.n
bra blt.n
bra bgt.n
bra ble.n
bra bal.n
bra b.n
@ bl, blx have no short form.
.balign 4
1:
bra beq
bra bne
bra bcs
bra bhs
bra bcc
bra bul
bra blo
bra bmi
bra bpl
bra bvs
bra bvc
bra bhi
bra bls
bra bvc
bra bhi
bra bls
bra bge
bra blt
bra bgt
bra ble
bra b
bra bl
bra blx
.balign 4
1:
bx r9
blx r0
blx r9
bxj r0
bxj r9
.purgem bra
clz:
clz r0, r0
clz r9, r0
clz r0, r9
cps:
cpsie f
cpsid i
cpsie a
cpsid.w f
cpsie.w i
cpsid.w a
cpsie i, #0
cpsid i, #17
cps #0
cps #17
cpy:
cpy r0, r0
cpy r9, r0
cpy r0, r9
cpy.w r0, r0
cpy.w r9, r0
cpy.w r0, r9
czb:
cbnz r0, 2f
cbz r5, 1f
nop_hint:
nop
1: yield
2: wfe
wfi
sev
nop.w
yield.w
wfe.w
wfi.w
sev.w
nop {9}
nop {129}
it:
.macro itx opc cond n
\opc \cond
.rept \n
nop
.endr
.endm
itx it eq 1
itx it ne 1
itx it cs 1
itx it hs 1
itx it cc 1
itx it ul 1
itx it lo 1
itx it mi 1
itx it pl 1
itx it vs 1
itx it vc 1
itx it hi 1
itx it ge 1
itx it lt 1
itx it gt 1
itx it le 1
itx it al 1
itx itt eq 2
itx ite eq 2
itx ittt eq 3
itx itet eq 3
itx itte eq 3
itx itee eq 3
itx itttt eq 4
itx itett eq 4
itx ittet eq 4
itx ittte eq 4
itx ittee eq 4
itx itete eq 4
itx iteet eq 4
itx iteee eq 4
itx itt ne 2
itx ite ne 2
itx ittt ne 3
itx itet ne 3
itx itte ne 3
itx itee ne 3
itx itttt ne 4
itx itett ne 4
itx ittet ne 4
itx ittte ne 4
itx ittee ne 4
itx itete ne 4
itx iteet ne 4
itx iteee ne 4
.purgem itx
ldst:
.macro ls op
\op r1, [r5]
\op r1, [r5, #0x330]
\op r1, [r5, #-0x30]
\op r1, [r5], #0x30
\op r1, [r5], #-0x30
\op r1, [r5, #0x30]!
\op r1, [r5, #-0x30]!
\op r1, [r5, r4]
\op r1, [r9, ip]
\op r1, 1f
\op r1, 1b
.endm
1:
ls ldrb
ls ldrsb
ls ldrh
ls ldrsh
ls ldr
1:
ls strb
ls strh
ls str
pld [r5]
pld [r5, #0x330]
pld [r5, #-0x30]
pld [r5], #0x30
pld [r5], #-0x30
pld [r5, #0x30]!
pld [r5, #-0x30]!
pld [r5, r4]
pld [r9, ip]
pld 1f
pld 1b
1:
ldrd r2, r3, [r5]
ldrd r2, [r5, #0x30]
ldrd r2, [r5, #-0x30]
strd r2, r3, [r5]
strd r2, [r5, #0x30]
strd r2, [r5, #-0x30]
ldrbt r1, [r5]
ldrbt r1, [r5, #0x30]
ldrsbt r1, [r5]
ldrsbt r1, [r5, #0x30]
ldrht r1, [r5]
ldrht r1, [r5, #0x30]
ldrsht r1, [r5]
ldrsht r1, [r5, #0x30]
ldrt r1, [r5]
ldrt r1, [r5, #0x30]
.purgem ls
ldxstx:
ldrexb r1, [r4]
ldrexh r1, [r4]
ldrex r1, [r4]
ldrexd r1, r2, [r4]
strexb r1, r2, [r4]
strexh r1, r2, [r4]
strex r1, r2, [r4]
strexd r1, r2, r3, [r4]
ldrex r1, [r4,#516]
strex r1, r2, [r4,#516]
ldmstm:
ldmia r0!, {r1,r2,r3}
ldmia r2, {r0,r1,r2}
ldmia.w r2, {r0,r1,r2}
ldmia r9, {r0,r1,r2}
ldmia r0, {r7,r8,r10}
ldmia r0!, {r7,r8,r10}
stmia r0!, {r1,r2,r3}
stmia r2!, {r0,r1,r3}
stmia.w r2!, {r0,r1,r3}
stmia r9, {r0,r1,r2}
stmia r0, {r7,r8,r10}
stmia r0!, {r7,r8,r10}
ldmdb r0, {r7,r8,r10}
stmdb r0, {r7,r8,r10}
mlas:
mla r0, r0, r0, r0
mls r0, r0, r0, r0
mla r9, r0, r0, r0
mla r0, r9, r0, r0
mla r0, r0, r9, r0
mla r0, r0, r0, r9
tst_teq_cmp_cmn_mov_mvn:
.macro mt op ops opw opsw
\ops r0, r0
\op r0, r0
\ops r5, r0
\op r0, r5
\op r0, r5, asr #17
\opw r0, r0
\ops r9, r0
\opsw r0, r9
\op r0, #129
\op r5, #129
.endm
mt tst tsts tst.w tsts.w
mt teq teqs teq.w teqs.w
mt cmp cmps cmp.w cmps.w
mt cmn cmns cmn.w cmns.w
mt mov movs mov.w movs.w
mt mvn mvns mvn.w mvns.w
.purgem mt
mov16:
movw r0, #0
movt r0, #0
movw r9, #0
movw r0, #0x9000
movw r0, #0x0800
movw r0, #0x0500
movw r0, #0x0081
movw r0, #0xffff
mrs_msr:
mrs r0, CPSR
mrs r0, SPSR
mrs r9, CPSR_all
mrs r9, SPSR_all
msr CPSR_c, r0
msr SPSR_c, r0
msr CPSR_c, r9
msr CPSR_x, r0
msr CPSR_s, r0
msr CPSR_f, r0
mul:
mul r0, r0, r0
mul r0, r9, r0
mul r0, r0, r9
mul r0, r0
mul r9, r0
muls r5, r0
muls r5, r0, r5
muls r0, r5
mull:
smull r0, r1, r0, r0
umull r0, r1, r0, r0
smlal r0, r1, r0, r0
umlal r0, r1, r0, r0
smull r9, r0, r0, r0
smull r0, r9, r0, r0
smull r0, r1, r9, r0
smull r0, r1, r0, r9
neg:
negs r0, r0
negs r0, r5
negs r5, r0
negs.w r0, r0
negs.w r5, r0
negs.w r0, r5
neg r0, r9
neg r9, r0
negs r0, r9
negs r9, r0
pkh:
pkhbt r0, r0, r0
pkhbt r9, r0, r0
pkhbt r0, r9, r0
pkhbt r0, r0, r9
pkhbt r0, r0, r0, lsl #0x14
pkhbt r0, r0, r0, lsl #3
pkhtb r1, r2, r3
pkhtb r1, r2, r3, asr #0x11
push_pop:
push {r0}
pop {r0}
push {r1,lr}
pop {r1,pc}
push {r8,r9,r10,r11,r12}
pop {r8,r9,r10,r11,r12}
qadd:
qadd16 r1, r2, r3
qadd8 r1, r2, r3
qaddsubx r1, r2, r3
qsub16 r1, r2, r3
qsub8 r1, r2, r3
qsubaddx r1, r2, r3
sadd16 r1, r2, r3
sadd8 r1, r2, r3
saddsubx r1, r2, r3
ssub16 r1, r2, r3
ssub8 r1, r2, r3
ssubaddx r1, r2, r3
shadd16 r1, r2, r3
shadd8 r1, r2, r3
shaddsubx r1, r2, r3
shsub16 r1, r2, r3
shsub8 r1, r2, r3
shsubaddx r1, r2, r3
uadd16 r1, r2, r3
uadd8 r1, r2, r3
uaddsubx r1, r2, r3
usub16 r1, r2, r3
usub8 r1, r2, r3
usubaddx r1, r2, r3
uhadd16 r1, r2, r3
uhadd8 r1, r2, r3
uhaddsubx r1, r2, r3
uhsub16 r1, r2, r3
uhsub8 r1, r2, r3
uhsubaddx r1, r2, r3
uqadd16 r1, r2, r3
uqadd8 r1, r2, r3
uqaddsubx r1, r2, r3
uqsub16 r1, r2, r3
uqsub8 r1, r2, r3
uqsubaddx r1, r2, r3
sel r1, r2, r3
rbit_rev:
.macro rx op opw
\op r0, r0
\opw r0, r0
\op r0, r5
\op r5, r0
\op r0, r9
\op r9, r0
.endm
rx rev rev.w
rx rev16 rev16.w
rx revsh revsh.w
rx rbit rbit.w
.purgem rx
shift:
.macro sh op ops opw opsw
\ops r0, #17 @ 16-bit format 1
\ops r0, r0, #14
\ops r5, r0, #17
\ops r0, r5, #14
\ops r0, r0 @ 16-bit format 2
\ops r0, r5
\ops r0, r0, r5
\op r9, #17 @ 32-bit format 1
\op r9, r9, #14
\ops r0, r9, #17
\op r9, r0, #14
\opw r0, r0, r0 @ 32-bit format 2
\op r9, r9
\ops r9, r0
\op r0, r9
\op r0, r5
\ops r0, r1, r2
.endm
sh lsl lsls lsl.w lsls.w
sh lsr lsrs lsr.w lsrs.w
sh asr asrs asr.w asrs.w
sh ror rors ror.w rors.w
.purgem sh
smi:
smi #0
smi #0xabcd
smla:
smlabb r0, r0, r0, r0
smlabb r9, r0, r0, r0
smlabb r0, r9, r0, r0
smlabb r0, r0, r9, r0
smlabb r0, r0, r0, r9
smlatb r0, r0, r0, r0
smlabt r0, r0, r0, r0
smlatt r0, r0, r0, r0
smlawb r0, r0, r0, r0
smlawt r0, r0, r0, r0
smlad r0, r0, r0, r0
smladx r0, r0, r0, r0
smlsd r0, r0, r0, r0
smlsdx r0, r0, r0, r0
smmla r0, r0, r0, r0
smmlar r0, r0, r0, r0
smmls r0, r0, r0, r0
smmlsr r0, r0, r0, r0
usada8 r0, r0, r0, r0
smlal:
smlalbb r0, r0, r0, r0
smlalbb r9, r0, r0, r0
smlalbb r0, r9, r0, r0
smlalbb r0, r0, r9, r0
smlalbb r0, r0, r0, r9
smlaltb r0, r0, r0, r0
smlalbt r0, r0, r0, r0
smlaltt r0, r0, r0, r0
smlald r0, r0, r0, r0
smlaldx r0, r0, r0, r0
smlsld r0, r0, r0, r0
smlsldx r0, r0, r0, r0
umaal r0, r0, r0, r0
smul:
smulbb r0, r0, r0
smulbb r9, r0, r0
smulbb r0, r9, r0
smulbb r0, r0, r9
smultb r0, r0, r0
smulbt r0, r0, r0
smultt r0, r0, r0
smulwb r0, r0, r0
smulwt r0, r0, r0
smmul r0, r0, r0
smmulr r0, r0, r0
smuad r0, r0, r0
smuadx r0, r0, r0
smusd r0, r0, r0
smusdx r0, r0, r0
usad8 r0, r0, r0
sat:
ssat r0, #1, r0
ssat r0, #1, r0, lsl #0
ssat r0, #1, r0, asr #0
ssat r9, #1, r0
ssat r0, #18, r0
ssat r0, #1, r9
ssat r0, #1, r0, lsl #0x1c
ssat r0, #1, r0, asr #0x03
ssat16 r0, #1, r0
ssat16 r9, #1, r0
ssat16 r0, #10, r0
ssat16 r0, #1, r9
usat r0, #0, r0
usat r0, #0, r0, lsl #0
usat r0, #0, r0, asr #0
usat r9, #0, r0
usat r0, #17, r0
usat r0, #0, r9
usat r0, #0, r0, lsl #0x1c
usat r0, #0, r0, asr #0x03
usat16 r0, #0, r0
usat16 r9, #0, r0
usat16 r0, #9, r0
usat16 r0, #0, r9
xt:
sxtb r0, r0
sxtb r0, r0, ror #0
sxtb r5, r0
sxtb r0, r5
sxtb.w r1, r2
sxtb r1, r2, ror #8
sxtb r1, r2, ror #16
sxtb r1, r2, ror #24
sxtb16 r1, r2
sxtb16 r8, r9
sxth r1, r2
sxth r8, r9
uxtb r1, r2
uxtb r8, r9
uxtb16 r1, r2
uxtb16 r8, r9
uxth r1, r2
uxth r8, r9
xta:
sxtab r0, r0, r0
sxtab r0, r0, r0, ror #0
sxtab r9, r0, r0, ror #8
sxtab r0, r9, r0, ror #16
sxtab r0, r0, r9, ror #24
sxtab16 r1, r2, r3
sxtah r1, r2, r3
uxtab r1, r2, r3
uxtab16 r1, r2, r3
uxtah r1, r2, r3

View File

@ -7,7 +7,7 @@
Disassembly of section .text:
0+000 <[^>]*> b666 * cpsie ai
0+002 <[^>]*> b675 * cpsid af
0+004 <[^>]*> 4623 * cpy r3, r4
0+004 <[^>]*> 4623 * mov r3, r4
0+006 <[^>]*> ba3a * rev r2, r7
0+008 <[^>]*> ba4d * rev16 r5, r1
0+00a <[^>]*> baf3 * revsh r3, r6

View File

@ -1,9 +1,9 @@
[^:]*: Assembler messages:
[^:]*:4: Error: garbage following instruction -- `fstd d0,\[r0\],#8'
[^:]*:5: Error: garbage following instruction -- `fstd d0,\[r0,#-8\]!'
[^:]*:6: Error: garbage following instruction -- `fsts s0,\[r0\],#8'
[^:]*:7: Error: garbage following instruction -- `fsts s0,\[r0,#-8\]!'
[^:]*:8: Error: garbage following instruction -- `fldd d0,\[r0\],#8'
[^:]*:9: Error: garbage following instruction -- `fldd d0,\[r0,#-8\]!'
[^:]*:10: Error: garbage following instruction -- `flds s0,\[r0\],#8'
[^:]*:11: Error: garbage following instruction -- `flds s0,\[r0,#-8\]!'
[^:]*:4: Error: instruction does not support writeback -- `fstd d0,\[r0\],#8'
[^:]*:5: Error: instruction does not support writeback -- `fstd d0,\[r0,#-8\]!'
[^:]*:6: Error: instruction does not support writeback -- `fsts s0,\[r0\],#8'
[^:]*:7: Error: instruction does not support writeback -- `fsts s0,\[r0,#-8\]!'
[^:]*:8: Error: instruction does not support writeback -- `fldd d0,\[r0\],#8'
[^:]*:9: Error: instruction does not support writeback -- `fldd d0,\[r0,#-8\]!'
[^:]*:10: Error: instruction does not support writeback -- `flds s0,\[r0\],#8'
[^:]*:11: Error: instruction does not support writeback -- `flds s0,\[r0,#-8\]!'

View File

@ -1,3 +1,9 @@
2005-05-17 Zack Weinberg <zack@codesourcery.com>
* arm.h: Import complete list of official relocation names
and numbers from AAELF. Define FAKE_RELOCs for old names.
Remove a few old names no longer used anywhere.
2005-05-14 Alan Modra <amodra@bigpond.net.au>
* ppc.h (DT_PPC_GOT): Rename from DT_PPC_GLINK.

View File

@ -38,7 +38,7 @@
#define EF_ARM_MAVERICK_FLOAT 0x800
/* Frame unwind information */
#define PT_ARM_EXIDX (PT_LOPROC + 1)
#define PT_ARM_EXIDX (PT_LOPROC + 1)
/* Other constants defined in the ARM ELF spec. version B-01. */
#define EF_ARM_SYMSARESORTED 0x04 /* NB conflicts with EF_INTERWORK */
@ -84,93 +84,159 @@
/* Relocation types. */
START_RELOC_NUMBERS (elf_arm_reloc_type)
RELOC_NUMBER (R_ARM_NONE, 0)
RELOC_NUMBER (R_ARM_PC24, 1)
RELOC_NUMBER (R_ARM_ABS32, 2)
RELOC_NUMBER (R_ARM_REL32, 3)
#ifdef OLD_ARM_ABI
RELOC_NUMBER (R_ARM_ABS8, 4)
RELOC_NUMBER (R_ARM_ABS16, 5)
RELOC_NUMBER (R_ARM_ABS12, 6)
RELOC_NUMBER (R_ARM_THM_ABS5, 7)
RELOC_NUMBER (R_ARM_THM_PC22, 8)
RELOC_NUMBER (R_ARM_SBREL32, 9)
RELOC_NUMBER (R_ARM_AMP_VCALL9, 10)
RELOC_NUMBER (R_ARM_THM_PC11, 11) /* Cygnus extension to abi: Thumb unconditional branch. */
RELOC_NUMBER (R_ARM_THM_PC9, 12) /* Cygnus extension to abi: Thumb conditional branch. */
RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 13)
RELOC_NUMBER (R_ARM_GNU_VTENTRY, 14)
#else /* not OLD_ARM_ABI */
RELOC_NUMBER (R_ARM_PC13, 4)
RELOC_NUMBER (R_ARM_ABS16, 5)
RELOC_NUMBER (R_ARM_ABS12, 6)
RELOC_NUMBER (R_ARM_THM_ABS5, 7)
RELOC_NUMBER (R_ARM_ABS8, 8)
RELOC_NUMBER (R_ARM_SBREL32, 9)
RELOC_NUMBER (R_ARM_THM_PC22, 10)
RELOC_NUMBER (R_ARM_THM_PC8, 11)
RELOC_NUMBER (R_ARM_AMP_VCALL9, 12)
RELOC_NUMBER (R_ARM_SWI24, 13)
RELOC_NUMBER (R_ARM_THM_SWI8, 14)
RELOC_NUMBER (R_ARM_XPC25, 15)
RELOC_NUMBER (R_ARM_THM_XPC22, 16)
RELOC_NUMBER (R_ARM_TLS_DTPMOD32, 17)
RELOC_NUMBER (R_ARM_TLS_DTPOFF32, 18)
RELOC_NUMBER (R_ARM_TLS_TPOFF32, 19)
#endif /* not OLD_ARM_ABI */
RELOC_NUMBER (R_ARM_COPY, 20) /* Copy symbol at runtime. */
RELOC_NUMBER (R_ARM_GLOB_DAT, 21) /* Create GOT entry. */
RELOC_NUMBER (R_ARM_JUMP_SLOT, 22) /* Create PLT entry. */
RELOC_NUMBER (R_ARM_RELATIVE, 23) /* Adjust by program base. */
RELOC_NUMBER (R_ARM_GOTOFF, 24) /* 32 bit offset to GOT. */
RELOC_NUMBER (R_ARM_GOTPC, 25) /* 32 bit PC relative offset to GOT. */
RELOC_NUMBER (R_ARM_GOT32, 26) /* 32 bit GOT entry. */
RELOC_NUMBER (R_ARM_PLT32, 27) /* 32 bit PLT address. */
#ifdef OLD_ARM_ABI
FAKE_RELOC (FIRST_INVALID_RELOC, 28)
FAKE_RELOC (LAST_INVALID_RELOC, 249)
#else /* not OLD_ARM_ABI */
RELOC_NUMBER (R_ARM_CALL, 28)
RELOC_NUMBER (R_ARM_JUMP24, 29)
FAKE_RELOC (FIRST_INVALID_RELOC1, 30)
FAKE_RELOC (LAST_INVALID_RELOC1, 31)
RELOC_NUMBER (R_ARM_ALU_PCREL7_0, 32)
RELOC_NUMBER (R_ARM_ALU_PCREL15_8, 33)
RELOC_NUMBER (R_ARM_ALU_PCREL23_15, 34)
RELOC_NUMBER (R_ARM_LDR_SBREL_11_0, 35)
RELOC_NUMBER (R_ARM_ALU_SBREL_19_12, 36)
RELOC_NUMBER (R_ARM_ALU_SBREL_27_20, 37)
RELOC_NUMBER (R_ARM_TARGET1, 38)
RELOC_NUMBER (R_ARM_ROSEGREL32, 39)
RELOC_NUMBER (R_ARM_V4BX, 40)
RELOC_NUMBER (R_ARM_TARGET2, 41)
RELOC_NUMBER (R_ARM_PREL31, 42)
FAKE_RELOC (FIRST_INVALID_RELOC2, 43)
FAKE_RELOC (LAST_INVALID_RELOC2, 94)
RELOC_NUMBER (R_ARM_GOT_ABS, 95)
RELOC_NUMBER (R_ARM_GOT_PREL, 96)
RELOC_NUMBER (R_ARM_GOT_BREL12, 97)
RELOC_NUMBER (R_ARM_GOTOFF12, 98)
RELOC_NUMBER (R_ARM_GOTRELAX, 99)
RELOC_NUMBER (R_ARM_GNU_VTENTRY, 100)
RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 101)
RELOC_NUMBER (R_ARM_THM_PC11, 102) /* Cygnus extension to abi: Thumb unconditional branch. */
RELOC_NUMBER (R_ARM_THM_PC9, 103) /* Cygnus extension to abi: Thumb conditional branch. */
RELOC_NUMBER (R_ARM_TLS_GD32, 104)
RELOC_NUMBER (R_ARM_TLS_LDM32, 105)
RELOC_NUMBER (R_ARM_TLS_LDO32, 106)
RELOC_NUMBER (R_ARM_TLS_IE32, 107)
RELOC_NUMBER (R_ARM_TLS_LE32, 108)
FAKE_RELOC (FIRST_INVALID_RELOC3, 109)
FAKE_RELOC (LAST_INVALID_RELOC3, 248)
RELOC_NUMBER (R_ARM_RXPC25, 249)
#endif /* not OLD_ARM_ABI */
RELOC_NUMBER (R_ARM_RSBREL32, 250)
RELOC_NUMBER (R_ARM_THM_RPC22, 251)
RELOC_NUMBER (R_ARM_RREL32, 252)
RELOC_NUMBER (R_ARM_RABS32, 253)
RELOC_NUMBER (R_ARM_RPC24, 254)
RELOC_NUMBER (R_ARM_RBASE, 255)
/* AAELF official names and numbers. */
RELOC_NUMBER (R_ARM_NONE, 0)
RELOC_NUMBER (R_ARM_PC24, 1) /* deprecated */
RELOC_NUMBER (R_ARM_ABS32, 2)
RELOC_NUMBER (R_ARM_REL32, 3)
#ifndef OLD_ARM_ABI
RELOC_NUMBER (R_ARM_LDR_PC_G0, 4)
RELOC_NUMBER (R_ARM_ABS16, 5)
RELOC_NUMBER (R_ARM_ABS12, 6)
RELOC_NUMBER (R_ARM_THM_ABS5, 7)
RELOC_NUMBER (R_ARM_ABS8, 8)
RELOC_NUMBER (R_ARM_SBREL32, 9)
RELOC_NUMBER (R_ARM_THM_CALL, 10)
RELOC_NUMBER (R_ARM_THM_PC8, 11)
RELOC_NUMBER (R_ARM_BREL_ADJ, 12)
RELOC_NUMBER (R_ARM_SWI24, 13) /* obsolete */
RELOC_NUMBER (R_ARM_THM_SWI8, 14) /* obsolete */
#else
RELOC_NUMBER (R_ARM_ABS8, 4)
RELOC_NUMBER (R_ARM_ABS16, 5)
RELOC_NUMBER (R_ARM_ABS12, 6)
RELOC_NUMBER (R_ARM_THM_ABS5, 7)
RELOC_NUMBER (R_ARM_THM_CALL, 8)
RELOC_NUMBER (R_ARM_SBREL32, 9)
RELOC_NUMBER (R_ARM_BREL_ADJ, 10)
RELOC_NUMBER (R_ARM_THM_JUMP11, 11)
RELOC_NUMBER (R_ARM_THM_JUMP8, 12)
RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 13)
RELOC_NUMBER (R_ARM_GNU_VTENTRY, 14)
#endif
RELOC_NUMBER (R_ARM_XPC25, 15) /* obsolete */
RELOC_NUMBER (R_ARM_THM_XPC22, 16) /* obsolete */
RELOC_NUMBER (R_ARM_TLS_DTPMOD32, 17)
RELOC_NUMBER (R_ARM_TLS_DTPOFF32, 18)
RELOC_NUMBER (R_ARM_TLS_TPOFF32, 19)
RELOC_NUMBER (R_ARM_COPY, 20) /* Copy symbol at runtime. */
RELOC_NUMBER (R_ARM_GLOB_DAT, 21) /* Create GOT entry. */
RELOC_NUMBER (R_ARM_JUMP_SLOT, 22) /* Create PLT entry. */
RELOC_NUMBER (R_ARM_RELATIVE, 23) /* Adjust by program base. */
RELOC_NUMBER (R_ARM_GOTOFF32, 24) /* 32 bit offset to GOT. */
RELOC_NUMBER (R_ARM_BASE_PREL, 25) /* 32 bit PC relative offset to GOT. */
RELOC_NUMBER (R_ARM_GOT_BREL, 26) /* 32 bit GOT entry. */
RELOC_NUMBER (R_ARM_PLT32, 27) /* deprecated - 32 bit PLT address. */
RELOC_NUMBER (R_ARM_CALL, 28)
RELOC_NUMBER (R_ARM_JUMP24, 29)
RELOC_NUMBER (R_ARM_THM_JUMP24, 30)
RELOC_NUMBER (R_ARM_BASE_ABS, 31)
RELOC_NUMBER (R_ARM_ALU_PCREL7_0, 32) /* obsolete */
RELOC_NUMBER (R_ARM_ALU_PCREL15_8, 33) /* obsolete */
RELOC_NUMBER (R_ARM_ALU_PCREL23_15, 34) /* obsolete */
RELOC_NUMBER (R_ARM_LDR_SBREL_11_0, 35) /* deprecated, should have _NC suffix */
RELOC_NUMBER (R_ARM_ALU_SBREL_19_12, 36) /* deprecated, should have _NC suffix */
RELOC_NUMBER (R_ARM_ALU_SBREL_27_20, 37) /* deprecated, should have _CK suffix */
RELOC_NUMBER (R_ARM_TARGET1, 38)
RELOC_NUMBER (R_ARM_SBREL31, 39) /* deprecated */
RELOC_NUMBER (R_ARM_V4BX, 40)
RELOC_NUMBER (R_ARM_TARGET2, 41)
RELOC_NUMBER (R_ARM_PREL31, 42)
RELOC_NUMBER (R_ARM_MOVW_ABS_NC, 43)
RELOC_NUMBER (R_ARM_MOVT_ABS, 44)
RELOC_NUMBER (R_ARM_MOVW_PREL_NC, 45)
RELOC_NUMBER (R_ARM_MOVT_PREL, 46)
RELOC_NUMBER (R_ARM_THM_MOVW_ABS_NC, 47)
RELOC_NUMBER (R_ARM_THM_MOVT_ABS, 48)
RELOC_NUMBER (R_ARM_THM_MOVW_PREL_NC, 49)
RELOC_NUMBER (R_ARM_THM_MOVT_PREL, 50)
RELOC_NUMBER (R_ARM_THM_JUMP19, 51)
RELOC_NUMBER (R_ARM_THM_JUMP6, 52)
RELOC_NUMBER (R_ARM_THM_ALU_PREL_11_0, 53)
RELOC_NUMBER (R_ARM_THM_PC12, 54)
RELOC_NUMBER (R_ARM_ABS32_NOI, 55)
RELOC_NUMBER (R_ARM_REL32_NOI, 56)
RELOC_NUMBER (R_ARM_ALU_PC_G0_NC, 57)
RELOC_NUMBER (R_ARM_ALU_PC_G0, 58)
RELOC_NUMBER (R_ARM_ALU_PC_G1_NC, 59)
RELOC_NUMBER (R_ARM_ALU_PC_G1, 60)
RELOC_NUMBER (R_ARM_ALU_PC_G2, 61)
RELOC_NUMBER (R_ARM_LDR_PC_G1, 62)
RELOC_NUMBER (R_ARM_LDR_PC_G2, 63)
RELOC_NUMBER (R_ARM_LDRS_PC_G0, 64)
RELOC_NUMBER (R_ARM_LDRS_PC_G1, 65)
RELOC_NUMBER (R_ARM_LDRS_PC_G2, 66)
RELOC_NUMBER (R_ARM_LDC_PC_G0, 67)
RELOC_NUMBER (R_ARM_LDC_PC_G1, 68)
RELOC_NUMBER (R_ARM_LDC_PC_G2, 69)
RELOC_NUMBER (R_ARM_ALU_SB_G0_NC, 70)
RELOC_NUMBER (R_ARM_ALU_SB_G0, 71)
RELOC_NUMBER (R_ARM_ALU_SB_G1_NC, 72)
RELOC_NUMBER (R_ARM_ALU_SB_G1, 73)
RELOC_NUMBER (R_ARM_ALU_SB_G2, 74)
RELOC_NUMBER (R_ARM_LDR_SB_G0, 75)
RELOC_NUMBER (R_ARM_LDR_SB_G1, 76)
RELOC_NUMBER (R_ARM_LDR_SB_G2, 77)
RELOC_NUMBER (R_ARM_LDRS_SB_G0, 78)
RELOC_NUMBER (R_ARM_LDRS_SB_G1, 79)
RELOC_NUMBER (R_ARM_LDRS_SB_G2, 80)
RELOC_NUMBER (R_ARM_LDC_G0, 81)
RELOC_NUMBER (R_ARM_LDC_G1, 82)
RELOC_NUMBER (R_ARM_LDC_G2, 83)
RELOC_NUMBER (R_ARM_MOVW_BREL_NC, 84)
RELOC_NUMBER (R_ARM_MOVT_BREL, 85)
RELOC_NUMBER (R_ARM_MOVW_BREL, 86)
RELOC_NUMBER (R_ARM_THM_MOVW_BREL_NC, 87)
RELOC_NUMBER (R_ARM_THM_MOVT_BREL, 88)
RELOC_NUMBER (R_ARM_THM_MOVW_BREL, 89)
/* 90-93 unallocated */
RELOC_NUMBER (R_ARM_PLT32_ABS, 94)
RELOC_NUMBER (R_ARM_GOT_ABS, 95)
RELOC_NUMBER (R_ARM_GOT_PREL, 96)
RELOC_NUMBER (R_ARM_GOT_BREL12, 97)
RELOC_NUMBER (R_ARM_GOTOFF12, 98)
RELOC_NUMBER (R_ARM_GOTRELAX, 99)
#ifndef OLD_ARM_ABI
RELOC_NUMBER (R_ARM_GNU_VTENTRY, 100) /* deprecated - old C++ abi */
RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 101) /* deprecated - old C++ abi */
RELOC_NUMBER (R_ARM_THM_JUMP11, 102)
RELOC_NUMBER (R_ARM_THM_JUMP8, 103)
#endif
RELOC_NUMBER (R_ARM_TLS_GD32, 104)
RELOC_NUMBER (R_ARM_TLS_LDM32, 105)
RELOC_NUMBER (R_ARM_TLS_LDO32, 106)
RELOC_NUMBER (R_ARM_TLS_IE32, 107)
RELOC_NUMBER (R_ARM_TLS_LE32, 108)
RELOC_NUMBER (R_ARM_TLS_LDO12, 109)
RELOC_NUMBER (R_ARM_TLS_LE12, 110)
RELOC_NUMBER (R_ARM_TLS_IE12GP, 111)
/* 112 - 127 private range */
RELOC_NUMBER (R_ARM_ME_TOO, 128) /* obsolete */
/* Extensions? R=read-only? */
RELOC_NUMBER (R_ARM_RXPC25, 249)
RELOC_NUMBER (R_ARM_RSBREL32, 250)
RELOC_NUMBER (R_ARM_THM_RPC22, 251)
RELOC_NUMBER (R_ARM_RREL32, 252)
RELOC_NUMBER (R_ARM_RABS32, 253)
RELOC_NUMBER (R_ARM_RPC24, 254)
RELOC_NUMBER (R_ARM_RBASE, 255)
/* Unofficial names for some of the relocs. */
FAKE_RELOC (R_ARM_GOTOFF, R_ARM_GOTOFF32) /* 32 bit offset to GOT. */
FAKE_RELOC (R_ARM_THM_PC22, R_ARM_THM_CALL)
FAKE_RELOC (R_ARM_THM_PC11, R_ARM_THM_JUMP11)
FAKE_RELOC (R_ARM_THM_PC9, R_ARM_THM_JUMP8)
/* Relocs with both a different name, and (apparently) different meaning in
GNU usage. */
FAKE_RELOC (R_ARM_GOTPC, R_ARM_BASE_PREL) /* 32 bit PC relative offset to GOT. */
FAKE_RELOC (R_ARM_GOT32, R_ARM_GOT_BREL) /* 32 bit GOT entry. */
FAKE_RELOC (R_ARM_ROSEGREL32, R_ARM_SBREL31) /* ??? */
FAKE_RELOC (R_ARM_AMP_VCALL9, R_ARM_BREL_ADJ) /* Thumb-something. Not used. */
#ifndef OLD_ARM_ABI
FAKE_RELOC (R_ARM_PC13, R_ARM_LDR_PC_G0) /* Unclear whether meaning is different. */
#endif
END_RELOC_NUMBERS (R_ARM_max)
/* The name of the note section used to identify arm variants. */

View File

@ -1,3 +1,7 @@
2005-05-17 Zack Weinberg <zack@codesourcery.com>
* ld-arm/mixed-app.d: Adjust expected disassembly a little.
2005-05-17 Daniel Jacobowitz <dan@codesourcery.com>
* Makefile.am (ldver.texi): Don't use $<.
@ -50,8 +54,8 @@
2005-05-17 Lennert Buytenhek <buytenh@wantstofly.org>
Peter S. Mazinger" <ps.m@gmx.net>
* emulparams/armelf_linux.sh (GENERATE_PIE_SCRIPT): Define as "yes".
* emulparams/hppalinux.sh (GENERATE_PIE_SCRIPT): Define as "yes".
* emulparams/armelf_linux.sh (GENERATE_PIE_SCRIPT): Define as "yes".
* emulparams/hppalinux.sh (GENERATE_PIE_SCRIPT): Define as "yes".
2005-05-17 Julian Brown <julian@codesourcery.com>

View File

@ -49,7 +49,7 @@ Disassembly of section .text:
.* <app_tfunc>:
.*: b500 push {lr}
.*: (ffc.f7ff|f7ffffc.) bl .* <_start-0x..>
.*: f7ff ffc. bl .* <_start-0x..>
.*: bd00 pop {pc}
.*: 4770 bx lr
.*: 46c0 nop \(mov r8, r8\)

View File

@ -1,3 +1,16 @@
2005-05-17 Zack Weinberg <zack@codesourcery.com>
* arm-dis.c (thumb_opcodes): Add disassembly for V6T2 16-bit
instructions. Adjust disassembly of some opcodes to match
unified syntax.
(thumb32_opcodes): New table.
(print_insn_thumb): Rename print_insn_thumb16; don't handle
two-halfword branches here.
(print_insn_thumb32): New function.
(print_insn): Choose among print_insn_arm, print_insn_thumb16,
and print_insn_thumb32. Be consistent about order of
halfwords when printing 32-bit instructions.
2005-05-07 H.J. Lu <hongjiu.lu@intel.com>
PR 843
@ -124,11 +137,11 @@
2005-03-21 Jan-Benedict Glaw <jbglaw@lug-owl.de>
Nick Clifton <nickc@redhat.com>
* vax-dis.c: (entry_addr): New varible: An array of user supplied
function entry mask addresses.
(entry_addr_occupied_slots): New variable: The number of occupied
elements in entry_addr.
elements in entry_addr.
(entry_addr_total_slots): New variable: The total number of
elements in entry_addr.
(parse_disassembler_options): New function. Fills in the entry_addr

File diff suppressed because it is too large Load Diff