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
7fn1:
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
75