Home | History | Annotate | Download | only in ld-arm
      1 	.syntax unified
      2 	.cpu cortex-a8
      3 	.thumb
      4 	.text
      5 
      6 	@ expansion 32 bytes
      7 	.macro bw1
      8 1:
      9 	add.w r0, r1, r2
     10 	blx.w arm_target
     11 	add.w r0, r1, r2
     12 	blx.w arm_target
     13 	add.w r0, r1, r2
     14 	blx.w arm_target
     15 	add.w r0, r1, r2
     16 	blx.w arm_target
     17 	.endm
     18 
     19 	@ expansion 128 bytes
     20 	.macro bw2
     21 	bw1
     22 	bw1
     23 	bw1
     24 	bw1
     25 	.endm
     26 
     27 	@ expansion 32 bytes
     28 	.macro bw3
     29 1:
     30 	add.w r0, r1, r2
     31 	bne.w 1b
     32 	add.w r0, r1, r2
     33 	bne.w 1b
     34 	add.w r0, r1, r2
     35 	bne.w 1b
     36 	add.w r0, r1, r2
     37 	bne.w 1b
     38 	.endm
     39 
     40 	@ expansion 128 bytes
     41 	.macro bw4
     42 	bw3
     43 	bw3
     44 	bw3
     45 	bw3
     46 	.endm
     47 
     48 	.align  3
     49 	.global _start
     50 
     51 	.thumb
     52 	.thumb_func
     53 	.type   _start, %function
     54 _start:
     55 	nop
     56 
     57 	@ Trigger Cortex-A8 erratum workaround with b<cond> instructions.
     58 	bw4
     59 	bw4
     60 
     61 	nop
     62 
     63 	.rept 957
     64 	nop.w
     65 	.endr
     66 
     67 	.arm
     68 arm_target:
     69 	add r3, r4, r5
     70 	bx lr
     71 
     72 	.thumb
     73 bl_insns:
     74 
     75 	nop
     76 
     77 	@ ...and again with bl instructions.
     78 	bw2
     79 	bw2
     80 
     81 	bx      lr
     82