1*1424dfb3Schristos;;; Test 68HC11 linker relaxation from extended addressing to direct
2*1424dfb3Schristos;;; addressing modes
3*1424dfb3Schristos;;;
4*1424dfb3Schristos	.sect .text
5*1424dfb3Schristos	.globl _start
6*1424dfb3Schristos_start:
7*1424dfb3Schristosstart:
8*1424dfb3Schristos	lds	stack
9*1424dfb3Schristos	ldd	_bar
10*1424dfb3Schristos	beq	F1
11*1424dfb3Schristos	beq	F2
12*1424dfb3Schristos	std	_bar
13*1424dfb3Schristos	jsr	_bar
14*1424dfb3SchristosF1:
15*1424dfb3Schristos	addd	_toto
16*1424dfb3Schristos	bne	start
17*1424dfb3Schristos	;; All the following instructions will be relaxed and win 1 byte
18*1424dfb3Schristos	;; for each.
19*1424dfb3Schristos	addd	_toto+200
20*1424dfb3Schristos	addd	stack+256-20
21*1424dfb3Schristos	adca	_table+2
22*1424dfb3Schristos	adcb	_table+3
23*1424dfb3Schristos	adda	_table+4
24*1424dfb3Schristos	addb	_table+5
25*1424dfb3Schristos	addd	_table+6
26*1424dfb3Schristos	anda	_table+7
27*1424dfb3Schristos	andb	_table+8
28*1424dfb3Schristos	cmpa	_table+9
29*1424dfb3Schristos	cmpb	_table+10
30*1424dfb3Schristos	cpd	_table+11
31*1424dfb3Schristos	cpx	_table+12
32*1424dfb3Schristos	cpy	_table+13
33*1424dfb3Schristos	eora	_table+14
34*1424dfb3Schristos	eorb	_table+15
35*1424dfb3Schristos	jsr	_table+16
36*1424dfb3Schristos	ldaa	_table+17
37*1424dfb3Schristos	ldab	_table+18
38*1424dfb3Schristos	ldd	_table+19
39*1424dfb3Schristos	lds	_table+20
40*1424dfb3Schristos	ldx	_table+21
41*1424dfb3Schristos	ldy	_table+22
42*1424dfb3Schristos	oraa	_table+23
43*1424dfb3Schristos	orab	_table+24
44*1424dfb3Schristos	sbcb	_table+25
45*1424dfb3Schristos	sbca	_table+26
46*1424dfb3Schristos	staa	_table+27
47*1424dfb3Schristos	stab	_table+28
48*1424dfb3Schristos	std	_table+29
49*1424dfb3Schristos	sts	_table+30
50*1424dfb3Schristos	stx	_table+31
51*1424dfb3Schristos	sty	_table+32
52*1424dfb3Schristos	suba	_table+33
53*1424dfb3Schristos	subb	_table+34
54*1424dfb3Schristos	subd	_table+35
55*1424dfb3Schristos	;; 'bne' is assembled as far branch and must relax to
56*1424dfb3Schristos	;; a relative 8-bit branch.
57*1424dfb3Schristos	bne	_start
58*1424dfb3Schristos	;; Likewise for next branch
59*1424dfb3Schristos	bra	F1
60*1424dfb3Schristos	rts
61*1424dfb3Schristos
62*1424dfb3Schristos;;; The following instructions will not be relaxed
63*1424dfb3Schristosno_relax:
64*1424dfb3Schristos	addd	_stack_top+60
65*1424dfb3Schristos	std	_stack_top+40
66*1424dfb3Schristos	;; 'tst' does not support direct addressing mode.
67*1424dfb3Schristos	tst	_toto+1
68*1424dfb3Schristos	bne	no_relax
69*1424dfb3Schristos	.skip	200
70*1424dfb3SchristosF2:
71*1424dfb3Schristos	bra	_start
72*1424dfb3Schristos
73*1424dfb3Schristos	.sect	.page0
74*1424dfb3Schristos_bar:
75*1424dfb3Schristos	.long	0
76*1424dfb3Schristos_toto:
77*1424dfb3Schristos	.long	0
78*1424dfb3Schristos	.skip	32
79*1424dfb3Schristosstack:
80*1424dfb3Schristos	.skip	10
81*1424dfb3Schristos_table:
82*1424dfb3Schristos	.skip	200
83*1424dfb3Schristos_stack_top:
84*1424dfb3Schristos
85