@@ -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