| /* |
| * Copyright (c) 2021 Andes Technology Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include "soc_v5.h" |
| |
| #include <zephyr/toolchain.h> |
| |
| /* exports */ |
| GTEXT(entry) |
| |
| SECTION_FUNC(init, entry) |
| /* Disable linker relaxation before GP register initialization. */ |
| .option push |
| .option norelax |
| |
| #ifdef CONFIG_SOC_ANDES_V5_EXECIT |
| /* Initialize EXECIT table */ |
| la t0, _ITB_BASE_ |
| csrw NDS_UITB, t0 |
| #endif |
| |
| #ifdef CONFIG_ICACHE |
| /* Enable I cache with HW prefetcher. */ |
| li t0, (1 << 9) | (1 << 0) |
| csrs NDS_MCACHE_CTL, t0 |
| #endif |
| |
| #ifdef CONFIG_DCACHE |
| /* |
| * Enable D cache with HW prefetcher, D-cache write-around |
| * (threshold: 4 cache lines), and CM (Coherence Manager). |
| */ |
| li t0, (0x3 << 13) |
| csrc NDS_MCACHE_CTL, t0 |
| li t0, (1 << 19) | (1 << 13) | (1 << 10) | (1 << 1) |
| csrs NDS_MCACHE_CTL, t0 |
| |
| /* Check if CPU support CM or not. */ |
| csrr t0, NDS_MCACHE_CTL |
| li t1, (1 << 19) |
| and t0, t0, t1 |
| beqz t0, cache_enable_finish |
| |
| /* If CPU support CM, check if CM is enabled. */ |
| li t1, (1 << 20) |
| check_cm_enabled: |
| csrr t0, NDS_MCACHE_CTL |
| and t0, t0, t1 |
| beqz t0, check_cm_enabled |
| |
| cache_enable_finish: |
| #endif |
| |
| /* Enable misaligned access and non-blocking load */ |
| li t0, (1 << 8) | (1 << 6) |
| csrs NDS_MMISC_CTL, t0 |
| |
| j __start |
| |
| .option pop |