sh: Fix up the SH-3 build for recent TLB changes.
While the MMUCR.URB and ITLB/UTLB differentiation works fine for all SH-4 and later TLBs, these features are absent on SH-3. This splits out local_flush_tlb_all() in to SH-4 and PTEAEX copies while restoring the old SH-3 one, subsequently fixing up the build. This will probably want some further reordering and tidying in the future, but that's out of scope at present. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
@@ -77,3 +77,22 @@ void local_flush_tlb_one(unsigned long asid, unsigned long page)
|
||||
for (i = 0; i < ways; i++)
|
||||
__raw_writel(data, addr + (i << 8));
|
||||
}
|
||||
|
||||
void local_flush_tlb_all(void)
|
||||
{
|
||||
unsigned long flags, status;
|
||||
|
||||
/*
|
||||
* Flush all the TLB.
|
||||
*
|
||||
* Write to the MMU control register's bit:
|
||||
* TF-bit for SH-3, TI-bit for SH-4.
|
||||
* It's same position, bit #2.
|
||||
*/
|
||||
local_irq_save(flags);
|
||||
status = __raw_readl(MMUCR);
|
||||
status |= 0x04;
|
||||
__raw_writel(status, MMUCR);
|
||||
ctrl_barrier();
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
Reference in New Issue
Block a user