Compare commits
	
		
			1 Commits
		
	
	
		
			1a0fc4bd5d
			...
			7113683ee0
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 7113683ee0 | 
| @@ -289,6 +289,8 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co | |||||||
|             // post execution stuff |             // post execution stuff | ||||||
|             process_spawn_blocks(); |             process_spawn_blocks(); | ||||||
|             if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, static_cast<unsigned>(inst_id)); |             if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, static_cast<unsigned>(inst_id)); | ||||||
|  |             if(!this->core.trap_state) // update trap state if there is a pending interrupt | ||||||
|  |                 this->core.trap_state = this->core.pending_trap; | ||||||
|             // trap check |             // trap check | ||||||
|             if(trap_state!=0){ |             if(trap_state!=0){ | ||||||
|                 super::core.enter_trap(trap_state, pc.val, instr); |                 super::core.enter_trap(trap_state, pc.val, instr); | ||||||
| @@ -299,7 +301,6 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co | |||||||
|             cycle++; |             cycle++; | ||||||
|             pc.val=*NEXT_PC; |             pc.val=*NEXT_PC; | ||||||
|             this->core.reg.PC = this->core.reg.NEXT_PC; |             this->core.reg.PC = this->core.reg.NEXT_PC; | ||||||
|             this->core.trap_state = this->core.pending_trap; |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     return pc; |     return pc; | ||||||
|   | |||||||
| @@ -2318,6 +2318,8 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co | |||||||
|             // post execution stuff |             // post execution stuff | ||||||
|             process_spawn_blocks(); |             process_spawn_blocks(); | ||||||
|             if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, static_cast<unsigned>(inst_id)); |             if(this->sync_exec && POST_SYNC) this->do_sync(POST_SYNC, static_cast<unsigned>(inst_id)); | ||||||
|  |             if(!this->core.trap_state) // update trap state if there is a pending interrupt | ||||||
|  |                 this->core.trap_state = this->core.pending_trap; | ||||||
|             // trap check |             // trap check | ||||||
|             if(trap_state!=0){ |             if(trap_state!=0){ | ||||||
|                 super::core.enter_trap(trap_state, pc.val, instr); |                 super::core.enter_trap(trap_state, pc.val, instr); | ||||||
| @@ -2328,7 +2330,6 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co | |||||||
|             cycle++; |             cycle++; | ||||||
|             pc.val=*NEXT_PC; |             pc.val=*NEXT_PC; | ||||||
|             this->core.reg.PC = this->core.reg.NEXT_PC; |             this->core.reg.PC = this->core.reg.NEXT_PC; | ||||||
|             this->core.trap_state = this->core.pending_trap; |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|     return pc; |     return pc; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user