# Copyright (c) 2021 Henrik Brix Andersen <henrik@brixandersen.dk>
# SPDX-License-Identifier: Apache-2.0

config SOC_NEORV32
	select RISCV
	select RISCV_ISA_RV32I
	select RISCV_ISA_EXT_M
	select RISCV_ISA_EXT_A
	select RISCV_ISA_EXT_ZICSR
	select RISCV_ISA_EXT_ZIFENCEI
	select RISCV_PRIVILEGED
	imply XIP

if SOC_NEORV32

config SOC_NEORV32_V1_8_6
	bool "v1.8.6"
	# NEORV32 RISC-V ISA A extension implements only LR/SC, not AMO
	select ATOMIC_OPERATIONS_C

config SOC_NEORV32_VERSION
	hex
	default 0x01080600 if SOC_NEORV32_V1_8_6
	help
	  The targeted NEORV32 version as BCD-coded number. The format is
	  identical to that of the NEORV32 Machine implementation ID (mimpid)
	  register.

config SOC_NEORV32_ISA_C
	bool "RISC-V ISA Extension \"C\""
	select RISCV_ISA_EXT_C
	help
	  Enable this if the NEORV32 CPU implementation supports the RISC-V ISA
	  "C" extension (Compressed Instructions).

endif # SOC_NEORV32
