1# thumb_bl_out_of_range.s
2# Test THUMB/THUMB-2 bl instructions just out of the branch range limits.
3	.syntax	unified
4
5	.section	.text.pre,"x"
6
7# Add padding so that target is just output of branch range.
8	.space	6
9
10	.global	_backward_target
11	.code	16
12	.thumb_func
13	.type	_backword_target, %function
14_backward_target:
15	bx	lr
16	.size	_backward_target, .-_backward_target
17
18	.text
19# Use 256-byte alignment so that we know where the stubs start.
20	.align	8
21
22# Define _start so that linker does not complain.
23	.global	_start
24	.code	32
25	.align	2
26	.type	_start, %function
27_start:
28	bx	lr
29	.size	_start, .-_start
30
31	.global	_backward_test
32	.code	16
33	.thumb_func
34	.type	_backward_test, %function
35_backward_test:
36	bl	_backward_target
37	.size	_backward_test, .-_backward_test
38
39	.global	_forward_test
40	.code	16
41	.thumb_func
42	.type	_forward_test, %function
43_forward_test:
44	bl	_forward_target
45	.size	_forward_test, .-_forward_test
46
47# switch back to ARM mode so that stubs are disassembled correctly.
48	.align	2
49	.code	32
50
51# Align stub table for address matching.
52	.align	8
53
54	.section	.text.post,"x"
55
56# Add padding so that target is just out of branch range.
57	.space	12
58
59	.global	_forward_target
60	.code	16
61	.thumb_func
62	.type	_forward_target, %function
63_forward_target:
64	bx	lr
65	.size	_forward_target, .-_forward_target
66