ARC: mm: Fixes to allow STRICT_MM_TYPECHECKS
authorVineet Gupta <vgupta@kernel.org>
Mon, 28 Oct 2019 19:02:47 +0000 (12:02 -0700)
committerVineet Gupta <vgupta@kernel.org>
Tue, 24 Aug 2021 21:25:48 +0000 (14:25 -0700)
Signed-off-by: Vineet Gupta <vgupta@kernel.org>
arch/arc/mm/tlb.c

index 6079dfd..15cbc28 100644 (file)
@@ -71,7 +71,7 @@ static void tlb_entry_erase(unsigned int vaddr_n_asid)
        }
 }
 
-static void tlb_entry_insert(unsigned int pd0, pte_t pd1)
+static void tlb_entry_insert(unsigned int pd0, phys_addr_t pd1)
 {
        unsigned int idx;
 
@@ -109,13 +109,16 @@ static void tlb_entry_erase(unsigned int vaddr_n_asid)
        write_aux_reg(ARC_REG_TLBCOMMAND, TLBDeleteEntry);
 }
 
-static void tlb_entry_insert(unsigned int pd0, pte_t pd1)
+static void tlb_entry_insert(unsigned int pd0, phys_addr_t pd1)
 {
        write_aux_reg(ARC_REG_TLBPD0, pd0);
-       write_aux_reg(ARC_REG_TLBPD1, pd1);
 
-       if (is_pae40_enabled())
+       if (!is_pae40_enabled()) {
+               write_aux_reg(ARC_REG_TLBPD1, pd1);
+       } else {
+               write_aux_reg(ARC_REG_TLBPD1, pd1 & 0xFFFFFFFF);
                write_aux_reg(ARC_REG_TLBPD1HI, (u64)pd1 >> 32);
+       }
 
        write_aux_reg(ARC_REG_TLBCOMMAND, TLBInsertEntry);
 }
@@ -391,7 +394,7 @@ void create_tlb(struct vm_area_struct *vma, unsigned long vaddr, pte_t *ptep)
        unsigned long flags;
        unsigned int asid_or_sasid, rwx;
        unsigned long pd0;
-       pte_t pd1;
+       phys_addr_t pd1;
 
        /*
         * create_tlb() assumes that current->mm == vma->mm, since