# Copyright (c) 2014 Wind River Systems, Inc.
# Copyright (c) 2018 Synopsys, Inc. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

if SOC_EMSK_EM7D

config CPU_EM4_DMIPS
	default y

config NUM_IRQ_PRIO_LEVELS
	# This processor supports 4 priority levels:
	# 0 for Fast Interrupts (FIRQs) and 1-3 for Regular Interrupts (IRQs).
	default 4

config NUM_IRQS
	# must be > the highest interrupt number used
	default 38 if "$(BOARD_REVISION)" = "2.3"
	default 36 if "$(BOARD_REVISION)" = "2.2"

config ARC_MPU_VER
	default 4 if "$(BOARD_REVISION)" = "2.3"
	default 2 if "$(BOARD_REVISION)" = "2.2"

config RGF_NUM_BANKS
	default 1

config SYS_CLOCK_HW_CYCLES_PER_SEC
	default 25000000 if "$(BOARD_REVISION)" = "2.3"
	default 30000000 if "$(BOARD_REVISION)" = "2.2"

config HARVARD
	default y

config ARC_FIRQ
	default n if "$(BOARD_REVISION)" = "2.3"
	default y if "$(BOARD_REVISION)" = "2.2"

config CACHE_MANAGEMENT
	default y

if (ARC_MPU_VER = 2)

config MAIN_STACK_SIZE
	default 2048

config IDLE_STACK_SIZE
	default 2048

config ZTEST_STACK_SIZE
	default 2048
	depends on ZTEST

endif # ARC_MPU_VER

endif # SOC_EMSK_EM7D
