struct page *page; page = pte_page(pte); if (VALID_PAGE(page) && !test_bit(PG_mapped, &page->flags)) { unsigned long phys = pte_val(pte) & PTE_PHYS_MASK; __flush_wback_region((void *)P1SEGADDR(phys), PAGE_SIZE); __set_bit(PG_mapped, &page->flags); 
{ struct page *page = pte_page(pte); unsigned long pfn = pte_pfn(pte);  if (pfn_valid(pfn) && !test_bit(PG_mapped, &page->flags)) { unsigned long phys = pte_val(pte) & PTE_PHYS_MASK;  __flush_wback_region((void *)P1SEGADDR(phys), PAGE_SIZE); __set_bit(PG_mapped, &page->flags); } 
void update_mmu_cache(struct vm_area_struct * vma,		      unsigned long address, pte_t pte){	unsigned long flags;	unsigned long pteval;	unsigned long vpn;	/* Ptrace may call this routine. */	if (vma && current->active_mm != vma->vm_mm)		return;#if defined(CONFIG_SH7705_CACHE_32KB)	struct page *page;	page = pte_page(pte);	if (VALID_PAGE(page) && !test_bit(PG_mapped, &page->flags)) {		unsigned long phys = pte_val(pte) & PTE_PHYS_MASK;		__flush_wback_region((void *)P1SEGADDR(phys), PAGE_SIZE);		__set_bit(PG_mapped, &page->flags);	}#endif	local_irq_save(flags);	/* Set PTEH register */	vpn = (address & MMU_VPN_MASK) | get_asid();	ctrl_outl(vpn, MMU_PTEH);	pteval = pte_val(pte);	/* Set PTEL register */	pteval &= _PAGE_FLAGS_HARDWARE_MASK; /* drop software flags */	/* conveniently, we want all the software flags to be 0 anyway */	ctrl_outl(pteval, MMU_PTEL);	/* Load the TLB */	asm volatile("ldtlb": /* no output */ : /* no input */ : "memory");	local_irq_restore(flags);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0d6d82b6712c808e461090dd483f111f72b3b38b/tlb-sh3.c/buggy/arch/sh/mm/tlb-sh3.c