From: Chao-ying Fu <icebergfu@gmail.com>
To: opensbi@lists.infradead.org
Subject: [PATCH v2 06/11] platform: generic: mips: add an entry function
Date: Tue, 25 Feb 2025 16:53:30 -0800 [thread overview]
Message-ID: <20250226005335.19498-6-cfu@mips.com> (raw)
In-Reply-To: <CAAhSdy2jObwq5SUymwVmwMhcQ_h0-4OJuhwitgcVN2gPq2B=XQ@mail.gmail.com>
All harts run the same entry function to initialize
MIPS custom CSR registers and CM registers.
---
platform/generic/mips/cps-vec.S | 202 ++++++++++++++++++++++++++++++++
1 file changed, 202 insertions(+)
create mode 100644 platform/generic/mips/cps-vec.S
diff --git a/platform/generic/mips/cps-vec.S b/platform/generic/mips/cps-vec.S
new file mode 100644
index 0000000..5049532
--- /dev/null
+++ b/platform/generic/mips/cps-vec.S
@@ -0,0 +1,202 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2025 MIPS
+ *
+ */
+
+#include <sbi/riscv_encoding.h>
+#include <mips/p8700.h>
+
+ .text
+ .align 12
+ .globl mips_cps_core_entry
+mips_cps_core_entry:
+ j 1f
+
+ .align 2
+nmi_vector:
+ j 1f
+
+ .align 2
+cacheerr_vector:
+ j 1f
+
+ .align 2
+debugexc_vector:
+ j 1f
+
+ .align 2
+1:
+ li x1, 0
+ li x2, 0
+ li x3, 0
+ li x4, 0
+ li x5, 0
+ li x6, 0
+ li x7, 0
+ li x8, 0
+ li x9, 0
+ li x10, 0
+ li x11, 0
+ li x12, 0
+ li x13, 0
+ li x14, 0
+ li x15, 0
+ li x16, 0
+ li x17, 0
+ li x18, 0
+ li x19, 0
+ li x20, 0
+ li x21, 0
+ li x22, 0
+ li x23, 0
+ li x24, 0
+ li x25, 0
+ li x26, 0
+ li x27, 0
+ li x28, 0
+ li x29, 0
+ li x30, 0
+ li x31, 0
+
+ /* a0 has mhartid */
+ csrr a0, CSR_MHARTID
+
+ /* Test mhartid lowest 4 bits */
+ andi t0, a0, 0xf
+ bnez t0, setup_pmp
+
+ /* Cluster cl Core co Hart 0 */
+ li s0, CM_BASE
+
+cm_relocate_done:
+ li t0, GCR_CORE_COH_EN_EN
+
+ /* Get core number to update CM_BASE */
+ srl t1, a0, MHARTID_CORE_SHIFT
+ andi t1, t1, MHARTID_CORE_MASK
+ sll t1, t1, CM_BASE_CORE_SHIFT
+ add s0, s0, t1
+ INDEXED(sd, t0, t1, GCR_OFF_LOCAL + GCR_CORE_COH_EN, s0)
+ fence
+
+setup_pmp:
+ li t0, DRAM_PMP_ADDR
+ csrw CSR_PMPADDR14, t0
+ li t0, 0x1fffffffffffffff # All from 0x0
+ csrw CSR_PMPADDR15, t0
+ li t0, ((PMP_A_NAPOT|PMP_R|PMP_W|PMP_X)<<56)|((PMP_A_NAPOT|PMP_R|PMP_W|PMP_X)<<48)
+ csrw CSR_PMPCFG2, t0
+ /* Set cacheable for pmp6, uncacheable for pmp7 */
+ li t0, (CCA_CACHE_DISABLE << 56)|(CCA_CACHE_ENABLE << 48)
+ csrw CSR_MIPSPMACFG2, t0
+ /* Reset pmpcfg0 */
+ csrw CSR_PMPCFG0, zero
+ /* Reset pmacfg0 */
+ csrw CSR_MIPSPMACFG0, zero
+ fence
+
+per_cluster:
+ li t0, 0xffff
+ and t0, t0, a0
+ bnez t0, per_core
+
+ /* L2 Prefetch */
+ li t0, 0xfffff110
+ sw t0, L2_PFT_CONTROL_OFFSET(s0)
+ li t0, 0x15ff
+ sw t0, L2_PFT_CONTROL_B_OFFSET(s0)
+
+per_core:
+ andi t0, a0, 0xf
+ bnez t0, per_hart
+
+ /* Enable Load Pair */
+ /* Enable Store Pair */
+ /* Enable HTW */
+ li t0, (1<<12)|(1<<13)|(1<<7)
+ csrc CSR_MIPSCONFIG7, t0
+
+ /* Disable noRFO */
+ li t0, (1<<25)
+ csrs CSR_MIPSCONFIG7, t0
+
+ /* Disable misaligned load/store to have misaligned address exceptions */
+ li t0, (1<<9)
+ csrs CSR_MIPSCONFIG7, t0
+
+ /* Enable L1-D$ Prefetch */
+ li t0, 0xff
+ csrw CSR_MIPSCONFIG11, t0
+
+ li t0, 4
+ csrs CSR_MIPSCONFIG8, t0
+ li t0, 8
+ csrs CSR_MIPSCONFIG9, t0
+ fence
+ fence.i
+
+ li t0, 0x104
+ csrs CSR_MIPSCONFIG8, t0
+ li t0, 8
+ csrs CSR_MIPSCONFIG9, t0
+ fence
+ fence.i
+
+ li t0, 0x204
+ csrs CSR_MIPSCONFIG8, t0
+ li t0, 8
+ csrs CSR_MIPSCONFIG9, t0
+ fence
+ fence.i
+
+ li t0, 0x304
+ csrs CSR_MIPSCONFIG8, t0
+ li t0, 8
+ csrs CSR_MIPSCONFIG9, t0
+ fence
+ fence.i
+
+ li t0, 0x404
+ csrs CSR_MIPSCONFIG8, t0
+ li t0, 8
+ csrs CSR_MIPSCONFIG9, t0
+ fence
+ fence.i
+
+ li t0, 0x504
+ csrs CSR_MIPSCONFIG8, t0
+ li t0, 8
+ csrs CSR_MIPSCONFIG9, t0
+ fence
+ fence.i
+
+ li t0, 0x604
+ csrs CSR_MIPSCONFIG8, t0
+ li t0, 8
+ csrs CSR_MIPSCONFIG9, t0
+ fence
+ fence.i
+
+ li t0, 0x704
+ csrs CSR_MIPSCONFIG8, t0
+ li t0, 8
+ csrs CSR_MIPSCONFIG9, t0
+ fence
+ fence.i
+
+per_hart:
+ /* Set up mipstvec */
+ lla t0, mipstvec_handler_stw
+ ori t0, t0, 1
+ csrw CSR_MIPSTVEC, t0
+
+ /* Let hart 0 jump to _start */
+ beqz a0, 1f
+ lla t0, _start_warm
+ jr t0
+1:
+ lla t0, _start
+ jr t0
+
--
2.47.1
next prev parent reply other threads:[~2025-02-26 0:53 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-17 22:34 [PATCH] platform: generic: mips: add P8700 Chao-ying Fu
2025-02-12 12:27 ` Anup Patel
2025-02-26 0:53 ` [PATCH v2 01/11] " Chao-ying Fu
2025-03-28 4:45 ` Anup Patel
2025-02-26 0:53 ` [PATCH v2 02/11] platform: generic: mips: add header files Chao-ying Fu
2025-03-28 4:47 ` Anup Patel
2025-02-26 0:53 ` [PATCH v2 03/11] platform: generic: mips: add mips-cm header file Chao-ying Fu
2025-03-28 4:48 ` Anup Patel
2025-02-26 0:53 ` [PATCH v2 04/11] platform: generic: mips: add custom exception handler Chao-ying Fu
2025-03-28 4:53 ` Anup Patel
2025-04-08 2:49 ` Chao-ying Fu
2025-02-26 0:53 ` [PATCH v2 05/11] platform: generic: mips: add extra scratch space Chao-ying Fu
2025-03-28 4:56 ` Anup Patel
2025-02-26 0:53 ` Chao-ying Fu [this message]
2025-03-28 5:00 ` [PATCH v2 06/11] platform: generic: mips: add an entry function Anup Patel
2025-02-26 0:53 ` [PATCH v2 07/11] platform: generic: mips: add the platform file Chao-ying Fu
2025-02-26 0:53 ` [PATCH v2 08/11] platform: generic: mips: add a dts file Chao-ying Fu
2025-02-26 0:53 ` [PATCH v2 09/11] platform: generic: mips: add objects.mk Chao-ying Fu
2025-02-26 0:53 ` [PATCH v2 10/11] Change to jump to mips_cps_core_entry Chao-ying Fu
2025-02-26 0:53 ` [PATCH v2 11/11] Initialize MIPS custom PMA registers Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 0/9] *** Add MIPS P8700 platform *** Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 1/9] platform: generic: mips: add P8700 Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 2/9] platform: generic: mips: add header files Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 3/9] platform: generic: mips: add an entry function Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 4/9] platform: generic: add nanscent_init to platform_override Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 5/9] platform: generic: mips: add the platform file Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 6/9] lib: Emulate amo instructions Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 7/9] platform: generic: mips: add a dts file Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 8/9] platform: generic: mips: add objects.mk Chao-ying Fu
2025-04-10 22:45 ` [PATCH v3 9/9] Initialize MIPS custom PMA registers Chao-ying Fu
2025-04-29 23:29 ` [PATCH v4 0/8] *** Add MIPS P8700 platform *** Chao-ying Fu
2025-05-19 12:16 ` Anup Patel
2025-05-19 18:33 ` Chao-ying Fu
2025-05-19 21:52 ` Chao-ying Fu
2025-04-29 23:29 ` [PATCH v4 1/8] platform: generic: mips: add P8700 Chao-ying Fu
2025-04-29 23:29 ` [PATCH v4 2/8] platform: generic: mips: add header files Chao-ying Fu
2025-04-29 23:29 ` [PATCH v4 3/8] platform: generic: mips: add an entry function Chao-ying Fu
2025-04-29 23:29 ` [PATCH v4 4/8] platform: generic: mips: add the platform file Chao-ying Fu
2025-04-29 23:29 ` [PATCH v4 5/8] lib: Emulate amo instructions Chao-ying Fu
2025-05-19 12:14 ` Anup Patel
2025-04-29 23:29 ` [PATCH v4 6/8] platform: generic: mips: add a dts file Chao-ying Fu
2025-04-29 23:29 ` [PATCH v4 7/8] platform: generic: mips: add objects.mk Chao-ying Fu
2025-04-29 23:29 ` [PATCH v4 8/8] Initialize MIPS custom PMA registers Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 00/10] *** Add MIPS P8700 Platform *** Chao-ying Fu
2025-05-20 5:18 ` Anup Patel
2025-05-19 21:58 ` [PATCH v5 01/10] platform: generic: mips: add P8700 Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 02/10] platform: generic: mips: add header files Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 03/10] platform: generic: mips: add an entry function Chao-ying Fu
2025-05-20 5:29 ` Anup Patel
2025-05-22 20:50 ` Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 04/10] platform: generic: mips: add the platform file Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 05/10] platform: generic: mips: add a dts file Chao-ying Fu
2025-05-20 5:31 ` Anup Patel
2025-05-22 20:52 ` Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 06/10] platform: generic: mips: add objects.mk Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 07/10] Initialize MIPS custom PMA registers Chao-ying Fu
2025-05-20 5:08 ` Anup Patel
2025-05-22 20:47 ` Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 08/10] devices to use MMIO memory Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 09/10] platform: generic: mips: add mmio to allmem in the dts file Chao-ying Fu
2025-05-19 21:58 ` [PATCH v5 10/10] Fix PMA init for MMIO regions Chao-ying Fu
2025-05-22 21:21 ` [MIPS P8700 v6 0/7] Add MIPS P8700 support to generic platform Chao-ying Fu
2025-06-14 16:18 ` Anup Patel
2025-05-22 21:21 ` [MIPS P8700 v6 1/7] platform: generic: mips: add P8700 Chao-ying Fu
2025-05-22 21:21 ` [MIPS P8700 v6 2/7] platform: generic: mips: add header files Chao-ying Fu
2025-05-22 21:21 ` [MIPS P8700 v6 3/7] platform: generic: mips: add the platform file Chao-ying Fu
2025-05-22 21:21 ` [MIPS P8700 v6 4/7] platform: generic: mips: add objects.mk Chao-ying Fu
2025-05-22 21:21 ` [MIPS P8700 v6 5/7] devices to use MMIO memory Chao-ying Fu
2025-05-22 21:21 ` [MIPS P8700 v6 6/7] Convey MMIO flag as specified by SBI_DOMAIN_MEMREGION_MMIO Chao-ying Fu
2025-05-22 21:21 ` [MIPS P8700 v6 7/7] lib: sbi_platform: Add the platform pma_set function to set up cacheability Chao-ying Fu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250226005335.19498-6-cfu@mips.com \
--to=icebergfu@gmail.com \
--cc=opensbi@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox