summaryrefslogtreecommitdiff
path: root/arch/powerpc/mm/nohash/fsl_booke.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/mm/nohash/fsl_booke.c')
-rw-r--r--arch/powerpc/mm/nohash/fsl_booke.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/arch/powerpc/mm/nohash/fsl_booke.c b/arch/powerpc/mm/nohash/fsl_booke.c
index 556e3cd52a35..e454a69ce6bc 100644
--- a/arch/powerpc/mm/nohash/fsl_booke.c
+++ b/arch/powerpc/mm/nohash/fsl_booke.c
@@ -102,7 +102,7 @@ unsigned long p_block_mapped(phys_addr_t pa)
* an unsigned long (for example, 32-bit implementations cannot support a 4GB
* size).
*/
-static void settlbcam(int index, unsigned long virt, phys_addr_t phys,
+void settlbcam(int index, unsigned long virt, phys_addr_t phys,
unsigned long size, unsigned long flags, unsigned int pid)
{
unsigned int tsize;
@@ -140,6 +140,18 @@ static void settlbcam(int index, unsigned long virt, phys_addr_t phys,
tlbcam_addrs[index].phys = phys;
}
+void cleartlbcam(unsigned long virt, unsigned int pid)
+{
+ int i = 0;
+ for (i = 0; i < NUM_TLBCAMS; i++) {
+ if (tlbcam_addrs[i].start == virt) {
+ TLBCAM[i].MAS1 = 0;
+ loadcam_entry(i);
+ return;
+ }
+ }
+}
+
unsigned long calc_cam_sz(unsigned long ram, unsigned long virt,
phys_addr_t phys)
{