diff options
Diffstat (limited to 'arch/arm/include/asm/tlbflush.h')
| -rw-r--r-- | arch/arm/include/asm/tlbflush.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h index fdbb9e369745..f467e9b3f8d5 100644 --- a/arch/arm/include/asm/tlbflush.h +++ b/arch/arm/include/asm/tlbflush.h | |||
| @@ -443,7 +443,18 @@ static inline void local_flush_bp_all(void) | |||
| 443 | isb(); | 443 | isb(); |
| 444 | } | 444 | } |
| 445 | 445 | ||
| 446 | #include <asm/cputype.h> | ||
| 446 | #ifdef CONFIG_ARM_ERRATA_798181 | 447 | #ifdef CONFIG_ARM_ERRATA_798181 |
| 448 | static inline int erratum_a15_798181(void) | ||
| 449 | { | ||
| 450 | unsigned int midr = read_cpuid_id(); | ||
| 451 | |||
| 452 | /* Cortex-A15 r0p0..r3p2 affected */ | ||
| 453 | if ((midr & 0xff0ffff0) != 0x410fc0f0 || midr > 0x413fc0f2) | ||
| 454 | return 0; | ||
| 455 | return 1; | ||
| 456 | } | ||
| 457 | |||
| 447 | static inline void dummy_flush_tlb_a15_erratum(void) | 458 | static inline void dummy_flush_tlb_a15_erratum(void) |
| 448 | { | 459 | { |
| 449 | /* | 460 | /* |
| @@ -453,6 +464,11 @@ static inline void dummy_flush_tlb_a15_erratum(void) | |||
| 453 | dsb(); | 464 | dsb(); |
| 454 | } | 465 | } |
| 455 | #else | 466 | #else |
| 467 | static inline int erratum_a15_798181(void) | ||
| 468 | { | ||
| 469 | return 0; | ||
| 470 | } | ||
| 471 | |||
| 456 | static inline void dummy_flush_tlb_a15_erratum(void) | 472 | static inline void dummy_flush_tlb_a15_erratum(void) |
| 457 | { | 473 | { |
| 458 | } | 474 | } |
