| .text |
| |
| ;;; Test some common instruction patterns for disabling/enabling interrupts. |
| ;;; "MOV &FOO,r10" is used as an artbitrary statement which isn't a NOP, to |
| ;;; break up the instructions being tested. |
| |
| fn1: |
| ;;; 1: Test EINT |
| ;; 430 ISA: NOP *not* required before *or* after EINT |
| ;; 430x ISA: NOP *is* required before *and* after EINT |
| MOV &FOO,r10 |
| |
| EINT |
| |
| MOV &FOO,r10 |
| |
| BIS.W #8,SR ; Alias for EINT |
| |
| MOV &FOO,r10 |
| ;;; 2: Test DINT |
| ;; 430 ISA: NOP *is* required after DINT |
| ;; 430x ISA: NOP *is* required after DINT |
| MOV &FOO,r10 |
| |
| DINT |
| NOP |
| |
| MOV &FOO,r10 |
| |
| BIC.W #8,SR ; Alias for DINT |
| NOP |
| |
| MOV &FOO,r10 |
| ;;; 3: Test EINT immediately before DINT |
| ;; 430 ISA: NOP *not* required. |
| ;; 430x ISA: NOP *is* required between EINT and DINT |
| MOV &FOO,r10 |
| |
| NOP |
| EINT |
| DINT |
| NOP |
| |
| MOV &FOO,r10 |
| |
| NOP |
| BIS.W #8,SR ; Alias for EINT |
| BIC.W #8,SR ; Alias for DINT |
| NOP |
| |
| MOV &FOO,r10 |
| ;;; 4: Test DINT immediately before EINT |
| ;; 430 ISA: NOP *is* required after DINT. |
| ;; 430x ISA: NOP *is* required after DINT and before EINT. Ensure only one |
| ;; warning is emitted. |
| MOV &FOO,r10 |
| |
| NOP |
| DINT |
| EINT |
| NOP |
| |
| MOV &FOO,r10 |
| |
| BIC.W #8,SR ; Alias for DINT |
| BIS.W #8,SR ; Alias for EINT |
| NOP |
| |
| MOV &FOO,r10 |
| |
| ;;; 5: Test EINT last insn in file |
| |
| NOP |
| EINT |