1 <!-- Instructions here described in PowerISA Version 3.0 B Book 1 -->
3 <!-- 3.3.1 System Linkage Instructions Page 952 - 956 -->
5 <!-- These instructions provide the means by which a program can call upon the system to perform a service. -->
18 SRR1[0:32] <- MSR[0:32]
19 SRR1[37:41] <- MSR[37:41]
20 SRR1[48:63] <- MSR[48:63]
23 Special Registers Altered:
27 # System Call Vectored
36 SRR1[33:36] <- undefined([0]*4)
37 SRR1[42:47] <- undefined([0]*6)
38 SRR1[0:32] <- MSR[0:32]
39 SRR1[37:41] <- MSR[37:41]
40 SRR1[48:63] <- MSR[48:63]
44 Special Registers Altered:
48 # Return From System Call Vectored
56 if (MSR[29:31] != 0b010) | (CTR[29:31] != 0b000) then
57 MSR[29:31] <- CTR[29:31]
62 MSR[4:28] <- CTR[4:28]
64 MSR[37:41] <- CTR[37:41]
65 MSR[49:50] <- CTR[49:50]
66 MSR[52:57] <- CTR[52:57]
67 MSR[60:63] <- CTR[60:63]
68 NIA <-iea LR[0:61] || 0b00
70 Special Registers Altered:
74 # Return From Interrupt Doubleword
82 MSR[51] <- (MSR[3] & SRR1[51]) | ((¬MSR[3] & MSR[51]))
83 MSR[3] <- (MSR[3] & SRR1[3])
84 if (MSR[29:31] != 0b010) | (SRR1[29:31] != 0b000) then
85 MSR[29:31] <- SRR1[29:31]
86 MSR[48] <- SRR1[48] | SRR1[49]
87 MSR[58] <- SRR1[58] | SRR1[49]
88 MSR[59] <- SRR1[59] | SRR1[49]
90 MSR[4:28] <- SRR1[4:28]
92 MSR[37:41] <- SRR1[37:41]
93 MSR[49:50] <- SRR1[49:50]
94 MSR[52:57] <- SRR1[52:57]
95 MSR[60:63] <- SRR1[60:63]
96 NIA <-iea SRR0[0:61] || 0b00
98 Special Registers Altered:
102 # Hypervisor Return From Interrupt Doubleword
110 if (MSR[29:31] != 0b010) | (HSRR1[29:31] != 0b000) then
111 MSR[29:31] <- HSRR1[29:31]
112 MSR[48] <- HSRR1[48] | HSRR1[49]
113 MSR[58] <- HSRR1[58] | HSRR1[49]
114 MSR[59] <- HSRR1[59] | HSRR1[49]
115 MSR[0:28] <- HSRR1[0:28]
117 MSR[37:41] <- HSRR1[37:41]
118 MSR[49:57] <- HSRR1[49:57]
119 MSR[60:63] <- HSRR1[60:63]
120 NIA <-iea HSRR0[0:61] || 0b00
122 Special Registers Altered:
126 <!-- Checked March 2021 -->