| ;;; Test 68HC11 linker relaxation and fixup of brclr/brset branches |
| ;;; |
| .sect .text |
| .globl _start |
| _start: |
| start: |
| brclr 140,x#200,L8 ; Branch adjustment covers the whole test |
| ;;; The 'addd' is relaxed and we win 1 byte. The next brclr/brset |
| ;;; branch must be fixed and reduced by 1. We check for different |
| ;;; addressing modes because the instruction has different opcode and |
| ;;; different lengths. |
| L1: |
| addd _toto |
| brclr 20,x,#3,L1 |
| brclr 90,x,#99,L3 ; Likewise with forward branch |
| L2: |
| addd _toto |
| brclr 19,y,#4,L2 |
| brclr 91,y,#98,L4 |
| L3: |
| addd _toto |
| brset 18,x,#5,L3 |
| brset 92,x,#97,L5 |
| L4: |
| addd _toto |
| brset 17,y,#6,L4 |
| brset 93,y,#96,L5 |
| L5: |
| addd _toto |
| brset *_table,#7,L5 |
| brset *_table+10,#95,L7 |
| L6: |
| addd _toto |
| brclr *_table+1,#8,L6 |
| brset *_table+11,#94,L8 |
| L7: |
| addd _toto |
| brclr *_table+1,#8,L6 |
| L8: |
| brclr 140,x#200,_start ; Branch adjustment covers the whole test |
| rts |
| |
| .sect .page0 |
| _bar: |
| .long 0 |
| _toto: |
| .long 0 |
| .skip 32 |
| stack: |
| .skip 10 |
| _table: |