1
;;; Test 68HC11 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.
16
bsr _far_bar ; Call to trampoline generated code
18
bne fail ; X and D preserved (swapped by _far_bar)
22
cpx #0xabcd ; Stack parameter preserved
24
ldd #_far_foo ; Get address of trampoline handler
27
ldd #_far_bar ; Likewise (unique trampoline check)
30
ldaa #%page(_far_no_tramp)
31
ldy #%addr(_far_no_tramp)
32
bsr __call_a16 ; No trampoline generated for _far_no_tramp
47
.far _far_bar ; Must mark symbol as far
77
.globl __far_trampoline
79
psha ; (2) Save function parameter (high)
80
;; <Read current page in A>
82
;; <Set currenge page from B>
85
ldab 4,x ; (4) Restore function parameter (low)
86
ldaa 2,x ; (4) Get saved page number
87
staa 4,x ; (4) Save it below return PC
90
pula ; (3) Restore function parameter (high)
96
;; <Read current page in A> ; (3) ldaa _current_page
98
;; <Set current page from B> ; (4) staa _current_page