fix syntax error in system
[libreriscv.git] / openpower / isa / system.mdwn
1 # System Call
2
3 SC-Form
4
5 * sc LEV
6
7 SRR0 <-iea CIA + 4
8 SRR1[33:36] <- 0
9 SRR1[42:47] <- 0
10 SRR1[0:32] <- MSR[0:32]
11 SRR1[37:41] <- MSR[37:41]
12 SRR1[48:63] <- MSR[48:63]
13 MSR <- new_value
14 NIA <- 0x0000_0000_0000_0C00
15
16 Special Registers Altered:
17
18 SRR0 SRR1 MSR
19
20 # System Call Vectored
21
22 SC-Form
23
24 * scv LEV
25
26 LR <- CIA + 4
27 SRR1[33:36] <- undefined
28 SRR1[42:47] <- undefined
29 SRR1[0:32] <- MSR[0:32]
30 SRR1[37:41] <- MSR[37:41]
31 SRR1[48:63] <- MSR[48:63]
32 MSR <- new_value
33 NIA <- vectored
34
35 Special Registers Altered:
36
37 LR CTR MSR
38
39 # Return From System Call Vectored
40
41 XL-Form
42
43 * rfscv LEV
44
45 if (MSR[29:31] != 0b010) | (CTR[29:31] != 0b000) then
46 MSR[29:31] <- CTR[29:31]
47 MSR[48] <- CTR[49]
48 MSR[58] <- CTR[49]
49 MSR[59] <- CTR[49]
50 MSR[0:2] <- CTR[0:2]
51 MSR[4:28] <- CTR[4:28]
52 MSR[32] <- CTR[32]
53 MSR[37:41] <- CTR[37:41]
54 MSR[49:50] <- CTR[49:50]
55 MSR[52:57] <- CTR[52:57]
56 MSR[60:63] <- CTR[60:63]
57 NIA <-iea LR[0:61] || 0b00
58
59 Special Registers Altered:
60
61 MSR
62
63 # Return From Interrupt Doubleword
64
65 XL-Form
66
67 * rfid LEV
68
69 MSR[51] <- (MSR[3] & SRR1[51]) | ((¬MSR[3] & MSR[51]))
70 MSR[3] <- (MSR[3] & SRR1[3])
71 if (MSR[29:31] != 0b010) | (SRR1[29:31] != 0b000) then
72 MSR[29:31] <- SRR1[29:31]
73 MSR[48] <- SRR1[48] | SRR1[49]
74 MSR[58] <- SRR1[88] | SRR1[49]
75 MSR[59] <- SRR1[59] | SRR1[49]
76 MSR[0:2] <- SRR1[0:2]
77 MSR[4:28] <- SRR1[4:28]
78 MSR[32] <- SRR1[32]
79 MSR[37:41] <- SRR1[37:41]
80 MSR[49:50] <- SRR1[49:50]
81 MSR[52:57] <- SRR1[52:57]
82 MSR[60:63] <- SRR1[60:63]
83 NIA <-iea SRR0[0:61] || 0b00
84
85 Special Registers Altered:
86
87 MSR
88
89 # Hypervisor Return From Interrupt Doubleword
90
91 XL-Form
92
93 * hrfid LEV
94
95 if (MSR[29:31] != 0b010) | (HSRR1[29:31] != 0b000) then
96 MSR[29:31] <- HSRR1[29:31]
97 MSR[48] <- HSRR1[48] | HSRR1[49]
98 MSR[58] <- HSRR1[88] | HSRR1[49]
99 MSR[59] <- HSRR1[59] | HSRR1[49]
100 MSR[0:28] <- HSRR1[0:28]
101 MSR[32] <- HSRR1[32]
102 MSR[37:41] <- HSRR1[37:41]
103 MSR[49:57] <- HSRR1[49:57]
104 MSR[60:63] <- HSRR1[60:63]
105 NIA <-iea HSRR0[0:61] || 0b00
106
107 Special Registers Altered:
108
109 MSR
110