Beispiel #1
0
asmlinkage void do_tlbs(struct pt_regs *regs)
{
// 	printk("do_tlbs status %p, cause %p, epc %p,bd %p.\n", 
// 		regs->cp0_status,
// 		regs->cp0_cause,
// 		regs->cp0_epc,
// 		read_c0_badvaddr());
	do_page_fault(regs, 1, read_c0_badvaddr());
}
Beispiel #2
0
static void print_registers(struct pt_regs *regs)
{
	  	printk("Panic status %p, cause %p, epc %p,bd %p, entry hi %x\n", 
	  		regs->cp0_status,
	  		regs->cp0_cause,
	  		regs->cp0_epc,
	  		read_c0_badvaddr(),
	 		read_c0_entryhi());
}
Beispiel #3
0
int do_vcpu_tlbmiss(arch_regs_t *uregs)
{
	u32 badvaddr = read_c0_badvaddr();
	struct vmm_vcpu *current_vcpu;
	int counter = 0;
	mips32_tlb_entry_t *c_tlbe;

	current_vcpu = vmm_scheduler_current_vcpu();
	for (counter = 0; counter < 2 * CPU_TLB_COUNT; counter++) {
		c_tlbe = &mips_sregs(current_vcpu)->shadow_tlb_entries[counter];
		if (TBE_PGMSKD_VPN2(c_tlbe) ==
		    (badvaddr & ~c_tlbe->page_mask)) {
			mips_fill_tlb_entry(c_tlbe, -1);
			return 0;
		} else {
			vmm_panic("No TLB entry in shadow."
				  " Send fault to guest.\n");
		}
	}

	return VMM_EFAIL;
}
Beispiel #4
0
asmlinkage void do_tlbl(struct pt_regs *regs)
{	

	do_page_fault(regs, 0, read_c0_badvaddr());
}