76 mask.local = ~hideleg.local | ~mideleg.local;
78 mask.vsei = (~hideleg.vsei)|(hideleg.vsei & vsstatus.sie);
79 mask.vssi = (~hideleg.vssi)|(hideleg.vssi & vsstatus.sie);
80 mask.vsti = (~hideleg.vsti)|(hideleg.vsti & vsstatus.sie);
82 mask.mei = (~mideleg.mei | ~hideleg.mei)
83 | (mideleg.mei & hideleg.mei & vsstatus.sie);
85 mask.mti = (~mideleg.mti | ~hideleg.mti)
86 | (mideleg.mti & hideleg.mti & vsstatus.sie);
88 mask.msi = (~mideleg.msi | ~hideleg.msi)
89 | (mideleg.msi & hideleg.msi & vsstatus.sie);
91 mask.sei = (~mideleg.sei | ~hideleg.sei)
92 | (mideleg.sei & hideleg.sei & vsstatus.sie);
94 mask.sti = (~mideleg.sti | ~hideleg.sti)
95 | (mideleg.sti & hideleg.sti & vsstatus.sie);
97 mask.ssi = (~mideleg.ssi | ~hideleg.ssi)
98 | (mideleg.ssi & hideleg.ssi & vsstatus.sie);
114 mask.local = ~hideleg.local | ~mideleg.local;
116 mask.local =
mask.local | (hideleg.local & mideleg.local);
119 mask.vsei = (~hideleg.vsei)|(hideleg.vsei & vsstatus.sie);
120 mask.vssi = (~hideleg.vssi)|(hideleg.vssi & vsstatus.sie);
121 mask.vsti = (~hideleg.vsti)|(hideleg.vsti & vsstatus.sie);
124 mask.mei = (~mideleg.mei | ~hideleg.mei)
125 | (mideleg.mei & hideleg.mei & vsstatus.sie);
127 mask.mti = (~mideleg.mti | ~hideleg.mti)
128 | (mideleg.mti & hideleg.mti & vsstatus.sie);
130 mask.msi = (~mideleg.msi | ~hideleg.msi)
131 | (mideleg.msi & hideleg.msi & vsstatus.sie);
134 mask.sei = (~mideleg.sei | ~hideleg.sei)
135 | (mideleg.sei & hideleg.sei & vsstatus.sie);
137 mask.sti = (~mideleg.sti | ~hideleg.sti)
138 | (mideleg.sti & hideleg.sti & vsstatus.sie);
140 mask.ssi = (~mideleg.ssi | ~hideleg.ssi)
141 | (mideleg.ssi & hideleg.ssi & vsstatus.sie);
143 mask.local = ~mideleg.local;
144 mask.mei = (~mideleg.mei) | (mideleg.mei &
status.sie);
145 mask.mti = (~mideleg.mti) | (mideleg.mti &
status.sie);
146 mask.msi = (~mideleg.msi) | (mideleg.msi &
status.sie);
149 mask.local =
mask.local | mideleg.local;
162 panic(
"Unknown privilege mode %d.", prv);
166 return std::bitset<NumInterruptTypes>(
mask);