Home | History | Annotate | Download | only in testsuite
      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
     65