Fan YANG e03342ff6b [bsp][hpmicro] add HPM5300EVK,HPM5301EVKLITE and HPM6800EVK support & update hpm_sdk
- added new boards: hpm5300evk, hpm5301evklite and hpm6800evk
- upgaded hpm_sdk
- driver updates and bugfixes
- add hpmicro BSPs to CI

Signed-off-by: Fan YANG <fan.yang@hpmicro.com>
2024-06-03 18:05:20 +08:00

46 lines
1.1 KiB
C

/*
* Copyright (c) 2021 HPMicro
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#include "hpm_common.h"
#include "hpm_soc.h"
#include "hpm_l1c_drv.h"
#ifndef CONFIG_DISABLE_GLOBAL_IRQ_ON_STARTUP
#define CONFIG_DISABLE_GLOBAL_IRQ_ON_STARTUP 0
#endif
void enable_plic_feature(void)
{
uint32_t plic_feature = 0;
#ifndef USE_NONVECTOR_MODE
/* enabled vector mode and preemptive priority interrupt */
plic_feature |= HPM_PLIC_FEATURE_VECTORED_MODE;
#endif
#if !defined(DISABLE_IRQ_PREEMPTIVE) || (DISABLE_IRQ_PREEMPTIVE == 0)
/* enabled preemptive priority interrupt */
plic_feature |= HPM_PLIC_FEATURE_PREEMPTIVE_PRIORITY_IRQ;
#endif
__plic_set_feature(HPM_PLIC_BASE, plic_feature);
}
__attribute__((weak)) void system_init(void)
{
disable_global_irq(CSR_MSTATUS_MIE_MASK);
disable_irq_from_intc();
enable_plic_feature();
enable_irq_from_intc();
#if !CONFIG_DISABLE_GLOBAL_IRQ_ON_STARTUP
enable_global_irq(CSR_MSTATUS_MIE_MASK);
#endif
#ifndef CONFIG_NOT_ENALBE_ACCESS_TO_CYCLE_CSR
uint32_t mcounteren = read_csr(CSR_MCOUNTEREN);
write_csr(CSR_MCOUNTEREN, mcounteren | 1); /* Enable MCYCLE */
#endif
}