--- zzzz-none-000/linux-3.18.24/arch/arm/mm/flush.c 2015-10-31 20:39:51.000000000 +0000 +++ rtl96-5690pro-762/linux-3.18.24/arch/arm/mm/flush.c 2024-08-14 08:36:35.000000000 +0000 @@ -26,15 +26,15 @@ static void flush_pfn_alias(unsigned long pfn, unsigned long vaddr) { unsigned long to = FLUSH_ALIAS_START + (CACHE_COLOUR(vaddr) << PAGE_SHIFT); - const int zero = 0; set_top_pte(to, pfn_pte(pfn, PAGE_KERNEL)); - asm( "mcrr p15, 0, %1, %0, c14\n" - " mcr p15, 0, %2, c7, c10, 4" + asm( "mcrr p15, 0, %1, %0, c14" : - : "r" (to), "r" (to + PAGE_SIZE - L1_CACHE_BYTES), "r" (zero) + : "r" (to), "r" (to + PAGE_SIZE - 1) : "cc"); + + dsb(0); } static void flush_icache_alias(unsigned long pfn, unsigned long vaddr, unsigned long len) @@ -56,11 +56,12 @@ } if (cache_is_vipt_aliasing()) { - asm( "mcr p15, 0, %0, c7, c14, 0\n" - " mcr p15, 0, %0, c7, c10, 4" + asm( "mcr p15, 0, %0, c7, c14, 0" : : "r" (0) : "cc"); + + dsb(0); } } @@ -72,11 +73,12 @@ } if (cache_is_vipt_aliasing()) { - asm( "mcr p15, 0, %0, c7, c14, 0\n" - " mcr p15, 0, %0, c7, c10, 4" + asm( "mcr p15, 0, %0, c7, c14, 0" : : "r" (0) : "cc"); + + dsb(0); } if (vma->vm_flags & VM_EXEC)