| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * Copyright (C) 2024 Andes Technology Corporation |
| */ |
| |
| #ifndef _RISCV_ANDES_H |
| #define _RISCV_ANDES_H |
| |
| /* Memory and Miscellaneous Registers */ |
| #define CSR_MCACHE_CTL 0x7ca |
| #define CSR_MCCTLCOMMAND 0x7cc |
| |
| /* Configuration Control & Status Registers */ |
| #define CSR_MICM_CFG 0xfc0 |
| #define CSR_MDCM_CFG 0xfc1 |
| #define CSR_MMSC_CFG 0xfc2 |
| |
| /* Machine Trap Related Registers */ |
| #define CSR_MSLIDELEG 0x7d5 |
| |
| /* Counter Related Registers */ |
| #define CSR_MCOUNTERWEN 0x7ce |
| #define CSR_MCOUNTERINTEN 0x7cf |
| #define CSR_MCOUNTERMASK_M 0x7d1 |
| #define CSR_MCOUNTERMASK_S 0x7d2 |
| #define CSR_MCOUNTERMASK_U 0x7d3 |
| #define CSR_MCOUNTEROVF 0x7d4 |
| |
| /* PMA Related Registers */ |
| #define CSR_PMACFG0 0xbc0 |
| #define CSR_PMAADDR0 0xbd0 |
| |
| #define MICM_CFG_ISZ_OFFSET 6 |
| #define MICM_CFG_ISZ_MASK (7 << MICM_CFG_ISZ_OFFSET) |
| |
| #define MDCM_CFG_DSZ_OFFSET 6 |
| #define MDCM_CFG_DSZ_MASK (7 << MDCM_CFG_DSZ_OFFSET) |
| |
| #define MMSC_CFG_CCTLCSR_OFFSET 16 |
| #define MMSC_CFG_CCTLCSR_MASK (1 << MMSC_CFG_CCTLCSR_OFFSET) |
| #define MMSC_CFG_PPMA_OFFSET 30 |
| #define MMSC_CFG_PPMA_MASK (1 << MMSC_CFG_PPMA_OFFSET) |
| #define MMSC_IOCP_OFFSET 47 |
| #define MMSC_IOCP_MASK (1ULL << MMSC_IOCP_OFFSET) |
| |
| #define MCACHE_CTL_CCTL_SUEN_OFFSET 8 |
| #define MCACHE_CTL_CCTL_SUEN_MASK (1 << MCACHE_CTL_CCTL_SUEN_OFFSET) |
| |
| /* Performance monitor */ |
| #define MMSC_CFG_PMNDS_MASK (1 << 15) |
| #define MIP_PMOVI (1 << 18) |
| |
| #ifndef __ASSEMBLER__ |
| |
| #define is_andes(series) \ |
| ({ \ |
| char value = csr_read(CSR_MARCHID) & 0xff; \ |
| (series) == (value >> 4) * 10 + (value & 0x0f); \ |
| }) |
| |
| #define has_andes_pmu() \ |
| ({ \ |
| (((csr_read(CSR_MMSC_CFG) & \ |
| MMSC_CFG_PMNDS_MASK) \ |
| && misa_extension('S')) ? true : false); \ |
| }) |
| |
| #endif /* __ASSEMBLER__ */ |
| |
| #endif /* _RISCV_ANDES_H */ |