Commit | Line | Data |
---|---|---|
35ba4bc0 JL |
1 | .text |
2 | ||
3 | ;;; Test some common instruction patterns for disabling/enabling interrupts. | |
4 | ;;; "MOV &FOO,r10" is used as an artbitrary statement which isn't a NOP, to | |
5 | ;;; break up the instructions being tested. | |
6 | ||
7 | fn1: | |
8 | ;;; 1: Test EINT | |
9 | ;; 430 ISA: NOP *not* required before *or* after EINT | |
10 | ;; 430x ISA: NOP *is* required before *and* after EINT | |
11 | MOV &FOO,r10 | |
12 | ||
13 | EINT | |
14 | ||
15 | MOV &FOO,r10 | |
16 | ||
17 | BIS.W #8,SR ; Alias for EINT | |
18 | ||
19 | MOV &FOO,r10 | |
20 | ;;; 2: Test DINT | |
21 | ;; 430 ISA: NOP *is* required after DINT | |
22 | ;; 430x ISA: NOP *is* required after DINT | |
23 | MOV &FOO,r10 | |
24 | ||
25 | DINT | |
26 | NOP | |
27 | ||
28 | MOV &FOO,r10 | |
29 | ||
30 | BIC.W #8,SR ; Alias for DINT | |
31 | NOP | |
32 | ||
33 | MOV &FOO,r10 | |
34 | ;;; 3: Test EINT immediately before DINT | |
35 | ;; 430 ISA: NOP *not* required. | |
36 | ;; 430x ISA: NOP *is* required between EINT and DINT | |
37 | MOV &FOO,r10 | |
38 | ||
39 | NOP | |
40 | EINT | |
41 | DINT | |
42 | NOP | |
43 | ||
44 | MOV &FOO,r10 | |
45 | ||
46 | NOP | |
47 | BIS.W #8,SR ; Alias for EINT | |
48 | BIC.W #8,SR ; Alias for DINT | |
49 | NOP | |
50 | ||
51 | MOV &FOO,r10 | |
52 | ;;; 4: Test DINT immediately before EINT | |
53 | ;; 430 ISA: NOP *is* required after DINT. | |
54 | ;; 430x ISA: NOP *is* required after DINT and before EINT. Ensure only one | |
55 | ;; warning is emitted. | |
56 | MOV &FOO,r10 | |
57 | ||
58 | NOP | |
59 | DINT | |
60 | EINT | |
61 | NOP | |
62 | ||
63 | MOV &FOO,r10 | |
64 | ||
65 | BIC.W #8,SR ; Alias for DINT | |
66 | BIS.W #8,SR ; Alias for EINT | |
67 | NOP | |
68 | ||
69 | MOV &FOO,r10 | |
70 | ||
71 | ;;; 5: Test EINT last insn in file | |
72 | ||
73 | NOP | |
74 | EINT |