Upload Tizen:Base source
[external/binutils.git] / gold / testsuite / thumb_blx_in_range.s
1 # thumb_blx_in_range.s
2 #
3 # Test THUMB/THUMB-2 blx instructions just within the branch range limits.
4 # Because bit 1 of the branch target comes from the branch instruction
5 # address, the branch range from PC (branch instruction address + 4) is
6 # acutally -((1<<22) + 2) to ((1<<22) - 4) for THUMB and -((1<<24) + 2) to
7 # ((1<<24) - 4) from THUMB2.
8
9         .syntax unified
10         .section        .text.pre,"x"
11
12 # Add padding so that target is just in branch range. 
13         .space  8
14
15         .align  2
16         .global _backward_target
17         .code   32
18         .type   _backword_target, %function
19 _backward_target:
20         bx      lr
21         .size   _backward_target, .-_backward_target
22         
23         .text
24
25 # Define _start so that linker does not complain.
26         .global _start
27         .code   32
28         .align  2
29         .type   _start, %function
30 _start:
31         bx      lr
32         .size   _start, .-_start
33
34         .global _backward_test
35         .code   16
36         .thumb_func
37         .type   _backward_test, %function
38 _backward_test:
39         nop.n
40         blx     _backward_target
41         .size   _backward_test, .-_backward_test
42
43         .align  2
44         .global _forward_test
45         .code   16
46         .thumb_func
47         .type   _forward_test, %function
48 _forward_test:
49         blx     _forward_target
50         .size   _forward_test, .-_forward_test
51         .code   32
52         
53         .section        .text.post,"x"
54
55 # Add padding so that target is just in branch range. 
56         .space  12
57
58         .align  2
59         .global _forward_target
60         .code   32
61         .type   _forward_target, %function
62 _forward_target:
63         bx      lr
64         .size   _forward_target, .-_forward_target