18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2011 Tobias Klauser <tklauser@distanz.ch> 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#ifndef _ASM_NIOS2_CPUINFO_H 78c2ecf20Sopenharmony_ci#define _ASM_NIOS2_CPUINFO_H 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <linux/types.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistruct cpuinfo { 128c2ecf20Sopenharmony_ci /* Core CPU configuration */ 138c2ecf20Sopenharmony_ci char cpu_impl[12]; 148c2ecf20Sopenharmony_ci u32 cpu_clock_freq; 158c2ecf20Sopenharmony_ci bool mmu; 168c2ecf20Sopenharmony_ci bool has_div; 178c2ecf20Sopenharmony_ci bool has_mul; 188c2ecf20Sopenharmony_ci bool has_mulx; 198c2ecf20Sopenharmony_ci bool has_bmx; 208c2ecf20Sopenharmony_ci bool has_cdx; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ci /* CPU caches */ 238c2ecf20Sopenharmony_ci u32 icache_line_size; 248c2ecf20Sopenharmony_ci u32 icache_size; 258c2ecf20Sopenharmony_ci u32 dcache_line_size; 268c2ecf20Sopenharmony_ci u32 dcache_size; 278c2ecf20Sopenharmony_ci 288c2ecf20Sopenharmony_ci /* TLB */ 298c2ecf20Sopenharmony_ci u32 tlb_pid_num_bits; /* number of bits used for the PID in TLBMISC */ 308c2ecf20Sopenharmony_ci u32 tlb_num_ways; 318c2ecf20Sopenharmony_ci u32 tlb_num_ways_log2; 328c2ecf20Sopenharmony_ci u32 tlb_num_entries; 338c2ecf20Sopenharmony_ci u32 tlb_num_lines; 348c2ecf20Sopenharmony_ci u32 tlb_ptr_sz; 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci /* Addresses */ 378c2ecf20Sopenharmony_ci u32 reset_addr; 388c2ecf20Sopenharmony_ci u32 exception_addr; 398c2ecf20Sopenharmony_ci u32 fast_tlb_miss_exc_addr; 408c2ecf20Sopenharmony_ci}; 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciextern struct cpuinfo cpuinfo; 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_ciextern void setup_cpuinfo(void); 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci#endif /* _ASM_NIOS2_CPUINFO_H */ 47