This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH, ARM] Fix Cortex-A8 erratum veneer alignment


Hi,

This patch fixes an alignment issue which means that (under quite rare
circumstances) the veneers used for erratum workarounds in the linker
can be placed at insufficiently-aligned locations, causing predictable
chaos. This is a refinement to the fix mentioned in point (2) of the
message:

  http://sourceware.org/ml/binutils/2009-08/msg00041.html

In short, the one Cortex-A8 erratum workaround which uses ARM-mode code
will now be aligned to a four-byte boundary, whereas before it may have
landed only on a two-byte boundary.

Also the enumeration value arm_stub_a8_veneer_lwm (which would
otherwise have been orphaned by this patch) is used in preference to
arm_stub_a8_veneer_b_cond elsewhere: this leads to no change in
functionality, but is somewhat more meaningful in that context. I can
apply that change separately if desired.

OK to apply? Tested with cross to ARM Linux. The new test case passes
with the main (non-testsuite) part of the patch, and fails without it.

Julian

ChangeLog

    bfd/
    * 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.

    ld/testsuite/
    * 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.
? bfd/elf32-arm.c-partially-fixed
Index: bfd/elf32-arm.c
===================================================================
RCS file: /cvs/src/src/bfd/elf32-arm.c,v
retrieving revision 1.238
diff -c -p -r1.238 elf32-arm.c
*** bfd/elf32-arm.c	18 Aug 2010 12:24:05 -0000	1.238
--- bfd/elf32-arm.c	18 Aug 2010 14:47:05 -0000
*************** static bfd_reloc_status_type elf32_arm_f
*** 3475,3480 ****
--- 3475,3510 ----
     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)
*************** arm_build_one_stub (struct bfd_hash_entr
*** 3506,3514 ****
    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.  */
      return TRUE;
  
    /* Make a note of the offset within the stubs for this entry.  */
--- 3536,3543 ----
    stub_sec = stub_entry->stub_sec;
  
    if ((globals->fix_cortex_a8 < 0)
!       != (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.  */
*************** make_branch_to_a8_stub (struct bfd_hash_
*** 13356,13362 ****
    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)
      return TRUE;
  
    contents = data->contents;
--- 13385,13391 ----
    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_lwm)
      return TRUE;
  
    contents = data->contents;
Index: ld/testsuite/ld-arm/arm-elf.exp
===================================================================
RCS file: /cvs/src/src/ld/testsuite/ld-arm/arm-elf.exp,v
retrieving revision 1.77
diff -c -p -r1.77 arm-elf.exp
*** ld/testsuite/ld-arm/arm-elf.exp	11 May 2010 17:36:28 -0000	1.77
--- ld/testsuite/ld-arm/arm-elf.exp	18 Aug 2010 14:47:05 -0000
*************** set armelftests {
*** 221,226 ****
--- 221,230 ----
       "-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<cond>.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"}
Index: ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.d
===================================================================
RCS file: ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.d
diff -N ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.d
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.d	18 Aug 2010 14:47:05 -0000
***************
*** 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 <bl_insns\+0x10c>
+     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 <arm_target>:
+     9ef8:	e0843005 	add	r3, r4, r5
+     9efc:	e12fff1e 	bx	lr
+ 
+ 00009f00 <bl_insns>:
+     9f00:	bf00      	nop
+     9f02:	eb01 0002 	add\.w	r0, r1, r2
+     9f06:	f7ff eff8 	blx	9ef8 <arm_target>
+     9f0a:	eb01 0002 	add\.w	r0, r1, r2
+     9f0e:	f7ff eff4 	blx	9ef8 <arm_target>
+     9f12:	eb01 0002 	add\.w	r0, r1, r2
+     9f16:	f7ff eff0 	blx	9ef8 <arm_target>
+     9f1a:	eb01 0002 	add\.w	r0, r1, r2
+     9f1e:	f7ff efec 	blx	9ef8 <arm_target>
+     9f22:	eb01 0002 	add\.w	r0, r1, r2
+     9f26:	f7ff efe8 	blx	9ef8 <arm_target>
+     9f2a:	eb01 0002 	add\.w	r0, r1, r2
+     9f2e:	f7ff efe4 	blx	9ef8 <arm_target>
+     9f32:	eb01 0002 	add\.w	r0, r1, r2
+     9f36:	f7ff efe0 	blx	9ef8 <arm_target>
+     9f3a:	eb01 0002 	add\.w	r0, r1, r2
+     9f3e:	f7ff efdc 	blx	9ef8 <arm_target>
+     9f42:	eb01 0002 	add\.w	r0, r1, r2
+     9f46:	f7ff efd8 	blx	9ef8 <arm_target>
+     9f4a:	eb01 0002 	add\.w	r0, r1, r2
+     9f4e:	f7ff efd4 	blx	9ef8 <arm_target>
+     9f52:	eb01 0002 	add\.w	r0, r1, r2
+     9f56:	f7ff efd0 	blx	9ef8 <arm_target>
+     9f5a:	eb01 0002 	add\.w	r0, r1, r2
+     9f5e:	f7ff efcc 	blx	9ef8 <arm_target>
+     9f62:	eb01 0002 	add\.w	r0, r1, r2
+     9f66:	f7ff efc8 	blx	9ef8 <arm_target>
+     9f6a:	eb01 0002 	add\.w	r0, r1, r2
+     9f6e:	f7ff efc4 	blx	9ef8 <arm_target>
+     9f72:	eb01 0002 	add\.w	r0, r1, r2
+     9f76:	f7ff efc0 	blx	9ef8 <arm_target>
+     9f7a:	eb01 0002 	add\.w	r0, r1, r2
+     9f7e:	f7ff efbc 	blx	9ef8 <arm_target>
+     9f82:	eb01 0002 	add\.w	r0, r1, r2
+     9f86:	f7ff efb8 	blx	9ef8 <arm_target>
+     9f8a:	eb01 0002 	add\.w	r0, r1, r2
+     9f8e:	f7ff efb4 	blx	9ef8 <arm_target>
+     9f92:	eb01 0002 	add\.w	r0, r1, r2
+     9f96:	f7ff efb0 	blx	9ef8 <arm_target>
+     9f9a:	eb01 0002 	add\.w	r0, r1, r2
+     9f9e:	f7ff efac 	blx	9ef8 <arm_target>
+     9fa2:	eb01 0002 	add\.w	r0, r1, r2
+     9fa6:	f7ff efa8 	blx	9ef8 <arm_target>
+     9faa:	eb01 0002 	add\.w	r0, r1, r2
+     9fae:	f7ff efa4 	blx	9ef8 <arm_target>
+     9fb2:	eb01 0002 	add\.w	r0, r1, r2
+     9fb6:	f7ff efa0 	blx	9ef8 <arm_target>
+     9fba:	eb01 0002 	add\.w	r0, r1, r2
+     9fbe:	f7ff ef9c 	blx	9ef8 <arm_target>
+     9fc2:	eb01 0002 	add\.w	r0, r1, r2
+     9fc6:	f7ff ef98 	blx	9ef8 <arm_target>
+     9fca:	eb01 0002 	add\.w	r0, r1, r2
+     9fce:	f7ff ef94 	blx	9ef8 <arm_target>
+     9fd2:	eb01 0002 	add\.w	r0, r1, r2
+     9fd6:	f7ff ef90 	blx	9ef8 <arm_target>
+     9fda:	eb01 0002 	add\.w	r0, r1, r2
+     9fde:	f7ff ef8c 	blx	9ef8 <arm_target>
+     9fe2:	eb01 0002 	add\.w	r0, r1, r2
+     9fe6:	f7ff ef88 	blx	9ef8 <arm_target>
+     9fea:	eb01 0002 	add\.w	r0, r1, r2
+     9fee:	f7ff ef84 	blx	9ef8 <arm_target>
+     9ff2:	eb01 0002 	add\.w	r0, r1, r2
+     9ff6:	f7ff ef80 	blx	9ef8 <arm_target>
+     9ffa:	eb01 0002 	add\.w	r0, r1, r2
+     9ffe:	f000 e804 	blx	a008 <bl_insns\+0x108>
+     a002:	4770      	bx	lr
+     a004:	f3af 8000 	nop\.w
+     a008:	eaffffba 	b	9ef8 <arm_target>
+     a00c:	d101      	bne\.n	a012 <bl_insns\+0x112>
+     a00e:	f7fe bff8 	b\.w	9002 <_start\+0x102>
+     a012:	f7fe bfe6 	b\.w	8fe2 <_start\+0xe2>
Index: ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.s
===================================================================
RCS file: ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.s
diff -N ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.s
*** /dev/null	1 Jan 1970 00:00:00 -0000
--- ld/testsuite/ld-arm/cortex-a8-fix-blx-bcond.s	18 Aug 2010 14:47:05 -0000
***************
*** 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<cond> 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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]