mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-07 01:51:42 +00:00
85848dd7ab
ARMv7 processors like Cortex-A9 broadcast the cache maintenance operations in hardware. This patch allows the flush_dcache_page/update_mmu_cache pair to work in lazy flushing mode similar to the UP case. Note that cache flushing on SMP systems now takes place via the set_pte_at() call (__sync_icache_dcache) and there is no race with other CPUs executing code from the new PTE before the cache flushing took place. Tested-by: Rabin Vincent <rabin.vincent@stericsson.com> Cc: Nicolas Pitre <nicolas.pitre@linaro.org> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
26 lines
563 B
C
26 lines
563 B
C
/*
|
|
* ARM specific SMP header, this contains our implementation
|
|
* details.
|
|
*/
|
|
#ifndef __ASMARM_SMP_PLAT_H
|
|
#define __ASMARM_SMP_PLAT_H
|
|
|
|
#include <asm/cputype.h>
|
|
|
|
/* all SMP configurations have the extended CPUID registers */
|
|
static inline int tlb_ops_need_broadcast(void)
|
|
{
|
|
return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 2;
|
|
}
|
|
|
|
#if !defined(CONFIG_SMP) || __LINUX_ARM_ARCH__ >= 7
|
|
#define cache_ops_need_broadcast() 0
|
|
#else
|
|
static inline int cache_ops_need_broadcast(void)
|
|
{
|
|
return ((read_cpuid_ext(CPUID_EXT_MMFR3) >> 12) & 0xf) < 1;
|
|
}
|
|
#endif
|
|
|
|
#endif
|