| /* | 
 |  * 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. | 
 |  * | 
 |  * KVM/MIPS: COP0 access histogram | 
 |  * | 
 |  * Copyright (C) 2012  MIPS Technologies, Inc.  All rights reserved. | 
 |  * Authors: Sanjay Lal <sanjayl@kymasys.com> | 
 |  */ | 
 |  | 
 | #include <linux/kvm_host.h> | 
 |  | 
 | char *kvm_cop0_str[N_MIPS_COPROC_REGS] = { | 
 | 	"Index", | 
 | 	"Random", | 
 | 	"EntryLo0", | 
 | 	"EntryLo1", | 
 | 	"Context", | 
 | 	"PG Mask", | 
 | 	"Wired", | 
 | 	"HWREna", | 
 | 	"BadVAddr", | 
 | 	"Count", | 
 | 	"EntryHI", | 
 | 	"Compare", | 
 | 	"Status", | 
 | 	"Cause", | 
 | 	"EXC PC", | 
 | 	"PRID", | 
 | 	"Config", | 
 | 	"LLAddr", | 
 | 	"Watch Lo", | 
 | 	"Watch Hi", | 
 | 	"X Context", | 
 | 	"Reserved", | 
 | 	"Impl Dep", | 
 | 	"Debug", | 
 | 	"DEPC", | 
 | 	"PerfCnt", | 
 | 	"ErrCtl", | 
 | 	"CacheErr", | 
 | 	"TagLo", | 
 | 	"TagHi", | 
 | 	"ErrorEPC", | 
 | 	"DESAVE" | 
 | }; | 
 |  | 
 | void kvm_mips_dump_stats(struct kvm_vcpu *vcpu) | 
 | { | 
 | #ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS | 
 | 	int i, j; | 
 |  | 
 | 	kvm_info("\nKVM VCPU[%d] COP0 Access Profile:\n", vcpu->vcpu_id); | 
 | 	for (i = 0; i < N_MIPS_COPROC_REGS; i++) { | 
 | 		for (j = 0; j < N_MIPS_COPROC_SEL; j++) { | 
 | 			if (vcpu->arch.cop0.stat[i][j]) | 
 | 				kvm_info("%s[%d]: %lu\n", kvm_cop0_str[i], j, | 
 | 					 vcpu->arch.cop0.stat[i][j]); | 
 | 		} | 
 | 	} | 
 | #endif | 
 | } |