@@ -163,6 +163,11 @@ static inline void emu_tick_peripherals(emu_state_t *emu)
163163 emu_update_vblk_interrupts (vm );
164164#endif
165165
166+ #if SEMU_HAS (VIRTIORNG )
167+ if (emu -> vrng .InterruptStatus )
168+ emu_update_vrng_interrupts (vm );
169+ #endif
170+
166171#if SEMU_HAS (VIRTIOSND )
167172 if (emu -> vsnd .InterruptStatus )
168173 emu_update_vsnd_interrupts (vm );
@@ -193,7 +198,6 @@ static void mem_load(hart_t *hart,
193198 case 0x0 :
194199 case 0x2 : /* PLIC (0 - 0x3F) */
195200 plic_read (hart , & data -> plic , addr & 0x3FFFFFF , width , value );
196- plic_update_interrupts (hart -> vm , & data -> plic );
197201 return ;
198202 case 0x40 : /* UART */
199203 u8250_read (hart , & data -> uart , addr & 0xFFFFF , width , value );
@@ -202,46 +206,38 @@ static void mem_load(hart_t *hart,
202206#if SEMU_HAS (VIRTIONET )
203207 case 0x41 : /* virtio-net */
204208 virtio_net_read (hart , & data -> vnet , addr & 0xFFFFF , width , value );
205- emu_update_vnet_interrupts (hart -> vm );
206209 return ;
207210#endif
208211#if SEMU_HAS (VIRTIOBLK )
209212 case 0x42 : /* virtio-blk */
210213 virtio_blk_read (hart , & data -> vblk , addr & 0xFFFFF , width , value );
211- emu_update_vblk_interrupts (hart -> vm );
212214 return ;
213215#endif
214216 case 0x43 : /* mtimer */
215217 aclint_mtimer_read (hart , & data -> mtimer , addr & 0xFFFFF , width ,
216218 value );
217- aclint_mtimer_update_interrupts (hart , & data -> mtimer );
218219 return ;
219220 case 0x44 : /* mswi */
220221 aclint_mswi_read (hart , & data -> mswi , addr & 0xFFFFF , width , value );
221- aclint_mswi_update_interrupts (hart , & data -> mswi );
222222 return ;
223223 case 0x45 : /* sswi */
224224 aclint_sswi_read (hart , & data -> sswi , addr & 0xFFFFF , width , value );
225- aclint_sswi_update_interrupts (hart , & data -> sswi );
226225 return ;
227226#if SEMU_HAS (VIRTIORNG )
228227 case 0x46 : /* virtio-rng */
229228 virtio_rng_read (hart , & data -> vrng , addr & 0xFFFFF , width , value );
230- emu_update_vrng_interrupts (hart -> vm );
231229 return ;
232230#endif
233231
234232#if SEMU_HAS (VIRTIOSND )
235233 case 0x47 : /* virtio-snd */
236234 virtio_snd_read (hart , & data -> vsnd , addr & 0xFFFFF , width , value );
237- emu_update_vsnd_interrupts (hart -> vm );
238235 return ;
239236#endif
240237
241238#if SEMU_HAS (VIRTIOFS )
242239 case 0x48 : /* virtio-fs */
243240 virtio_fs_read (hart , & data -> vfs , addr & 0xFFFFF , width , value );
244- emu_update_vfs_interrupts (hart -> vm );
245241 return ;
246242#endif
247243 }
0 commit comments