All of lore.kernel.org
 help / color / mirror / Atom feed
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



  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.