162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public 362306a36Sopenharmony_ci * License. See the file "COPYING" in the main directory of this archive 462306a36Sopenharmony_ci * for more details. 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * Copyright (C) 2004 Cavium Networks 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci#ifndef __ASM_MACH_CAVIUM_OCTEON_CPU_FEATURE_OVERRIDES_H 962306a36Sopenharmony_ci#define __ASM_MACH_CAVIUM_OCTEON_CPU_FEATURE_OVERRIDES_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_ci#include <linux/types.h> 1262306a36Sopenharmony_ci#include <asm/mipsregs.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci/* 1562306a36Sopenharmony_ci * Cavium Octeons are MIPS64v2 processors 1662306a36Sopenharmony_ci */ 1762306a36Sopenharmony_ci#define cpu_dcache_line_size() 128 1862306a36Sopenharmony_ci#define cpu_icache_line_size() 128 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci#define cpu_has_4kex 1 2262306a36Sopenharmony_ci#define cpu_has_3k_cache 0 2362306a36Sopenharmony_ci#define cpu_has_4k_cache 0 2462306a36Sopenharmony_ci#define cpu_has_counter 1 2562306a36Sopenharmony_ci#define cpu_has_watch 1 2662306a36Sopenharmony_ci#define cpu_has_divec 1 2762306a36Sopenharmony_ci#define cpu_has_vce 0 2862306a36Sopenharmony_ci#define cpu_has_cache_cdex_p 0 2962306a36Sopenharmony_ci#define cpu_has_cache_cdex_s 0 3062306a36Sopenharmony_ci#define cpu_has_prefetch 1 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci#define cpu_has_llsc 1 3362306a36Sopenharmony_ci/* 3462306a36Sopenharmony_ci * We Disable LL/SC on non SMP systems as it is faster to disable 3562306a36Sopenharmony_ci * interrupts for atomic access than a LL/SC. 3662306a36Sopenharmony_ci */ 3762306a36Sopenharmony_ci#ifdef CONFIG_SMP 3862306a36Sopenharmony_ci# define kernel_uses_llsc 1 3962306a36Sopenharmony_ci#else 4062306a36Sopenharmony_ci# define kernel_uses_llsc 0 4162306a36Sopenharmony_ci#endif 4262306a36Sopenharmony_ci#define cpu_has_vtag_icache 1 4362306a36Sopenharmony_ci#define cpu_has_dc_aliases 0 4462306a36Sopenharmony_ci#define cpu_has_ic_fills_f_dc 0 4562306a36Sopenharmony_ci#define cpu_has_64bits 1 4662306a36Sopenharmony_ci#define cpu_has_octeon_cache 1 4762306a36Sopenharmony_ci#define cpu_has_mips32r1 1 4862306a36Sopenharmony_ci#define cpu_has_mips32r2 1 4962306a36Sopenharmony_ci#define cpu_has_mips64r1 1 5062306a36Sopenharmony_ci#define cpu_has_mips64r2 1 5162306a36Sopenharmony_ci#define cpu_has_dsp 0 5262306a36Sopenharmony_ci#define cpu_has_dsp2 0 5362306a36Sopenharmony_ci#define cpu_has_mipsmt 0 5462306a36Sopenharmony_ci#define cpu_has_vint 0 5562306a36Sopenharmony_ci#define cpu_has_veic 0 5662306a36Sopenharmony_ci#define cpu_hwrena_impl_bits (MIPS_HWRENA_IMPL1 | MIPS_HWRENA_IMPL2) 5762306a36Sopenharmony_ci#define cpu_has_wsbh 1 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci#define cpu_has_rixi (cpu_data[0].cputype != CPU_CAVIUM_OCTEON) 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci#define PREFETCH_STRIDE 128 6262306a36Sopenharmony_ci 6362306a36Sopenharmony_ci#ifdef __OCTEON__ 6462306a36Sopenharmony_ci/* 6562306a36Sopenharmony_ci * All gcc versions that have OCTEON support define __OCTEON__ and have the 6662306a36Sopenharmony_ci * __builtin_popcount support. 6762306a36Sopenharmony_ci */ 6862306a36Sopenharmony_ci#define ARCH_HAS_USABLE_BUILTIN_POPCOUNT 1 6962306a36Sopenharmony_ci#endif 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci/* 7262306a36Sopenharmony_ci * The last 256MB are reserved for device to device mappings and the 7362306a36Sopenharmony_ci * BAR1 hole. 7462306a36Sopenharmony_ci */ 7562306a36Sopenharmony_ci#define MAX_DMA32_PFN (((1ULL << 32) - (1ULL << 28)) >> PAGE_SHIFT) 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci#endif 78