* ld-scripts/align.exp: Don't run on aix.
[deliverable/binutils-gdb.git] / ld / testsuite / ld-m68hc11 / far-hc12.s
CommitLineData
6c6532f7
SC
1;;; Test 68HC12 FAR trampoline generation
2;;; 2 trampolines are generated:
3;;; - one for '_far_bar'
4;;; - one for '_far_foo'
5;;; 'far_no_tramp' does not have any trampoline generated.
6;;;
7 .sect .text
8 .globl _start
9_start:
10start:
11 lds #stack-1
12 ldx #0xabcd
13 pshx
14 ldd #0x1234
15 ldx #0x5678
16 bsr _far_bar ; Call to trampoline generated code
17 cpx #0x1234
18 bne fail ; X and D preserved (swapped by _far_bar)
19 cpd #0x5678
20 bne fail
21 pulx
22 cpx #0xabcd ; Stack parameter preserved
23 bne fail
24 ldd #_far_foo ; Get address of trampoline handler
25 xgdx
26 jsr 0,x
27 ldd #_far_bar ; Likewise (unique trampoline check)
28 xgdy
29 jsr 0,y
30 call _far_no_tramp ; No trampoline generated for _far_no_tramp
31 clra
32 clrb
33 wai
34fail:
35 ldd #1
36 wai
37 bra start
38
39 .sect .bank1,"ax"
40 .globl _far_bar
41 .far _far_bar ; Must mark symbol as far
42_far_bar:
43 jsr local_bank1
44 xgdx
45 rtc
46
47local_bank1:
48 rts
49
50 .sect .bank2,"ax"
51 .globl _far_foo
52 .far _far_foo
53_far_foo:
54 jsr local_bank2
55 rtc
56
57local_bank2:
58 rts
59
60 .sect .bank3,"ax"
61 .globl _far_no_tramp
62 .far _far_no_tramp
63_far_no_tramp:
64 jsr local_bank3
65 rtc
66
67local_bank3:
68 rts
69
70 .sect .text
71 .globl __far_trampoline
72__far_trampoline:
73 movb 0,sp, 2,sp ; Copy page register below the caller's return
74 leas 2,sp ; address.
75 jmp 0,y ; We have a 'call/rtc' stack layout now
76 ; and can jump to the far handler
77 ; (whose memory bank is mapped due to the
78 ; call to the trampoline).
79
80 .sect .bss
81 .skip 100
82stack:
83
This page took 0.119349 seconds and 4 git commands to generate.