1;;; Test 68HC11 linker relaxation and fixup of brclr/brset branches 2;;; 3 .sect .text 4 .globl _start 5_start: 6start: 7 brclr 140,x#200,L8 ; Branch adjustment covers the whole test 8;;; The 'addd' is relaxed and we win 1 byte. The next brclr/brset 9;;; branch must be fixed and reduced by 1. We check for different 10;;; addressing modes because the instruction has different opcode and 11;;; different lengths. 12L1: 13 addd _toto 14 brclr 20,x,#3,L1 15 brclr 90,x,#99,L3 ; Likewise with forward branch 16L2: 17 addd _toto 18 brclr 19,y,#4,L2 19 brclr 91,y,#98,L4 20L3: 21 addd _toto 22 brset 18,x,#5,L3 23 brset 92,x,#97,L5 24L4: 25 addd _toto 26 brset 17,y,#6,L4 27 brset 93,y,#96,L5 28L5: 29 addd _toto 30 brset *_table,#7,L5 31 brset *_table+10,#95,L7 32L6: 33 addd _toto 34 brclr *_table+1,#8,L6 35 brset *_table+11,#94,L8 36L7: 37 addd _toto 38 brclr *_table+1,#8,L6 39L8: 40 brclr 140,x#200,_start ; Branch adjustment covers the whole test 41 rts 42 43 .sect .page0 44_bar: 45 .long 0 46_toto: 47 .long 0 48 .skip 32 49stack: 50 .skip 10 51_table: 52