diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3dc84348e7..dc696e72cc 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2010-08-25 Julian Brown + + * elf32-arm.c (arm_stub_required_alignment): New. + (arm_build_one_stub): Use above to partition stubs. + (make_branch_to_a8_stub): Use arm_stub_a8_veneer_lwm not + arm_stub_a8_veneer_b_cond. + 2010-08-25 Alan Modra * aout-arm.c (MY(bfd_reloc_type_lookup)): Use bfd_arch_bits_per_address. diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 0cd1e644e8..390c0af060 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -3475,6 +3475,36 @@ static bfd_reloc_status_type elf32_arm_final_link_relocate Elf_Internal_Rela *, bfd_vma, struct bfd_link_info *, asection *, const char *, int, struct elf_link_hash_entry *, bfd_boolean *, char **); +static unsigned int +arm_stub_required_alignment (enum elf32_arm_stub_type stub_type) +{ + switch (stub_type) + { + case arm_stub_a8_veneer_b_cond: + case arm_stub_a8_veneer_b: + case arm_stub_a8_veneer_bl: + return 2; + + case arm_stub_long_branch_any_any: + case arm_stub_long_branch_v4t_arm_thumb: + case arm_stub_long_branch_thumb_only: + case arm_stub_long_branch_v4t_thumb_thumb: + case arm_stub_long_branch_v4t_thumb_arm: + case arm_stub_short_branch_v4t_thumb_arm: + case arm_stub_long_branch_any_arm_pic: + case arm_stub_long_branch_any_thumb_pic: + case arm_stub_long_branch_v4t_thumb_thumb_pic: + case arm_stub_long_branch_v4t_arm_thumb_pic: + case arm_stub_long_branch_v4t_thumb_arm_pic: + case arm_stub_long_branch_thumb_only_pic: + case arm_stub_a8_veneer_blx: + return 4; + + default: + abort (); /* Should be unreachable. */ + } +} + static bfd_boolean arm_build_one_stub (struct bfd_hash_entry *gen_entry, void * in_arg) @@ -3506,9 +3536,8 @@ arm_build_one_stub (struct bfd_hash_entry *gen_entry, stub_sec = stub_entry->stub_sec; if ((globals->fix_cortex_a8 < 0) - != (stub_entry->stub_type >= arm_stub_a8_veneer_lwm)) - /* We have to do the a8 fixes last, as they are less aligned than - the other veneers. */ + != (arm_stub_required_alignment (stub_entry->stub_type) == 2)) + /* We have to do less-strictly-aligned fixes last. */ return TRUE; /* Make a note of the offset within the stubs for this entry. */ @@ -13356,7 +13385,7 @@ make_branch_to_a8_stub (struct bfd_hash_entry *gen_entry, data = (struct a8_branch_to_stub_data *) in_arg; if (stub_entry->target_section != data->writing_section - || stub_entry->stub_type < arm_stub_a8_veneer_b_cond) + || stub_entry->stub_type < arm_stub_a8_veneer_lwm) return TRUE; contents = data->contents; diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index eeed7da7f8..85063c3301 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-08-25 Julian Brown + + * ld-arm/arm-elf.exp (armelftests): Add cortex-a8-fix-blx-bcond.s. + * ld-arm/cortex-a8-fix-blx-bcond.s: New. + * ld-arm/cortex-a8-fix-blx-bcond.d: New. + 2010-08-24 H.J. Lu * ld-x86-64/x86-64.exp: Fix typos. diff --git a/ld/testsuite/ld-arm/arm-elf.exp b/ld/testsuite/ld-arm/arm-elf.exp index c23da5498e..ef5f0f4496 100644 --- a/ld/testsuite/ld-arm/arm-elf.exp +++ b/ld/testsuite/ld-arm/arm-elf.exp @@ -221,6 +221,10 @@ set armelftests { "-EL -mcpu=cortex-a8" {cortex-a8-fix-hdr.s} {{objdump -dr cortex-a8-fix-hdr.d}} "cortex-a8-fix-hdr"} + {"Cortex-A8 erratum fix, blx.w and b.w together" + "-EL -Ttext=0x8f00 --fix-cortex-a8" "-EL" {cortex-a8-fix-blx-bcond.s} + {{objdump -dr cortex-a8-fix-blx-bcond.d}} + "cortex-a8-fix-blx-bcond"} {"Unwinding and -gc-sections" "-gc-sections" "" {gc-unwind.s} {{objdump -sj.data gc-unwind.d}} "gc-unwind"} diff --git a/ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.d b/ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.d new file mode 100644 index 0000000000..692a60614c --- /dev/null +++ b/ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.d @@ -0,0 +1,1107 @@ + +.*: file format .* + + +Disassembly of section \.text: + +00008f00 <_start>: + 8f00: bf00 nop + 8f02: eb01 0002 add\.w r0, r1, r2 + 8f06: f47f affc bne\.w 8f02 <_start\+0x2> + 8f0a: eb01 0002 add\.w r0, r1, r2 + 8f0e: f47f aff8 bne\.w 8f02 <_start\+0x2> + 8f12: eb01 0002 add\.w r0, r1, r2 + 8f16: f47f aff4 bne\.w 8f02 <_start\+0x2> + 8f1a: eb01 0002 add\.w r0, r1, r2 + 8f1e: f47f aff0 bne\.w 8f02 <_start\+0x2> + 8f22: eb01 0002 add\.w r0, r1, r2 + 8f26: f47f affc bne\.w 8f22 <_start\+0x22> + 8f2a: eb01 0002 add\.w r0, r1, r2 + 8f2e: f47f aff8 bne\.w 8f22 <_start\+0x22> + 8f32: eb01 0002 add\.w r0, r1, r2 + 8f36: f47f aff4 bne\.w 8f22 <_start\+0x22> + 8f3a: eb01 0002 add\.w r0, r1, r2 + 8f3e: f47f aff0 bne\.w 8f22 <_start\+0x22> + 8f42: eb01 0002 add\.w r0, r1, r2 + 8f46: f47f affc bne\.w 8f42 <_start\+0x42> + 8f4a: eb01 0002 add\.w r0, r1, r2 + 8f4e: f47f aff8 bne\.w 8f42 <_start\+0x42> + 8f52: eb01 0002 add\.w r0, r1, r2 + 8f56: f47f aff4 bne\.w 8f42 <_start\+0x42> + 8f5a: eb01 0002 add\.w r0, r1, r2 + 8f5e: f47f aff0 bne\.w 8f42 <_start\+0x42> + 8f62: eb01 0002 add\.w r0, r1, r2 + 8f66: f47f affc bne\.w 8f62 <_start\+0x62> + 8f6a: eb01 0002 add\.w r0, r1, r2 + 8f6e: f47f aff8 bne\.w 8f62 <_start\+0x62> + 8f72: eb01 0002 add\.w r0, r1, r2 + 8f76: f47f aff4 bne\.w 8f62 <_start\+0x62> + 8f7a: eb01 0002 add\.w r0, r1, r2 + 8f7e: f47f aff0 bne\.w 8f62 <_start\+0x62> + 8f82: eb01 0002 add\.w r0, r1, r2 + 8f86: f47f affc bne\.w 8f82 <_start\+0x82> + 8f8a: eb01 0002 add\.w r0, r1, r2 + 8f8e: f47f aff8 bne\.w 8f82 <_start\+0x82> + 8f92: eb01 0002 add\.w r0, r1, r2 + 8f96: f47f aff4 bne\.w 8f82 <_start\+0x82> + 8f9a: eb01 0002 add\.w r0, r1, r2 + 8f9e: f47f aff0 bne\.w 8f82 <_start\+0x82> + 8fa2: eb01 0002 add\.w r0, r1, r2 + 8fa6: f47f affc bne\.w 8fa2 <_start\+0xa2> + 8faa: eb01 0002 add\.w r0, r1, r2 + 8fae: f47f aff8 bne\.w 8fa2 <_start\+0xa2> + 8fb2: eb01 0002 add\.w r0, r1, r2 + 8fb6: f47f aff4 bne\.w 8fa2 <_start\+0xa2> + 8fba: eb01 0002 add\.w r0, r1, r2 + 8fbe: f47f aff0 bne\.w 8fa2 <_start\+0xa2> + 8fc2: eb01 0002 add\.w r0, r1, r2 + 8fc6: f47f affc bne\.w 8fc2 <_start\+0xc2> + 8fca: eb01 0002 add\.w r0, r1, r2 + 8fce: f47f aff8 bne\.w 8fc2 <_start\+0xc2> + 8fd2: eb01 0002 add\.w r0, r1, r2 + 8fd6: f47f aff4 bne\.w 8fc2 <_start\+0xc2> + 8fda: eb01 0002 add\.w r0, r1, r2 + 8fde: f47f aff0 bne\.w 8fc2 <_start\+0xc2> + 8fe2: eb01 0002 add\.w r0, r1, r2 + 8fe6: f47f affc bne\.w 8fe2 <_start\+0xe2> + 8fea: eb01 0002 add\.w r0, r1, r2 + 8fee: f47f aff8 bne\.w 8fe2 <_start\+0xe2> + 8ff2: eb01 0002 add\.w r0, r1, r2 + 8ff6: f47f aff4 bne\.w 8fe2 <_start\+0xe2> + 8ffa: eb01 0002 add\.w r0, r1, r2 + 8ffe: f001 b805 b\.w a00c + 9002: bf00 nop + 9004: f3af 8000 nop\.w + 9008: f3af 8000 nop\.w + 900c: f3af 8000 nop\.w + 9010: f3af 8000 nop\.w + 9014: f3af 8000 nop\.w + 9018: f3af 8000 nop\.w + 901c: f3af 8000 nop\.w + 9020: f3af 8000 nop\.w + 9024: f3af 8000 nop\.w + 9028: f3af 8000 nop\.w + 902c: f3af 8000 nop\.w + 9030: f3af 8000 nop\.w + 9034: f3af 8000 nop\.w + 9038: f3af 8000 nop\.w + 903c: f3af 8000 nop\.w + 9040: f3af 8000 nop\.w + 9044: f3af 8000 nop\.w + 9048: f3af 8000 nop\.w + 904c: f3af 8000 nop\.w + 9050: f3af 8000 nop\.w + 9054: f3af 8000 nop\.w + 9058: f3af 8000 nop\.w + 905c: f3af 8000 nop\.w + 9060: f3af 8000 nop\.w + 9064: f3af 8000 nop\.w + 9068: f3af 8000 nop\.w + 906c: f3af 8000 nop\.w + 9070: f3af 8000 nop\.w + 9074: f3af 8000 nop\.w + 9078: f3af 8000 nop\.w + 907c: f3af 8000 nop\.w + 9080: f3af 8000 nop\.w + 9084: f3af 8000 nop\.w + 9088: f3af 8000 nop\.w + 908c: f3af 8000 nop\.w + 9090: f3af 8000 nop\.w + 9094: f3af 8000 nop\.w + 9098: f3af 8000 nop\.w + 909c: f3af 8000 nop\.w + 90a0: f3af 8000 nop\.w + 90a4: f3af 8000 nop\.w + 90a8: f3af 8000 nop\.w + 90ac: f3af 8000 nop\.w + 90b0: f3af 8000 nop\.w + 90b4: f3af 8000 nop\.w + 90b8: f3af 8000 nop\.w + 90bc: f3af 8000 nop\.w + 90c0: f3af 8000 nop\.w + 90c4: f3af 8000 nop\.w + 90c8: f3af 8000 nop\.w + 90cc: f3af 8000 nop\.w + 90d0: f3af 8000 nop\.w + 90d4: f3af 8000 nop\.w + 90d8: f3af 8000 nop\.w + 90dc: f3af 8000 nop\.w + 90e0: f3af 8000 nop\.w + 90e4: f3af 8000 nop\.w + 90e8: f3af 8000 nop\.w + 90ec: f3af 8000 nop\.w + 90f0: f3af 8000 nop\.w + 90f4: f3af 8000 nop\.w + 90f8: f3af 8000 nop\.w + 90fc: f3af 8000 nop\.w + 9100: f3af 8000 nop\.w + 9104: f3af 8000 nop\.w + 9108: f3af 8000 nop\.w + 910c: f3af 8000 nop\.w + 9110: f3af 8000 nop\.w + 9114: f3af 8000 nop\.w + 9118: f3af 8000 nop\.w + 911c: f3af 8000 nop\.w + 9120: f3af 8000 nop\.w + 9124: f3af 8000 nop\.w + 9128: f3af 8000 nop\.w + 912c: f3af 8000 nop\.w + 9130: f3af 8000 nop\.w + 9134: f3af 8000 nop\.w + 9138: f3af 8000 nop\.w + 913c: f3af 8000 nop\.w + 9140: f3af 8000 nop\.w + 9144: f3af 8000 nop\.w + 9148: f3af 8000 nop\.w + 914c: f3af 8000 nop\.w + 9150: f3af 8000 nop\.w + 9154: f3af 8000 nop\.w + 9158: f3af 8000 nop\.w + 915c: f3af 8000 nop\.w + 9160: f3af 8000 nop\.w + 9164: f3af 8000 nop\.w + 9168: f3af 8000 nop\.w + 916c: f3af 8000 nop\.w + 9170: f3af 8000 nop\.w + 9174: f3af 8000 nop\.w + 9178: f3af 8000 nop\.w + 917c: f3af 8000 nop\.w + 9180: f3af 8000 nop\.w + 9184: f3af 8000 nop\.w + 9188: f3af 8000 nop\.w + 918c: f3af 8000 nop\.w + 9190: f3af 8000 nop\.w + 9194: f3af 8000 nop\.w + 9198: f3af 8000 nop\.w + 919c: f3af 8000 nop\.w + 91a0: f3af 8000 nop\.w + 91a4: f3af 8000 nop\.w + 91a8: f3af 8000 nop\.w + 91ac: f3af 8000 nop\.w + 91b0: f3af 8000 nop\.w + 91b4: f3af 8000 nop\.w + 91b8: f3af 8000 nop\.w + 91bc: f3af 8000 nop\.w + 91c0: f3af 8000 nop\.w + 91c4: f3af 8000 nop\.w + 91c8: f3af 8000 nop\.w + 91cc: f3af 8000 nop\.w + 91d0: f3af 8000 nop\.w + 91d4: f3af 8000 nop\.w + 91d8: f3af 8000 nop\.w + 91dc: f3af 8000 nop\.w + 91e0: f3af 8000 nop\.w + 91e4: f3af 8000 nop\.w + 91e8: f3af 8000 nop\.w + 91ec: f3af 8000 nop\.w + 91f0: f3af 8000 nop\.w + 91f4: f3af 8000 nop\.w + 91f8: f3af 8000 nop\.w + 91fc: f3af 8000 nop\.w + 9200: f3af 8000 nop\.w + 9204: f3af 8000 nop\.w + 9208: f3af 8000 nop\.w + 920c: f3af 8000 nop\.w + 9210: f3af 8000 nop\.w + 9214: f3af 8000 nop\.w + 9218: f3af 8000 nop\.w + 921c: f3af 8000 nop\.w + 9220: f3af 8000 nop\.w + 9224: f3af 8000 nop\.w + 9228: f3af 8000 nop\.w + 922c: f3af 8000 nop\.w + 9230: f3af 8000 nop\.w + 9234: f3af 8000 nop\.w + 9238: f3af 8000 nop\.w + 923c: f3af 8000 nop\.w + 9240: f3af 8000 nop\.w + 9244: f3af 8000 nop\.w + 9248: f3af 8000 nop\.w + 924c: f3af 8000 nop\.w + 9250: f3af 8000 nop\.w + 9254: f3af 8000 nop\.w + 9258: f3af 8000 nop\.w + 925c: f3af 8000 nop\.w + 9260: f3af 8000 nop\.w + 9264: f3af 8000 nop\.w + 9268: f3af 8000 nop\.w + 926c: f3af 8000 nop\.w + 9270: f3af 8000 nop\.w + 9274: f3af 8000 nop\.w + 9278: f3af 8000 nop\.w + 927c: f3af 8000 nop\.w + 9280: f3af 8000 nop\.w + 9284: f3af 8000 nop\.w + 9288: f3af 8000 nop\.w + 928c: f3af 8000 nop\.w + 9290: f3af 8000 nop\.w + 9294: f3af 8000 nop\.w + 9298: f3af 8000 nop\.w + 929c: f3af 8000 nop\.w + 92a0: f3af 8000 nop\.w + 92a4: f3af 8000 nop\.w + 92a8: f3af 8000 nop\.w + 92ac: f3af 8000 nop\.w + 92b0: f3af 8000 nop\.w + 92b4: f3af 8000 nop\.w + 92b8: f3af 8000 nop\.w + 92bc: f3af 8000 nop\.w + 92c0: f3af 8000 nop\.w + 92c4: f3af 8000 nop\.w + 92c8: f3af 8000 nop\.w + 92cc: f3af 8000 nop\.w + 92d0: f3af 8000 nop\.w + 92d4: f3af 8000 nop\.w + 92d8: f3af 8000 nop\.w + 92dc: f3af 8000 nop\.w + 92e0: f3af 8000 nop\.w + 92e4: f3af 8000 nop\.w + 92e8: f3af 8000 nop\.w + 92ec: f3af 8000 nop\.w + 92f0: f3af 8000 nop\.w + 92f4: f3af 8000 nop\.w + 92f8: f3af 8000 nop\.w + 92fc: f3af 8000 nop\.w + 9300: f3af 8000 nop\.w + 9304: f3af 8000 nop\.w + 9308: f3af 8000 nop\.w + 930c: f3af 8000 nop\.w + 9310: f3af 8000 nop\.w + 9314: f3af 8000 nop\.w + 9318: f3af 8000 nop\.w + 931c: f3af 8000 nop\.w + 9320: f3af 8000 nop\.w + 9324: f3af 8000 nop\.w + 9328: f3af 8000 nop\.w + 932c: f3af 8000 nop\.w + 9330: f3af 8000 nop\.w + 9334: f3af 8000 nop\.w + 9338: f3af 8000 nop\.w + 933c: f3af 8000 nop\.w + 9340: f3af 8000 nop\.w + 9344: f3af 8000 nop\.w + 9348: f3af 8000 nop\.w + 934c: f3af 8000 nop\.w + 9350: f3af 8000 nop\.w + 9354: f3af 8000 nop\.w + 9358: f3af 8000 nop\.w + 935c: f3af 8000 nop\.w + 9360: f3af 8000 nop\.w + 9364: f3af 8000 nop\.w + 9368: f3af 8000 nop\.w + 936c: f3af 8000 nop\.w + 9370: f3af 8000 nop\.w + 9374: f3af 8000 nop\.w + 9378: f3af 8000 nop\.w + 937c: f3af 8000 nop\.w + 9380: f3af 8000 nop\.w + 9384: f3af 8000 nop\.w + 9388: f3af 8000 nop\.w + 938c: f3af 8000 nop\.w + 9390: f3af 8000 nop\.w + 9394: f3af 8000 nop\.w + 9398: f3af 8000 nop\.w + 939c: f3af 8000 nop\.w + 93a0: f3af 8000 nop\.w + 93a4: f3af 8000 nop\.w + 93a8: f3af 8000 nop\.w + 93ac: f3af 8000 nop\.w + 93b0: f3af 8000 nop\.w + 93b4: f3af 8000 nop\.w + 93b8: f3af 8000 nop\.w + 93bc: f3af 8000 nop\.w + 93c0: f3af 8000 nop\.w + 93c4: f3af 8000 nop\.w + 93c8: f3af 8000 nop\.w + 93cc: f3af 8000 nop\.w + 93d0: f3af 8000 nop\.w + 93d4: f3af 8000 nop\.w + 93d8: f3af 8000 nop\.w + 93dc: f3af 8000 nop\.w + 93e0: f3af 8000 nop\.w + 93e4: f3af 8000 nop\.w + 93e8: f3af 8000 nop\.w + 93ec: f3af 8000 nop\.w + 93f0: f3af 8000 nop\.w + 93f4: f3af 8000 nop\.w + 93f8: f3af 8000 nop\.w + 93fc: f3af 8000 nop\.w + 9400: f3af 8000 nop\.w + 9404: f3af 8000 nop\.w + 9408: f3af 8000 nop\.w + 940c: f3af 8000 nop\.w + 9410: f3af 8000 nop\.w + 9414: f3af 8000 nop\.w + 9418: f3af 8000 nop\.w + 941c: f3af 8000 nop\.w + 9420: f3af 8000 nop\.w + 9424: f3af 8000 nop\.w + 9428: f3af 8000 nop\.w + 942c: f3af 8000 nop\.w + 9430: f3af 8000 nop\.w + 9434: f3af 8000 nop\.w + 9438: f3af 8000 nop\.w + 943c: f3af 8000 nop\.w + 9440: f3af 8000 nop\.w + 9444: f3af 8000 nop\.w + 9448: f3af 8000 nop\.w + 944c: f3af 8000 nop\.w + 9450: f3af 8000 nop\.w + 9454: f3af 8000 nop\.w + 9458: f3af 8000 nop\.w + 945c: f3af 8000 nop\.w + 9460: f3af 8000 nop\.w + 9464: f3af 8000 nop\.w + 9468: f3af 8000 nop\.w + 946c: f3af 8000 nop\.w + 9470: f3af 8000 nop\.w + 9474: f3af 8000 nop\.w + 9478: f3af 8000 nop\.w + 947c: f3af 8000 nop\.w + 9480: f3af 8000 nop\.w + 9484: f3af 8000 nop\.w + 9488: f3af 8000 nop\.w + 948c: f3af 8000 nop\.w + 9490: f3af 8000 nop\.w + 9494: f3af 8000 nop\.w + 9498: f3af 8000 nop\.w + 949c: f3af 8000 nop\.w + 94a0: f3af 8000 nop\.w + 94a4: f3af 8000 nop\.w + 94a8: f3af 8000 nop\.w + 94ac: f3af 8000 nop\.w + 94b0: f3af 8000 nop\.w + 94b4: f3af 8000 nop\.w + 94b8: f3af 8000 nop\.w + 94bc: f3af 8000 nop\.w + 94c0: f3af 8000 nop\.w + 94c4: f3af 8000 nop\.w + 94c8: f3af 8000 nop\.w + 94cc: f3af 8000 nop\.w + 94d0: f3af 8000 nop\.w + 94d4: f3af 8000 nop\.w + 94d8: f3af 8000 nop\.w + 94dc: f3af 8000 nop\.w + 94e0: f3af 8000 nop\.w + 94e4: f3af 8000 nop\.w + 94e8: f3af 8000 nop\.w + 94ec: f3af 8000 nop\.w + 94f0: f3af 8000 nop\.w + 94f4: f3af 8000 nop\.w + 94f8: f3af 8000 nop\.w + 94fc: f3af 8000 nop\.w + 9500: f3af 8000 nop\.w + 9504: f3af 8000 nop\.w + 9508: f3af 8000 nop\.w + 950c: f3af 8000 nop\.w + 9510: f3af 8000 nop\.w + 9514: f3af 8000 nop\.w + 9518: f3af 8000 nop\.w + 951c: f3af 8000 nop\.w + 9520: f3af 8000 nop\.w + 9524: f3af 8000 nop\.w + 9528: f3af 8000 nop\.w + 952c: f3af 8000 nop\.w + 9530: f3af 8000 nop\.w + 9534: f3af 8000 nop\.w + 9538: f3af 8000 nop\.w + 953c: f3af 8000 nop\.w + 9540: f3af 8000 nop\.w + 9544: f3af 8000 nop\.w + 9548: f3af 8000 nop\.w + 954c: f3af 8000 nop\.w + 9550: f3af 8000 nop\.w + 9554: f3af 8000 nop\.w + 9558: f3af 8000 nop\.w + 955c: f3af 8000 nop\.w + 9560: f3af 8000 nop\.w + 9564: f3af 8000 nop\.w + 9568: f3af 8000 nop\.w + 956c: f3af 8000 nop\.w + 9570: f3af 8000 nop\.w + 9574: f3af 8000 nop\.w + 9578: f3af 8000 nop\.w + 957c: f3af 8000 nop\.w + 9580: f3af 8000 nop\.w + 9584: f3af 8000 nop\.w + 9588: f3af 8000 nop\.w + 958c: f3af 8000 nop\.w + 9590: f3af 8000 nop\.w + 9594: f3af 8000 nop\.w + 9598: f3af 8000 nop\.w + 959c: f3af 8000 nop\.w + 95a0: f3af 8000 nop\.w + 95a4: f3af 8000 nop\.w + 95a8: f3af 8000 nop\.w + 95ac: f3af 8000 nop\.w + 95b0: f3af 8000 nop\.w + 95b4: f3af 8000 nop\.w + 95b8: f3af 8000 nop\.w + 95bc: f3af 8000 nop\.w + 95c0: f3af 8000 nop\.w + 95c4: f3af 8000 nop\.w + 95c8: f3af 8000 nop\.w + 95cc: f3af 8000 nop\.w + 95d0: f3af 8000 nop\.w + 95d4: f3af 8000 nop\.w + 95d8: f3af 8000 nop\.w + 95dc: f3af 8000 nop\.w + 95e0: f3af 8000 nop\.w + 95e4: f3af 8000 nop\.w + 95e8: f3af 8000 nop\.w + 95ec: f3af 8000 nop\.w + 95f0: f3af 8000 nop\.w + 95f4: f3af 8000 nop\.w + 95f8: f3af 8000 nop\.w + 95fc: f3af 8000 nop\.w + 9600: f3af 8000 nop\.w + 9604: f3af 8000 nop\.w + 9608: f3af 8000 nop\.w + 960c: f3af 8000 nop\.w + 9610: f3af 8000 nop\.w + 9614: f3af 8000 nop\.w + 9618: f3af 8000 nop\.w + 961c: f3af 8000 nop\.w + 9620: f3af 8000 nop\.w + 9624: f3af 8000 nop\.w + 9628: f3af 8000 nop\.w + 962c: f3af 8000 nop\.w + 9630: f3af 8000 nop\.w + 9634: f3af 8000 nop\.w + 9638: f3af 8000 nop\.w + 963c: f3af 8000 nop\.w + 9640: f3af 8000 nop\.w + 9644: f3af 8000 nop\.w + 9648: f3af 8000 nop\.w + 964c: f3af 8000 nop\.w + 9650: f3af 8000 nop\.w + 9654: f3af 8000 nop\.w + 9658: f3af 8000 nop\.w + 965c: f3af 8000 nop\.w + 9660: f3af 8000 nop\.w + 9664: f3af 8000 nop\.w + 9668: f3af 8000 nop\.w + 966c: f3af 8000 nop\.w + 9670: f3af 8000 nop\.w + 9674: f3af 8000 nop\.w + 9678: f3af 8000 nop\.w + 967c: f3af 8000 nop\.w + 9680: f3af 8000 nop\.w + 9684: f3af 8000 nop\.w + 9688: f3af 8000 nop\.w + 968c: f3af 8000 nop\.w + 9690: f3af 8000 nop\.w + 9694: f3af 8000 nop\.w + 9698: f3af 8000 nop\.w + 969c: f3af 8000 nop\.w + 96a0: f3af 8000 nop\.w + 96a4: f3af 8000 nop\.w + 96a8: f3af 8000 nop\.w + 96ac: f3af 8000 nop\.w + 96b0: f3af 8000 nop\.w + 96b4: f3af 8000 nop\.w + 96b8: f3af 8000 nop\.w + 96bc: f3af 8000 nop\.w + 96c0: f3af 8000 nop\.w + 96c4: f3af 8000 nop\.w + 96c8: f3af 8000 nop\.w + 96cc: f3af 8000 nop\.w + 96d0: f3af 8000 nop\.w + 96d4: f3af 8000 nop\.w + 96d8: f3af 8000 nop\.w + 96dc: f3af 8000 nop\.w + 96e0: f3af 8000 nop\.w + 96e4: f3af 8000 nop\.w + 96e8: f3af 8000 nop\.w + 96ec: f3af 8000 nop\.w + 96f0: f3af 8000 nop\.w + 96f4: f3af 8000 nop\.w + 96f8: f3af 8000 nop\.w + 96fc: f3af 8000 nop\.w + 9700: f3af 8000 nop\.w + 9704: f3af 8000 nop\.w + 9708: f3af 8000 nop\.w + 970c: f3af 8000 nop\.w + 9710: f3af 8000 nop\.w + 9714: f3af 8000 nop\.w + 9718: f3af 8000 nop\.w + 971c: f3af 8000 nop\.w + 9720: f3af 8000 nop\.w + 9724: f3af 8000 nop\.w + 9728: f3af 8000 nop\.w + 972c: f3af 8000 nop\.w + 9730: f3af 8000 nop\.w + 9734: f3af 8000 nop\.w + 9738: f3af 8000 nop\.w + 973c: f3af 8000 nop\.w + 9740: f3af 8000 nop\.w + 9744: f3af 8000 nop\.w + 9748: f3af 8000 nop\.w + 974c: f3af 8000 nop\.w + 9750: f3af 8000 nop\.w + 9754: f3af 8000 nop\.w + 9758: f3af 8000 nop\.w + 975c: f3af 8000 nop\.w + 9760: f3af 8000 nop\.w + 9764: f3af 8000 nop\.w + 9768: f3af 8000 nop\.w + 976c: f3af 8000 nop\.w + 9770: f3af 8000 nop\.w + 9774: f3af 8000 nop\.w + 9778: f3af 8000 nop\.w + 977c: f3af 8000 nop\.w + 9780: f3af 8000 nop\.w + 9784: f3af 8000 nop\.w + 9788: f3af 8000 nop\.w + 978c: f3af 8000 nop\.w + 9790: f3af 8000 nop\.w + 9794: f3af 8000 nop\.w + 9798: f3af 8000 nop\.w + 979c: f3af 8000 nop\.w + 97a0: f3af 8000 nop\.w + 97a4: f3af 8000 nop\.w + 97a8: f3af 8000 nop\.w + 97ac: f3af 8000 nop\.w + 97b0: f3af 8000 nop\.w + 97b4: f3af 8000 nop\.w + 97b8: f3af 8000 nop\.w + 97bc: f3af 8000 nop\.w + 97c0: f3af 8000 nop\.w + 97c4: f3af 8000 nop\.w + 97c8: f3af 8000 nop\.w + 97cc: f3af 8000 nop\.w + 97d0: f3af 8000 nop\.w + 97d4: f3af 8000 nop\.w + 97d8: f3af 8000 nop\.w + 97dc: f3af 8000 nop\.w + 97e0: f3af 8000 nop\.w + 97e4: f3af 8000 nop\.w + 97e8: f3af 8000 nop\.w + 97ec: f3af 8000 nop\.w + 97f0: f3af 8000 nop\.w + 97f4: f3af 8000 nop\.w + 97f8: f3af 8000 nop\.w + 97fc: f3af 8000 nop\.w + 9800: f3af 8000 nop\.w + 9804: f3af 8000 nop\.w + 9808: f3af 8000 nop\.w + 980c: f3af 8000 nop\.w + 9810: f3af 8000 nop\.w + 9814: f3af 8000 nop\.w + 9818: f3af 8000 nop\.w + 981c: f3af 8000 nop\.w + 9820: f3af 8000 nop\.w + 9824: f3af 8000 nop\.w + 9828: f3af 8000 nop\.w + 982c: f3af 8000 nop\.w + 9830: f3af 8000 nop\.w + 9834: f3af 8000 nop\.w + 9838: f3af 8000 nop\.w + 983c: f3af 8000 nop\.w + 9840: f3af 8000 nop\.w + 9844: f3af 8000 nop\.w + 9848: f3af 8000 nop\.w + 984c: f3af 8000 nop\.w + 9850: f3af 8000 nop\.w + 9854: f3af 8000 nop\.w + 9858: f3af 8000 nop\.w + 985c: f3af 8000 nop\.w + 9860: f3af 8000 nop\.w + 9864: f3af 8000 nop\.w + 9868: f3af 8000 nop\.w + 986c: f3af 8000 nop\.w + 9870: f3af 8000 nop\.w + 9874: f3af 8000 nop\.w + 9878: f3af 8000 nop\.w + 987c: f3af 8000 nop\.w + 9880: f3af 8000 nop\.w + 9884: f3af 8000 nop\.w + 9888: f3af 8000 nop\.w + 988c: f3af 8000 nop\.w + 9890: f3af 8000 nop\.w + 9894: f3af 8000 nop\.w + 9898: f3af 8000 nop\.w + 989c: f3af 8000 nop\.w + 98a0: f3af 8000 nop\.w + 98a4: f3af 8000 nop\.w + 98a8: f3af 8000 nop\.w + 98ac: f3af 8000 nop\.w + 98b0: f3af 8000 nop\.w + 98b4: f3af 8000 nop\.w + 98b8: f3af 8000 nop\.w + 98bc: f3af 8000 nop\.w + 98c0: f3af 8000 nop\.w + 98c4: f3af 8000 nop\.w + 98c8: f3af 8000 nop\.w + 98cc: f3af 8000 nop\.w + 98d0: f3af 8000 nop\.w + 98d4: f3af 8000 nop\.w + 98d8: f3af 8000 nop\.w + 98dc: f3af 8000 nop\.w + 98e0: f3af 8000 nop\.w + 98e4: f3af 8000 nop\.w + 98e8: f3af 8000 nop\.w + 98ec: f3af 8000 nop\.w + 98f0: f3af 8000 nop\.w + 98f4: f3af 8000 nop\.w + 98f8: f3af 8000 nop\.w + 98fc: f3af 8000 nop\.w + 9900: f3af 8000 nop\.w + 9904: f3af 8000 nop\.w + 9908: f3af 8000 nop\.w + 990c: f3af 8000 nop\.w + 9910: f3af 8000 nop\.w + 9914: f3af 8000 nop\.w + 9918: f3af 8000 nop\.w + 991c: f3af 8000 nop\.w + 9920: f3af 8000 nop\.w + 9924: f3af 8000 nop\.w + 9928: f3af 8000 nop\.w + 992c: f3af 8000 nop\.w + 9930: f3af 8000 nop\.w + 9934: f3af 8000 nop\.w + 9938: f3af 8000 nop\.w + 993c: f3af 8000 nop\.w + 9940: f3af 8000 nop\.w + 9944: f3af 8000 nop\.w + 9948: f3af 8000 nop\.w + 994c: f3af 8000 nop\.w + 9950: f3af 8000 nop\.w + 9954: f3af 8000 nop\.w + 9958: f3af 8000 nop\.w + 995c: f3af 8000 nop\.w + 9960: f3af 8000 nop\.w + 9964: f3af 8000 nop\.w + 9968: f3af 8000 nop\.w + 996c: f3af 8000 nop\.w + 9970: f3af 8000 nop\.w + 9974: f3af 8000 nop\.w + 9978: f3af 8000 nop\.w + 997c: f3af 8000 nop\.w + 9980: f3af 8000 nop\.w + 9984: f3af 8000 nop\.w + 9988: f3af 8000 nop\.w + 998c: f3af 8000 nop\.w + 9990: f3af 8000 nop\.w + 9994: f3af 8000 nop\.w + 9998: f3af 8000 nop\.w + 999c: f3af 8000 nop\.w + 99a0: f3af 8000 nop\.w + 99a4: f3af 8000 nop\.w + 99a8: f3af 8000 nop\.w + 99ac: f3af 8000 nop\.w + 99b0: f3af 8000 nop\.w + 99b4: f3af 8000 nop\.w + 99b8: f3af 8000 nop\.w + 99bc: f3af 8000 nop\.w + 99c0: f3af 8000 nop\.w + 99c4: f3af 8000 nop\.w + 99c8: f3af 8000 nop\.w + 99cc: f3af 8000 nop\.w + 99d0: f3af 8000 nop\.w + 99d4: f3af 8000 nop\.w + 99d8: f3af 8000 nop\.w + 99dc: f3af 8000 nop\.w + 99e0: f3af 8000 nop\.w + 99e4: f3af 8000 nop\.w + 99e8: f3af 8000 nop\.w + 99ec: f3af 8000 nop\.w + 99f0: f3af 8000 nop\.w + 99f4: f3af 8000 nop\.w + 99f8: f3af 8000 nop\.w + 99fc: f3af 8000 nop\.w + 9a00: f3af 8000 nop\.w + 9a04: f3af 8000 nop\.w + 9a08: f3af 8000 nop\.w + 9a0c: f3af 8000 nop\.w + 9a10: f3af 8000 nop\.w + 9a14: f3af 8000 nop\.w + 9a18: f3af 8000 nop\.w + 9a1c: f3af 8000 nop\.w + 9a20: f3af 8000 nop\.w + 9a24: f3af 8000 nop\.w + 9a28: f3af 8000 nop\.w + 9a2c: f3af 8000 nop\.w + 9a30: f3af 8000 nop\.w + 9a34: f3af 8000 nop\.w + 9a38: f3af 8000 nop\.w + 9a3c: f3af 8000 nop\.w + 9a40: f3af 8000 nop\.w + 9a44: f3af 8000 nop\.w + 9a48: f3af 8000 nop\.w + 9a4c: f3af 8000 nop\.w + 9a50: f3af 8000 nop\.w + 9a54: f3af 8000 nop\.w + 9a58: f3af 8000 nop\.w + 9a5c: f3af 8000 nop\.w + 9a60: f3af 8000 nop\.w + 9a64: f3af 8000 nop\.w + 9a68: f3af 8000 nop\.w + 9a6c: f3af 8000 nop\.w + 9a70: f3af 8000 nop\.w + 9a74: f3af 8000 nop\.w + 9a78: f3af 8000 nop\.w + 9a7c: f3af 8000 nop\.w + 9a80: f3af 8000 nop\.w + 9a84: f3af 8000 nop\.w + 9a88: f3af 8000 nop\.w + 9a8c: f3af 8000 nop\.w + 9a90: f3af 8000 nop\.w + 9a94: f3af 8000 nop\.w + 9a98: f3af 8000 nop\.w + 9a9c: f3af 8000 nop\.w + 9aa0: f3af 8000 nop\.w + 9aa4: f3af 8000 nop\.w + 9aa8: f3af 8000 nop\.w + 9aac: f3af 8000 nop\.w + 9ab0: f3af 8000 nop\.w + 9ab4: f3af 8000 nop\.w + 9ab8: f3af 8000 nop\.w + 9abc: f3af 8000 nop\.w + 9ac0: f3af 8000 nop\.w + 9ac4: f3af 8000 nop\.w + 9ac8: f3af 8000 nop\.w + 9acc: f3af 8000 nop\.w + 9ad0: f3af 8000 nop\.w + 9ad4: f3af 8000 nop\.w + 9ad8: f3af 8000 nop\.w + 9adc: f3af 8000 nop\.w + 9ae0: f3af 8000 nop\.w + 9ae4: f3af 8000 nop\.w + 9ae8: f3af 8000 nop\.w + 9aec: f3af 8000 nop\.w + 9af0: f3af 8000 nop\.w + 9af4: f3af 8000 nop\.w + 9af8: f3af 8000 nop\.w + 9afc: f3af 8000 nop\.w + 9b00: f3af 8000 nop\.w + 9b04: f3af 8000 nop\.w + 9b08: f3af 8000 nop\.w + 9b0c: f3af 8000 nop\.w + 9b10: f3af 8000 nop\.w + 9b14: f3af 8000 nop\.w + 9b18: f3af 8000 nop\.w + 9b1c: f3af 8000 nop\.w + 9b20: f3af 8000 nop\.w + 9b24: f3af 8000 nop\.w + 9b28: f3af 8000 nop\.w + 9b2c: f3af 8000 nop\.w + 9b30: f3af 8000 nop\.w + 9b34: f3af 8000 nop\.w + 9b38: f3af 8000 nop\.w + 9b3c: f3af 8000 nop\.w + 9b40: f3af 8000 nop\.w + 9b44: f3af 8000 nop\.w + 9b48: f3af 8000 nop\.w + 9b4c: f3af 8000 nop\.w + 9b50: f3af 8000 nop\.w + 9b54: f3af 8000 nop\.w + 9b58: f3af 8000 nop\.w + 9b5c: f3af 8000 nop\.w + 9b60: f3af 8000 nop\.w + 9b64: f3af 8000 nop\.w + 9b68: f3af 8000 nop\.w + 9b6c: f3af 8000 nop\.w + 9b70: f3af 8000 nop\.w + 9b74: f3af 8000 nop\.w + 9b78: f3af 8000 nop\.w + 9b7c: f3af 8000 nop\.w + 9b80: f3af 8000 nop\.w + 9b84: f3af 8000 nop\.w + 9b88: f3af 8000 nop\.w + 9b8c: f3af 8000 nop\.w + 9b90: f3af 8000 nop\.w + 9b94: f3af 8000 nop\.w + 9b98: f3af 8000 nop\.w + 9b9c: f3af 8000 nop\.w + 9ba0: f3af 8000 nop\.w + 9ba4: f3af 8000 nop\.w + 9ba8: f3af 8000 nop\.w + 9bac: f3af 8000 nop\.w + 9bb0: f3af 8000 nop\.w + 9bb4: f3af 8000 nop\.w + 9bb8: f3af 8000 nop\.w + 9bbc: f3af 8000 nop\.w + 9bc0: f3af 8000 nop\.w + 9bc4: f3af 8000 nop\.w + 9bc8: f3af 8000 nop\.w + 9bcc: f3af 8000 nop\.w + 9bd0: f3af 8000 nop\.w + 9bd4: f3af 8000 nop\.w + 9bd8: f3af 8000 nop\.w + 9bdc: f3af 8000 nop\.w + 9be0: f3af 8000 nop\.w + 9be4: f3af 8000 nop\.w + 9be8: f3af 8000 nop\.w + 9bec: f3af 8000 nop\.w + 9bf0: f3af 8000 nop\.w + 9bf4: f3af 8000 nop\.w + 9bf8: f3af 8000 nop\.w + 9bfc: f3af 8000 nop\.w + 9c00: f3af 8000 nop\.w + 9c04: f3af 8000 nop\.w + 9c08: f3af 8000 nop\.w + 9c0c: f3af 8000 nop\.w + 9c10: f3af 8000 nop\.w + 9c14: f3af 8000 nop\.w + 9c18: f3af 8000 nop\.w + 9c1c: f3af 8000 nop\.w + 9c20: f3af 8000 nop\.w + 9c24: f3af 8000 nop\.w + 9c28: f3af 8000 nop\.w + 9c2c: f3af 8000 nop\.w + 9c30: f3af 8000 nop\.w + 9c34: f3af 8000 nop\.w + 9c38: f3af 8000 nop\.w + 9c3c: f3af 8000 nop\.w + 9c40: f3af 8000 nop\.w + 9c44: f3af 8000 nop\.w + 9c48: f3af 8000 nop\.w + 9c4c: f3af 8000 nop\.w + 9c50: f3af 8000 nop\.w + 9c54: f3af 8000 nop\.w + 9c58: f3af 8000 nop\.w + 9c5c: f3af 8000 nop\.w + 9c60: f3af 8000 nop\.w + 9c64: f3af 8000 nop\.w + 9c68: f3af 8000 nop\.w + 9c6c: f3af 8000 nop\.w + 9c70: f3af 8000 nop\.w + 9c74: f3af 8000 nop\.w + 9c78: f3af 8000 nop\.w + 9c7c: f3af 8000 nop\.w + 9c80: f3af 8000 nop\.w + 9c84: f3af 8000 nop\.w + 9c88: f3af 8000 nop\.w + 9c8c: f3af 8000 nop\.w + 9c90: f3af 8000 nop\.w + 9c94: f3af 8000 nop\.w + 9c98: f3af 8000 nop\.w + 9c9c: f3af 8000 nop\.w + 9ca0: f3af 8000 nop\.w + 9ca4: f3af 8000 nop\.w + 9ca8: f3af 8000 nop\.w + 9cac: f3af 8000 nop\.w + 9cb0: f3af 8000 nop\.w + 9cb4: f3af 8000 nop\.w + 9cb8: f3af 8000 nop\.w + 9cbc: f3af 8000 nop\.w + 9cc0: f3af 8000 nop\.w + 9cc4: f3af 8000 nop\.w + 9cc8: f3af 8000 nop\.w + 9ccc: f3af 8000 nop\.w + 9cd0: f3af 8000 nop\.w + 9cd4: f3af 8000 nop\.w + 9cd8: f3af 8000 nop\.w + 9cdc: f3af 8000 nop\.w + 9ce0: f3af 8000 nop\.w + 9ce4: f3af 8000 nop\.w + 9ce8: f3af 8000 nop\.w + 9cec: f3af 8000 nop\.w + 9cf0: f3af 8000 nop\.w + 9cf4: f3af 8000 nop\.w + 9cf8: f3af 8000 nop\.w + 9cfc: f3af 8000 nop\.w + 9d00: f3af 8000 nop\.w + 9d04: f3af 8000 nop\.w + 9d08: f3af 8000 nop\.w + 9d0c: f3af 8000 nop\.w + 9d10: f3af 8000 nop\.w + 9d14: f3af 8000 nop\.w + 9d18: f3af 8000 nop\.w + 9d1c: f3af 8000 nop\.w + 9d20: f3af 8000 nop\.w + 9d24: f3af 8000 nop\.w + 9d28: f3af 8000 nop\.w + 9d2c: f3af 8000 nop\.w + 9d30: f3af 8000 nop\.w + 9d34: f3af 8000 nop\.w + 9d38: f3af 8000 nop\.w + 9d3c: f3af 8000 nop\.w + 9d40: f3af 8000 nop\.w + 9d44: f3af 8000 nop\.w + 9d48: f3af 8000 nop\.w + 9d4c: f3af 8000 nop\.w + 9d50: f3af 8000 nop\.w + 9d54: f3af 8000 nop\.w + 9d58: f3af 8000 nop\.w + 9d5c: f3af 8000 nop\.w + 9d60: f3af 8000 nop\.w + 9d64: f3af 8000 nop\.w + 9d68: f3af 8000 nop\.w + 9d6c: f3af 8000 nop\.w + 9d70: f3af 8000 nop\.w + 9d74: f3af 8000 nop\.w + 9d78: f3af 8000 nop\.w + 9d7c: f3af 8000 nop\.w + 9d80: f3af 8000 nop\.w + 9d84: f3af 8000 nop\.w + 9d88: f3af 8000 nop\.w + 9d8c: f3af 8000 nop\.w + 9d90: f3af 8000 nop\.w + 9d94: f3af 8000 nop\.w + 9d98: f3af 8000 nop\.w + 9d9c: f3af 8000 nop\.w + 9da0: f3af 8000 nop\.w + 9da4: f3af 8000 nop\.w + 9da8: f3af 8000 nop\.w + 9dac: f3af 8000 nop\.w + 9db0: f3af 8000 nop\.w + 9db4: f3af 8000 nop\.w + 9db8: f3af 8000 nop\.w + 9dbc: f3af 8000 nop\.w + 9dc0: f3af 8000 nop\.w + 9dc4: f3af 8000 nop\.w + 9dc8: f3af 8000 nop\.w + 9dcc: f3af 8000 nop\.w + 9dd0: f3af 8000 nop\.w + 9dd4: f3af 8000 nop\.w + 9dd8: f3af 8000 nop\.w + 9ddc: f3af 8000 nop\.w + 9de0: f3af 8000 nop\.w + 9de4: f3af 8000 nop\.w + 9de8: f3af 8000 nop\.w + 9dec: f3af 8000 nop\.w + 9df0: f3af 8000 nop\.w + 9df4: f3af 8000 nop\.w + 9df8: f3af 8000 nop\.w + 9dfc: f3af 8000 nop\.w + 9e00: f3af 8000 nop\.w + 9e04: f3af 8000 nop\.w + 9e08: f3af 8000 nop\.w + 9e0c: f3af 8000 nop\.w + 9e10: f3af 8000 nop\.w + 9e14: f3af 8000 nop\.w + 9e18: f3af 8000 nop\.w + 9e1c: f3af 8000 nop\.w + 9e20: f3af 8000 nop\.w + 9e24: f3af 8000 nop\.w + 9e28: f3af 8000 nop\.w + 9e2c: f3af 8000 nop\.w + 9e30: f3af 8000 nop\.w + 9e34: f3af 8000 nop\.w + 9e38: f3af 8000 nop\.w + 9e3c: f3af 8000 nop\.w + 9e40: f3af 8000 nop\.w + 9e44: f3af 8000 nop\.w + 9e48: f3af 8000 nop\.w + 9e4c: f3af 8000 nop\.w + 9e50: f3af 8000 nop\.w + 9e54: f3af 8000 nop\.w + 9e58: f3af 8000 nop\.w + 9e5c: f3af 8000 nop\.w + 9e60: f3af 8000 nop\.w + 9e64: f3af 8000 nop\.w + 9e68: f3af 8000 nop\.w + 9e6c: f3af 8000 nop\.w + 9e70: f3af 8000 nop\.w + 9e74: f3af 8000 nop\.w + 9e78: f3af 8000 nop\.w + 9e7c: f3af 8000 nop\.w + 9e80: f3af 8000 nop\.w + 9e84: f3af 8000 nop\.w + 9e88: f3af 8000 nop\.w + 9e8c: f3af 8000 nop\.w + 9e90: f3af 8000 nop\.w + 9e94: f3af 8000 nop\.w + 9e98: f3af 8000 nop\.w + 9e9c: f3af 8000 nop\.w + 9ea0: f3af 8000 nop\.w + 9ea4: f3af 8000 nop\.w + 9ea8: f3af 8000 nop\.w + 9eac: f3af 8000 nop\.w + 9eb0: f3af 8000 nop\.w + 9eb4: f3af 8000 nop\.w + 9eb8: f3af 8000 nop\.w + 9ebc: f3af 8000 nop\.w + 9ec0: f3af 8000 nop\.w + 9ec4: f3af 8000 nop\.w + 9ec8: f3af 8000 nop\.w + 9ecc: f3af 8000 nop\.w + 9ed0: f3af 8000 nop\.w + 9ed4: f3af 8000 nop\.w + 9ed8: f3af 8000 nop\.w + 9edc: f3af 8000 nop\.w + 9ee0: f3af 8000 nop\.w + 9ee4: f3af 8000 nop\.w + 9ee8: f3af 8000 nop\.w + 9eec: f3af 8000 nop\.w + 9ef0: f3af 8000 nop\.w + 9ef4: f3af 8000 nop\.w + +00009ef8 : + 9ef8: e0843005 add r3, r4, r5 + 9efc: e12fff1e bx lr + +00009f00 : + 9f00: bf00 nop + 9f02: eb01 0002 add\.w r0, r1, r2 + 9f06: f7ff eff8 blx 9ef8 + 9f0a: eb01 0002 add\.w r0, r1, r2 + 9f0e: f7ff eff4 blx 9ef8 + 9f12: eb01 0002 add\.w r0, r1, r2 + 9f16: f7ff eff0 blx 9ef8 + 9f1a: eb01 0002 add\.w r0, r1, r2 + 9f1e: f7ff efec blx 9ef8 + 9f22: eb01 0002 add\.w r0, r1, r2 + 9f26: f7ff efe8 blx 9ef8 + 9f2a: eb01 0002 add\.w r0, r1, r2 + 9f2e: f7ff efe4 blx 9ef8 + 9f32: eb01 0002 add\.w r0, r1, r2 + 9f36: f7ff efe0 blx 9ef8 + 9f3a: eb01 0002 add\.w r0, r1, r2 + 9f3e: f7ff efdc blx 9ef8 + 9f42: eb01 0002 add\.w r0, r1, r2 + 9f46: f7ff efd8 blx 9ef8 + 9f4a: eb01 0002 add\.w r0, r1, r2 + 9f4e: f7ff efd4 blx 9ef8 + 9f52: eb01 0002 add\.w r0, r1, r2 + 9f56: f7ff efd0 blx 9ef8 + 9f5a: eb01 0002 add\.w r0, r1, r2 + 9f5e: f7ff efcc blx 9ef8 + 9f62: eb01 0002 add\.w r0, r1, r2 + 9f66: f7ff efc8 blx 9ef8 + 9f6a: eb01 0002 add\.w r0, r1, r2 + 9f6e: f7ff efc4 blx 9ef8 + 9f72: eb01 0002 add\.w r0, r1, r2 + 9f76: f7ff efc0 blx 9ef8 + 9f7a: eb01 0002 add\.w r0, r1, r2 + 9f7e: f7ff efbc blx 9ef8 + 9f82: eb01 0002 add\.w r0, r1, r2 + 9f86: f7ff efb8 blx 9ef8 + 9f8a: eb01 0002 add\.w r0, r1, r2 + 9f8e: f7ff efb4 blx 9ef8 + 9f92: eb01 0002 add\.w r0, r1, r2 + 9f96: f7ff efb0 blx 9ef8 + 9f9a: eb01 0002 add\.w r0, r1, r2 + 9f9e: f7ff efac blx 9ef8 + 9fa2: eb01 0002 add\.w r0, r1, r2 + 9fa6: f7ff efa8 blx 9ef8 + 9faa: eb01 0002 add\.w r0, r1, r2 + 9fae: f7ff efa4 blx 9ef8 + 9fb2: eb01 0002 add\.w r0, r1, r2 + 9fb6: f7ff efa0 blx 9ef8 + 9fba: eb01 0002 add\.w r0, r1, r2 + 9fbe: f7ff ef9c blx 9ef8 + 9fc2: eb01 0002 add\.w r0, r1, r2 + 9fc6: f7ff ef98 blx 9ef8 + 9fca: eb01 0002 add\.w r0, r1, r2 + 9fce: f7ff ef94 blx 9ef8 + 9fd2: eb01 0002 add\.w r0, r1, r2 + 9fd6: f7ff ef90 blx 9ef8 + 9fda: eb01 0002 add\.w r0, r1, r2 + 9fde: f7ff ef8c blx 9ef8 + 9fe2: eb01 0002 add\.w r0, r1, r2 + 9fe6: f7ff ef88 blx 9ef8 + 9fea: eb01 0002 add\.w r0, r1, r2 + 9fee: f7ff ef84 blx 9ef8 + 9ff2: eb01 0002 add\.w r0, r1, r2 + 9ff6: f7ff ef80 blx 9ef8 + 9ffa: eb01 0002 add\.w r0, r1, r2 + 9ffe: f000 e804 blx a008 + a002: 4770 bx lr + a004: f3af 8000 nop\.w + a008: eaffffba b 9ef8 + a00c: d101 bne\.n a012 + a00e: f7fe bff8 b\.w 9002 <_start\+0x102> + a012: f7fe bfe6 b\.w 8fe2 <_start\+0xe2> diff --git a/ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.s b/ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.s new file mode 100644 index 0000000000..cb40fb44c6 --- /dev/null +++ b/ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.s @@ -0,0 +1,81 @@ + .syntax unified + .cpu cortex-a8 + .thumb + .text + + @ expansion 32 bytes + .macro bw1 +1: + add.w r0, r1, r2 + blx.w arm_target + add.w r0, r1, r2 + blx.w arm_target + add.w r0, r1, r2 + blx.w arm_target + add.w r0, r1, r2 + blx.w arm_target + .endm + + @ expansion 128 bytes + .macro bw2 + bw1 + bw1 + bw1 + bw1 + .endm + + @ expansion 32 bytes + .macro bw3 +1: + add.w r0, r1, r2 + bne.w 1b + add.w r0, r1, r2 + bne.w 1b + add.w r0, r1, r2 + bne.w 1b + add.w r0, r1, r2 + bne.w 1b + .endm + + @ expansion 128 bytes + .macro bw4 + bw3 + bw3 + bw3 + bw3 + .endm + + .align 3 + .global _start + + .thumb + .thumb_func + .type _start, %function +_start: + nop + + @ Trigger Cortex-A8 erratum workaround with b instructions. + bw4 + bw4 + + nop + + .rept 957 + nop.w + .endr + + .arm +arm_target: + add r3, r4, r5 + bx lr + + .thumb +bl_insns: + + nop + + @ ...and again with bl instructions. + bw2 + bw2 + + bx lr