;;; Test 68HC11 linker relaxation and fixup of bcc/bra branches ;;; .sect .text .globl _start _start: ;; Next 'bra' is assembled as a 'jmp'. It is relaxed to 'bra L3' ;; during a second pass of relax. bra L3 .skip 20 ;; Next 'jmp' must be relaxed to a 'bra' during the first pass. ;; The branch offset must then be adjusted by consecutive relax. jmp L3 L1: addd 0,x bne L1 ; Branch not adjusted addd _toto beq L1 ; Backward branch, adjust -1 addd _toto+1 jbne L1 ; Backward branch, adjust -2 bgt L1 ; All possible backward branchs, adjust -2 bge L1 beq L1 ble L1 blt L1 bhi L1 bhs L1 beq L1 bls L1 blo L1 bcs L1 bmi L1 bvs L1 bcc L1 bpl L1 bvc L1 bne L1 brn L1 bra L1 ;; Relax several insn to reduce block by 15 addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto addd _toto L2: jmp _start ; -> relax to bra _start bne L2 ; Backward branch, adjust -1 beq L3 ; Forward branch, adjust -2 addd _toto beq L3 ; Forward branch, adjust -1 addd _toto L3: addd _toto rts .sect .page0 _bar: .long 0 _toto: .long 0 .skip 32 stack: .skip 10 _table: