mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	KVM/MIPS32: Privileged instruction/target branch emulation.
- The Guest kernel is run in UM and privileged instructions cause a trap. - If the instruction causing the trap is in a branch delay slot, the branch needs to be emulated to figure out the PC @ which the guest will resume execution. Signed-off-by: Sanjay Lal <sanjayl@kymasys.com> Cc: kvm@vger.kernel.org Cc: linux-mips@linux-mips.org Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
		
							parent
							
								
									9843b030cc
								
							
						
					
					
						commit
						e685c689f3
					
				
					 2 changed files with 1853 additions and 0 deletions
				
			
		
							
								
								
									
										1829
									
								
								arch/mips/kvm/kvm_mips_emul.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1829
									
								
								arch/mips/kvm/kvm_mips_emul.c
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										24
									
								
								arch/mips/kvm/kvm_mips_opcode.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								arch/mips/kvm/kvm_mips_opcode.h
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
/*
 | 
			
		||||
* This file is subject to the terms and conditions of the GNU General Public
 | 
			
		||||
* License.  See the file "COPYING" in the main directory of this archive
 | 
			
		||||
* for more details.
 | 
			
		||||
*
 | 
			
		||||
* Copyright (C) 2012  MIPS Technologies, Inc.  All rights reserved.
 | 
			
		||||
* Authors: Sanjay Lal <sanjayl@kymasys.com>
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 * Define opcode values not defined in <asm/isnt.h>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __KVM_MIPS_OPCODE_H__
 | 
			
		||||
#define __KVM_MIPS_OPCODE_H__
 | 
			
		||||
 | 
			
		||||
/* COP0 Ops */
 | 
			
		||||
#define     mfmcz_op         0x0b	/*  01011  */
 | 
			
		||||
#define     wrpgpr_op        0x0e	/*  01110  */
 | 
			
		||||
 | 
			
		||||
/*  COP0 opcodes (only if COP0 and CO=1):  */
 | 
			
		||||
#define     wait_op               0x20	/*  100000  */
 | 
			
		||||
 | 
			
		||||
#endif /* __KVM_MIPS_OPCODE_H__ */
 | 
			
		||||
		Loading…
	
		Reference in a new issue