| .. | .. |
|---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
|---|
| 1 | 2 | /* |
|---|
| 2 | 3 | * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com) |
|---|
| 3 | | - * |
|---|
| 4 | | - * This program is free software; you can redistribute it and/or modify |
|---|
| 5 | | - * it under the terms of the GNU General Public License version 2 as |
|---|
| 6 | | - * published by the Free Software Foundation. |
|---|
| 7 | 4 | */ |
|---|
| 8 | 5 | |
|---|
| 9 | 6 | #ifndef _ASM_ARC_ARCREGS_H |
|---|
| .. | .. |
|---|
| 42 | 39 | #define ARC_REG_CLUSTER_BCR 0xcf |
|---|
| 43 | 40 | #define ARC_REG_AUX_ICCM 0x208 /* ICCM Base Addr (ARCv2) */ |
|---|
| 44 | 41 | #define ARC_REG_LPB_CTRL 0x488 /* ARCv2 Loop Buffer control */ |
|---|
| 42 | +#define ARC_REG_FPU_CTRL 0x300 |
|---|
| 43 | +#define ARC_REG_FPU_STATUS 0x301 |
|---|
| 45 | 44 | |
|---|
| 46 | 45 | /* Common for ARCompact and ARCv2 status register */ |
|---|
| 47 | 46 | #define ARC_REG_STATUS32 0x0A |
|---|
| .. | .. |
|---|
| 82 | 81 | #define ECR_V_DTLB_MISS 0x05 |
|---|
| 83 | 82 | #define ECR_V_PROTV 0x06 |
|---|
| 84 | 83 | #define ECR_V_TRAP 0x09 |
|---|
| 84 | +#define ECR_V_MISALIGN 0x0d |
|---|
| 85 | 85 | #endif |
|---|
| 86 | 86 | |
|---|
| 87 | 87 | /* DTLB Miss and Protection Violation Cause Codes */ |
|---|
| .. | .. |
|---|
| 117 | 117 | #define ARC_AUX_DPFP_2L 0x303 |
|---|
| 118 | 118 | #define ARC_AUX_DPFP_2H 0x304 |
|---|
| 119 | 119 | #define ARC_AUX_DPFP_STAT 0x305 |
|---|
| 120 | + |
|---|
| 121 | +/* |
|---|
| 122 | + * DSP-related registers |
|---|
| 123 | + * Registers names must correspond to dsp_callee_regs structure fields names |
|---|
| 124 | + * for automatic offset calculation in DSP_AUX_SAVE_RESTORE macros. |
|---|
| 125 | + */ |
|---|
| 126 | +#define ARC_AUX_DSP_BUILD 0x7A |
|---|
| 127 | +#define ARC_AUX_ACC0_LO 0x580 |
|---|
| 128 | +#define ARC_AUX_ACC0_GLO 0x581 |
|---|
| 129 | +#define ARC_AUX_ACC0_HI 0x582 |
|---|
| 130 | +#define ARC_AUX_ACC0_GHI 0x583 |
|---|
| 131 | +#define ARC_AUX_DSP_BFLY0 0x598 |
|---|
| 132 | +#define ARC_AUX_DSP_CTRL 0x59F |
|---|
| 133 | +#define ARC_AUX_DSP_FFT_CTRL 0x59E |
|---|
| 134 | + |
|---|
| 135 | +#define ARC_AUX_AGU_BUILD 0xCC |
|---|
| 136 | +#define ARC_AUX_AGU_AP0 0x5C0 |
|---|
| 137 | +#define ARC_AUX_AGU_AP1 0x5C1 |
|---|
| 138 | +#define ARC_AUX_AGU_AP2 0x5C2 |
|---|
| 139 | +#define ARC_AUX_AGU_AP3 0x5C3 |
|---|
| 140 | +#define ARC_AUX_AGU_OS0 0x5D0 |
|---|
| 141 | +#define ARC_AUX_AGU_OS1 0x5D1 |
|---|
| 142 | +#define ARC_AUX_AGU_MOD0 0x5E0 |
|---|
| 143 | +#define ARC_AUX_AGU_MOD1 0x5E1 |
|---|
| 144 | +#define ARC_AUX_AGU_MOD2 0x5E2 |
|---|
| 145 | +#define ARC_AUX_AGU_MOD3 0x5E3 |
|---|
| 120 | 146 | |
|---|
| 121 | 147 | #ifndef __ASSEMBLY__ |
|---|
| 122 | 148 | |
|---|
| .. | .. |
|---|
| 167 | 193 | #endif |
|---|
| 168 | 194 | }; |
|---|
| 169 | 195 | |
|---|
| 170 | | -struct bcr_extn_xymem { |
|---|
| 171 | | -#ifdef CONFIG_CPU_BIG_ENDIAN |
|---|
| 172 | | - unsigned int ram_org:2, num_banks:4, bank_sz:4, ver:8; |
|---|
| 173 | | -#else |
|---|
| 174 | | - unsigned int ver:8, bank_sz:4, num_banks:4, ram_org:2; |
|---|
| 175 | | -#endif |
|---|
| 176 | | -}; |
|---|
| 177 | | - |
|---|
| 178 | 196 | struct bcr_iccm_arcompact { |
|---|
| 179 | 197 | #ifdef CONFIG_CPU_BIG_ENDIAN |
|---|
| 180 | 198 | unsigned int base:16, pad:5, sz:3, ver:8; |
|---|
| .. | .. |
|---|
| 221 | 239 | unsigned int pad2:15, dp:1, pad1:7, sp:1, ver:8; |
|---|
| 222 | 240 | #else |
|---|
| 223 | 241 | unsigned int ver:8, sp:1, pad1:7, dp:1, pad2:15; |
|---|
| 242 | +#endif |
|---|
| 243 | +}; |
|---|
| 244 | + |
|---|
| 245 | +struct bcr_actionpoint { |
|---|
| 246 | +#ifdef CONFIG_CPU_BIG_ENDIAN |
|---|
| 247 | + unsigned int pad:21, min:1, num:2, ver:8; |
|---|
| 248 | +#else |
|---|
| 249 | + unsigned int ver:8, num:2, min:1, pad:21; |
|---|
| 224 | 250 | #endif |
|---|
| 225 | 251 | }; |
|---|
| 226 | 252 | |
|---|
| .. | .. |
|---|
| 291 | 317 | }; |
|---|
| 292 | 318 | |
|---|
| 293 | 319 | struct cpuinfo_arc_bpu { |
|---|
| 294 | | - unsigned int ver, full, num_cache, num_pred; |
|---|
| 320 | + unsigned int ver, full, num_cache, num_pred, ret_stk; |
|---|
| 295 | 321 | }; |
|---|
| 296 | 322 | |
|---|
| 297 | 323 | struct cpuinfo_arc_ccm { |
|---|
| .. | .. |
|---|
| 304 | 330 | struct cpuinfo_arc_bpu bpu; |
|---|
| 305 | 331 | struct bcr_identity core; |
|---|
| 306 | 332 | struct bcr_isa_arcv2 isa; |
|---|
| 307 | | - const char *details, *name; |
|---|
| 333 | + const char *release, *name; |
|---|
| 308 | 334 | unsigned int vec_base; |
|---|
| 309 | 335 | struct cpuinfo_arc_ccm iccm, dccm; |
|---|
| 310 | 336 | struct { |
|---|
| 311 | 337 | unsigned int swap:1, norm:1, minmax:1, barrel:1, crc:1, swape:1, pad1:2, |
|---|
| 312 | 338 | fpu_sp:1, fpu_dp:1, dual:1, dual_enb:1, pad2:4, |
|---|
| 313 | | - debug:1, ap:1, smart:1, rtt:1, pad3:4, |
|---|
| 339 | + ap_num:4, ap_full:1, smart:1, rtt:1, pad3:1, |
|---|
| 314 | 340 | timer0:1, timer1:1, rtc:1, gfrc:1, pad4:4; |
|---|
| 315 | 341 | } extn; |
|---|
| 316 | 342 | struct bcr_mpy extn_mpy; |
|---|
| 317 | | - struct bcr_extn_xymem extn_xymem; |
|---|
| 318 | 343 | }; |
|---|
| 319 | 344 | |
|---|
| 320 | 345 | extern struct cpuinfo_arc cpuinfo_arc700[]; |
|---|