File: cortex-a8-fix-blx-bcond.s

package info (click to toggle)
binutils-djgpp 2.35.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 321,228 kB
  • sloc: ansic: 1,162,947; asm: 671,219; cpp: 134,012; exp: 70,783; makefile: 55,860; sh: 22,254; yacc: 14,459; lisp: 13,806; perl: 2,008; lex: 1,649; pascal: 307; sed: 195; awk: 25
file content (81 lines) | stat: -rw-r--r-- 849 bytes parent folder | download | duplicates (27)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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