# Copyright (c) 2021 Tokita, Hiroshi <tokita.hiroshi@gmail.com>
# SPDX-License-Identifier: Apache-2.0

if SOC_GD32VF103

config SOC
	default "gd32vf103"

config KERNEL_ENTRY
	default "__nuclei_start"

config SYS_CLOCK_HW_CYCLES_PER_SEC
	# This value should be the CPU frequency divided by 4.
	# The CPU frequency is set to the maximum value of 108MHz by default.
	default 27000000

config RISCV_MCAUSE_EXCEPTION_MASK
	default 0xFFF

config RISCV_SOC_INTERRUPT_INIT
	default y

config RISCV_GP
	default y

config NUM_IRQS
	default 87 if  NUCLEI_ECLIC
	default 16 if !NUCLEI_ECLIC

config 2ND_LEVEL_INTERRUPTS
	default y

config PINCTRL
	default y

config RESET
	default y

config CLOCK_CONTROL
	default y

config ARCH_IRQ_VECTOR_TABLE_ALIGN
	default 512 if NUCLEI_ECLIC

config RISCV_TRAP_HANDLER_ALIGNMENT
	default 64 if NUCLEI_ECLIC && !RISCV_VECTORED_MODE

endif # GD32VF103
