/*******************************************************************************
Copyright (C) Marvell International Ltd. and its affiliates

This software file (the "File") is owned and distributed by Marvell
International Ltd. and/or its affiliates ("Marvell") under the following
alternative licensing terms.  Once you have made an election to distribute the
File under one of the following license alternatives, please (i) delete this
introductory statement regarding license alternatives, (ii) delete the two
license alternatives that you have not elected to use and (iii) preserve the
Marvell copyright notice above.

********************************************************************************
Marvell Commercial License Option

If you received this File from Marvell and you have entered into a commercial
license agreement (a "Commercial License") with Marvell, the File is licensed
to you under the terms of the applicable Commercial License.

********************************************************************************
Marvell GPL License Option

If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File in accordance with the terms and conditions of the General
Public License Version 2, June 1991 (the "GPL License"), a copy of which is
available along with the File in the license.txt file or by writing to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
on the worldwide web at http://www.gnu.org/licenses/gpl.txt.

THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
DISCLAIMED.  The GPL License provides additional details about this warranty
disclaimer.
********************************************************************************
Marvell BSD License Option

If you received this File from Marvell, you may opt to use, redistribute and/or
modify this File under the following licensing terms.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    *   Redistributions of source code must retain the above copyright notice,
	    this list of conditions and the following disclaimer.

    *   Redistributions in binary form must reproduce the above copyright
	notice, this list of conditions and the following disclaimer in the
	documentation and/or other materials provided with the distribution.

    *   Neither the name of Marvell nor the names of its contributors may be
	used to endorse or promote products derived from this software without
	specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

*******************************************************************************/


#ifndef __INCmvCpuIfRegsh
#define __INCmvCpuIfRegsh

/****************************************/
/* ARM Control and Status Registers Map */
/****************************************/
#include "mvTypes.h"
#include "ctrlEnv/mvCtrlEnvSpec.h"
#include "ctrlEnv/mvCtrlEnvRegs.h"

#define MV_CPUIF_REGS_BASE(cpu)			(MV_CPUIF_REGS_OFFSET(cpu))
#define MV_MISC_REGS_BASE			(MV_MISC_REGS_OFFSET)
#define MV_CLK_CMPLX_REGS_BASE		(MV_CLK_CMPLX_REGS_OFFSET)
#define MV_L2C_REGS_BASE			(MV_AURORA_L2_REGS_OFFSET)
#define MV_CPUIF_SHARED_REGS_BASE		(MV_MBUS_REGS_OFFSET)
#define MV_COHERENCY_FABRIC_REGS_BASE		(MV_COHERENCY_FABRIC_OFFSET)

#define CPU_CONFIG_REG(cpu)			(MV_CPUIF_REGS_BASE(cpu))
#define CPU_CTRL_STAT_REG(cpu)			(MV_CPUIF_REGS_BASE(cpu) + 0x8)
#define CPU_RESUME_ADDR_REG(cpu)		(MV_CPUIF_SHARED_REGS_BASE + (0x2124) + (cpu)*0x100)
#define CPU_RESET_REG(cpu)			(MV_CPUIF_SHARED_REGS_BASE + (0x800+(cpu)*8))
#define CPU_RESUME_CTRL_REG			(MV_CPUIF_SHARED_REGS_BASE + (0x988))
#define CPU_RSTOUTN_MASK_REG			(MV_MISC_REGS_BASE + 0x60)
#define CPU_SYS_SOFT_RST_REG			(MV_MISC_REGS_BASE + 0x64)
#define CPU_L2_CTRL_REG				(MV_L2C_REGS_BASE + 0x100)
#define CPU_L2_AUX_CTRL_REG			(MV_L2C_REGS_BASE + 0x104)
#define CPU_L2_BLOCK_ALLOCATION_REG             (MV_L2C_REGS_BASE + 0x78c)
#define CPU_L2_DATA_LOCKDOWN_REG(cpu)           (MV_L2C_REGS_BASE + 0x900 + (cpu)*0x8)
#define CPU_L2_INSTRUCTION_LOCKDOWN_REG(cpu)    (MV_L2C_REGS_BASE + 0x904 + (cpu)*0x8)
#define CPU_IO_BRIDGE_LOCKDOWN_REG              (MV_L2C_REGS_BASE + 0x984)
#define SOC_CTRL_REG				(MV_MISC_REGS_BASE + 0x4)
#define LVDS_PADS_CTRL_REG			(MV_MISC_REGS_BASE + 0xF0)
#define SOC_COHERENCY_FABRIC_CTRL_REG		(MV_COHERENCY_FABRIC_REGS_BASE)
#define SOC_COHERENCY_FABRIC_CFG_REG		(MV_COHERENCY_FABRIC_REGS_BASE + 0x4)
#define SOC_CFU_CFG_REG                                (MV_COHERENCY_FABRIC_REGS_BASE + 0x28)
#define SOC_CIB_CTRL_CFG_REG			(MV_COHERENCY_FABRIC_REGS_BASE + 0x80)
#define CFU_CFG_REG				(MV_COHERENCY_FABRIC_REGS_BASE + 0x28)

#define Fabric_Units_Priority_Control_REG	(MV_MBUS_REGS_OFFSET + 0x424)
#define Fabric_Units_Prefetch_Control_REG	(MV_MBUS_REGS_OFFSET + 0x42c)
#define CPUs_Data_PFen (0xf << 8)
#define CPUs_Data_PFen_MASK (0xf << 8)
#define CPU_PRIO_HIGH  0x2
#define CPUs_PRIO_MASK 0xff
#define CPU0_PRIO_HIGH (CPU_PRIO_HIGH << 0)
#define CPU1_PRIO_HIGH (CPU_PRIO_HIGH << 2)
#define CPU2_PRIO_HIGH (CPU_PRIO_HIGH << 4)
#define CPU3_PRIO_HIGH (CPU_PRIO_HIGH << 6)
/*   SoC Control Register bits  */
#define PCIE0_QUADX1_EN				(1<<7)
#define PCIE1_QUADX1_EN				(1<<8)

/* ARM Configuration register */
/* CPU_CONFIG_REG (CCR) */

/* Reset vector location */
#define CCR_VEC_INIT_LOC_OFFS			1
#define CCR_VEC_INIT_LOC_MASK			(1 << CCR_VEC_INIT_LOC_OFFS)
/* reset at 0x00000000 */
#define CCR_VEC_INIT_LOC_0000			(0 << CCR_VEC_INIT_LOC_OFFS)
/* reset at 0xFFFF0000 */
#define CCR_VEC_INIT_LOC_FF00			(1 << CCR_VEC_INIT_LOC_OFFS)

#define CCR_ENDIAN_INIT_OFFS			3
#define CCR_ENDIAN_INIT_MASK			(1 << CCR_ENDIAN_INIT_OFFS)
#define CCR_ENDIAN_INIT_LITTLE			(0 << CCR_ENDIAN_INIT_OFFS)
#define CCR_ENDIAN_INIT_BIG			(1 << CCR_ENDIAN_INIT_OFFS)

#define CCR_ARM_ID_SEL_OFFS			4
#define CCR_CPU_ID_SEL_MASK			(1 << CCR_ARM_ID_SEL_OFFS)
#define CCR_CPU_ID_SEL_ARM			(0 << CCR_ARM_ID_SEL_OFFS)
#define CCR_CPU_ID_SEL_MRVL			(1 << CCR_ARM_ID_SEL_OFFS)

#define CCR_TE_INIT_OFFS			5
#define CCR_TE_INIT_MASK			(1 << CCR_NCB_BLOCKING_OFFS)
#define CCR_TE_INIT_ARM				(0 << CCR_NCB_BLOCKING_OFFS)
#define CCR_TE_INIT_THUMB			(1 << CCR_NCB_BLOCKING_OFFS)

#define CCR_NFMI_EN_OFFS			6
#define CCR_NFMI_EN_MASK			(1 << CCR_NFMI_EN_OFFS)
#define CCR_NFMI_EN_DIS				(0 << CCR_NFMI_EN_OFFS)
#define CCR_NFMI_EN_EN				(1 << CCR_NFMI_EN_OFFS)

#define CCR_CORE_MODE_OFFS			9
#define CCR_CORE_MODE_MASK			(3 << CCR_CORE_MODE_OFFS)
#define CCR_CORE_MODE_ARM1176			(0 << CCR_CORE_MODE_OFFS)
#define CCR_CORE_MODE_CORTEX_A8			(1 << CCR_CORE_MODE_OFFS)
#define CCR_CORE_MODE_ARM11_MPC			(2 << CCR_CORE_MODE_OFFS)

#define CCR_UBIT_INIT_OFFS			11
#define CCR_UBIT_INIT_MASK			(1 << CCR_UBIT_INIT_OFFS)
#define CCR_UBIT_INIT_DIS			(0 << CCR_UBIT_INIT_OFFS)
#define CCR_UBIT_INIT_EN			(1 << CCR_UBIT_INIT_OFFS)

#define CCR_PCLK_WFI_OFFS			15
#define CCR_PCLK_WFI_MASK			(1 << CCR_PCLK_WFI_OFFS)
#define CCR_PCLK_WFI_DIS			(0 << CCR_PCLK_WFI_OFFS)
#define CCR_PCLK_WFI_EN				(1 << CCR_PCLK_WFI_OFFS)

#define CCR_SHARED_L2_OFFS			16
#define CCR_SHARED_L2_MASK			(1 << CCR_SHARED_L2_OFFS)
#define CCR_SHARED_L2_DIS			(0 << CCR_SHARED_L2_OFFS)
#define CCR_SHARED_L2_EN			(1 << CCR_SHARED_L2_OFFS)

#define CCR_SP_IN_MP_OFFS			17
#define CCR_SP_IN_MP_MASK			(1 << CCR_SP_IN_MP_OFFS)
#define CCR_SP_IN_MP_DIS			(0 << CCR_SP_IN_MP_OFFS)
#define CCR_SP_IN_MP_EN				(1 << CCR_SP_IN_MP_OFFS)

#define CCR_SRAM_LOW_LEAK_OFFS			19
#define CCR_SRAM_LOW_LEAK_MASK			(1 << CCR_SRAM_LOW_LEAK_OFFS)
#define CCR_SRAM_LOW_LEAK_EN			(0 << CCR_SRAM_LOW_LEAK_OFFS)
#define CCR_SRAM_LOW_LEAK_DIS			(1 << CCR_SRAM_LOW_LEAK_OFFS)

#define CCR_CLUSTER_ID_OFFS			24
#define CCR_CLUSTER_ID_MASK			(0xF << CCR_SRAM_LOW_LEAK_OFFS)


/* ARM Control and Status register */
/* CPU_CTRL_STAT_REG (CCSR) */

#define CCSR_SMP_N_AMP_OFFS			0
#define CCSR_SMP_N_AMP_MASK			(1 << CCSR_SMP_N_AMP_OFFS)

#define CCSR_ENDIAN_STATUS_OFFS			15
#define CCSR_ENDIAN_STATUS_MASK			(1 << CCSR_ENDIAN_STATUS_OFFS)
#define CCSR_ENDIAN_STATUS_LITTLE		(0 << CCSR_ENDIAN_STATUS_OFFS)
#define CCSR_ENDIAN_STATUS_BIG			(1 << CCSR_ENDIAN_STATUS_OFFS)


/* RSTOUTn Mask Register */
/* CPU_RSTOUTN_MASK_REG (CRMR) */

#define CRMR_SOFT_RST_OUT_OFFS			0
#define CRMR_SOFT_RST_OUT_MASK			(1 << CRMR_SOFT_RST_OUT_OFFS)
#define CRMR_SOFT_RST_OUT_ENABLE		(1 << CRMR_SOFT_RST_OUT_OFFS)
#define CRMR_SOFT_RST_OUT_DISABLE		(0 << CRMR_SOFT_RST_OUT_OFFS)

#define CRMR_PEX_SYSRST_OUT_OFFS(bus)		(1 + ((bus) & 0x3))
#define CRMR_PEX_SYSRST_OUT_MASK(bus)		(1 << CRMR_PEX_SYSRST_OUT_OFFS(bus))
#define CRMR_PEX_SYSRST_OUT_ENABLE(bus)		(1 << CRMR_PEX_SYSRST_OUT_OFFS(bus))
#define CRMR_PEX_SYSRST_OUT_DISABLE(bus)	(0 << CRMR_PEX_SYSRST_OUT_OFFS(bus))

#define CRMR_PEX_TRST_OUT_OFFS(bus)		(5 + ((bus) & 0x3))
#define CRMR_PEX_TRST_OUT_MASK(bus)		(1 << CRMR_PEX_TRST_OUT_OFFS(bus))
#define CRMR_PEX_TRST_OUT_ENABLE(bus)		(1 << CRMR_PEX_TRST_OUT_OFFS(bus))
#define CRMR_PEX_TRST_OUT_DISABLE(bus)		(0 << CRMR_PEX_TRST_OUT_OFFS(bus))


/* System Software Reset Register */
/* CPU_SYS_SOFT_RST_REG (CSSRR) */

#define CSSRR_SYSTEM_SOFT_RST			BIT0


/* CPU_L2_CTRL_REG fields */

#define CL2CR_L2_EN_OFFS			0
#define CL2CR_L2_EN_MASK			(1 << CL2CR_L2_EN_OFFS)

/* CPU_L2_AUX_CTRL_REG fields */

#define CL2ACR_WB_WT_ATTR_OFFS			0
#define CL2ACR_WB_WT_ATTR_MASK			(3 << CL2ACR_WB_WT_ATTR_OFFS)
#define CL2ACR_WB_WT_ATTR_PAGE			(0 << CL2ACR_WB_WT_ATTR_OFFS)
#define CL2ACR_WB_WT_ATTR_WB			(1 << CL2ACR_WB_WT_ATTR_OFFS)
#define CL2ACR_WB_WT_ATTR_WT			(2 << CL2ACR_WB_WT_ATTR_OFFS)

#define CL2ACR_PFU_OFFS				2
#define CL2ACR_PFU_MASK				(1 << CL2ACR_PFU_OFFS)
#define CL2ACR_PFU_EN				(1 << CL2ACR_PFU_OFFS)
#define CL2ACR_PFU_DIS				(0 << CL2ACR_PFU_OFFS)

#define CL2ACR_L2_SIZE_OFFS			10
#define CL2ACR_L2_SIZE_MASK			(3 << CL2ACR_L2_SIZE_OFFS)
#define CL2ACR_L2_SIZE_KB(reg)			((((((reg) & 0x3) & CL2ACR_L2_SIZE_MASK) \
						>> CL2ACR_PFU_OFFS) + 1) * _512K)

#define CL2ACR_ASSOC_OFFS			13
#define CL2ACR_ASSOC_MASK			(0xF << CL2ACR_ASSOC_OFFS)

#define CL2ACR_L2_WAY_SZ_OFFS			17
#define CL2ACR_L2_WAY_SZ_MASK			(7 << CL2ACR_L2_WAY_SZ_OFFS)
#define CL2ACR_L2_WAY_SZ_KB(reg)		(_16K << (((((reg) & 0x7) & CL2ACR_L2_SIZE_MASK) \
						>> CL2ACR_L2_WAY_SZ_OFFS)))

#define CL2ACR_ECC_OFFS				20
#define CL2ACR_ECC_MASK				(1 << CL2ACR_ECC_OFFS)
#define CL2ACR_ECC_EN				(1 << CL2ACR_ECC_OFFS)
#define CL2ACR_ECC_DIS				(0 << CL2ACR_ECC_OFFS)

#define CL2ACR_PARITY_OFFS			21
#define CL2ACR_PARITY_MASK			(1 << CL2ACR_PARITY_OFFS)
#define CL2ACR_PARITY_EN			(1 << CL2ACR_PARITY_OFFS)
#define CL2ACR_PARITY_DIS			(0 << CL2ACR_PARITY_OFFS)

#define CL2ACR_INVAL_UCE_OFFS			22
#define CL2ACR_INVAL_UCE_MASK			(1 << CL2ACR_INVAL_UCE_OFFS)
#define CL2ACR_INVAL_UCE_EN			(1 << CL2ACR_INVAL_UCE_OFFS)
#define CL2ACR_INVAL_UCE_DIS			(0 << CL2ACR_INVAL_UCE_OFFS)

#define CL2ACR_FORCE_WA_OFFS			23
#define CL2ACR_FORCE_WA_MASK			(3 << CL2ACR_FORCE_WA_OFFS)
#define CL2ACR_FORCE_WA_DISABLE			(0 << CL2ACR_FORCE_WA_OFFS)
#define CL2ACR_FORCE_NO_WA			(1 << CL2ACR_FORCE_WA_OFFS)
#define CL2ACR_FORCE_WA				(2 << CL2ACR_FORCE_WA_OFFS)

#define CL2ACR_REP_STRGY_OFFS			27
#define CL2ACR_REP_STRGY_MASK			(3 << CL2ACR_REP_STRGY_OFFS)

#define CL2ACR_REP_STRGY_LFSR_MASK              (0x1 << CL2ACR_REP_STRGY_OFFS)
#define CL2ACR_REP_STRGY_semiPLRU_MASK		(0x2 << CL2ACR_REP_STRGY_OFFS)
#define CL2ACR_REP_STRGY_semiPLRU_WA_MASK          (0x3 << CL2ACR_REP_STRGY_OFFS)
#define CL2_DUAL_EVICTION		(0x1 << 4)
#define CL2_PARITY_ENABLE		(0x1 << 21)
#define CL2_InvalEvicLineUCErr          (0x1 << 22)

/* SOC_CTRL_REG fields */
#define SCR_PEX_ENA_OFFS(pex)			((pex) & 0x3)
#define SCR_PEX_ENA_MASK(pex)			(1 << pex)

#define SCR_PEX_4BY1_OFFS(pex)			((pex) + 7)
#define SCR_PEX_4BY1_MASK(pex)			(1 << SCR_PEX_4BY1_OFFS(pex))

#define SCR_PEX0_4BY1_OFFS			7
#define SCR_PEX0_4BY1_MASK			(1 << SCR_PEX0_4BY1_OFFS)

#define SCR_PEX1_4BY1_OFFS			8
#define SCR_PEX1_4BY1_MASK			(1 << SCR_PEX1_4BY1_OFFS)

#define PCIE1_CLK_OUT_EN_OFF                   5
#define PCIE1_CLK_OUT_EN_MASK                  (1 << PCIE1_CLK_OUT_EN_OFF)

#define PCIE0_CLK_OUT_EN_OFF                   4
#define PCIE0_CLK_OUT_EN_MASK                  (1 << PCIE0_CLK_OUT_EN_OFF)

/* LVDS_PADS_CTRL_REG fields */
#define LVDS_PADS_CONF_PD_OFFS(idx)		(16 + idx)
#define LVDS_PADS_CONF_PD_MASK(idx)		(1 << (16 + idx))
#define LVDS_PADS_CONF_PD_EN(idx, en)		((en ? 0 : 1) << LVDS_PADS_CONF_PD_OFFS(idx))


/*******************************************/
/* Main Interrupt Controller Registers Map */
/*******************************************/

#define CPU_MAIN_INT_CAUSE_REG(vec, cpu)	(MV_CPUIF_REGS_BASE(cpu) + 0x80 + (vec * 0x4))
#define CPU_MAIN_INT_TWSI_OFFS(i)			(2 + i)
#define CPU_MAIN_INT_CAUSE_TWSI(i)			(31 + i)

#define CPU_CF_LOCAL_MASK_REG(cpu)			(MV_CPUIF_REGS_BASE(cpu) + 0xc4)
#define CPU_CF_LOCAL_MASK_PMU_MASK_OFFS		18
#define CPU_INT_SOURCE_CONTROL_REG(i)		(MV_CPUIF_SHARED_REGS_BASE + 0xB00 + (i * 0x4))

#define CPU_INT_SOURCE_CONTROL_IRQ_OFFS		28
#define CPU_INT_SOURCE_CONTROL_IRQ_MASK		(1 << CPU_INT_SOURCE_CONTROL_IRQ_OFFS )

#define CPU_INT_SET_ENABLE_REG			(MV_CPUIF_SHARED_REGS_BASE + 0xA30)
#define CPU_INT_CLEAR_ENABLE_REG		(MV_CPUIF_SHARED_REGS_BASE + 0xA34)

#define CPU_INT_SET_MASK_OFFS			(0xB8)
#define CPU_INT_CLEAR_MASK_OFFS			(0xBC)

#define CPU_INT_SET_MASK_REG(cpu)		(MV_CPUIF_REGS_BASE(cpu) + CPU_INT_SET_MASK_OFFS)
#define CPU_INT_CLEAR_MASK_REG(cpu)		(MV_CPUIF_REGS_BASE(cpu) + CPU_INT_CLEAR_MASK_OFFS)

#define CPU_INT_SET_MASK_LOCAL_REG		(MV_CPUIF_LOCAL_REGS_OFFSET + CPU_INT_SET_MASK_OFFS)
#define CPU_INT_CLEAR_MASK_LOCAL_REG	(MV_CPUIF_LOCAL_REGS_OFFSET + CPU_INT_CLEAR_MASK_OFFS)

#define CPU_SNOOP_FILTER_CTRL_REG		(MV_CPUIF_LOCAL_REGS_OFFSET + 0x20)

#define MV_IRQ_NR							116


/*******************************************/
/* ARM Doorbell Registers Map		   */
/*******************************************/
#define CPU_SW_TRIG_IRQ						(MV_MBUS_REGS_OFFSET + 0xA04)
#define CPU_DOORBELL_IN_REG					(MV_CPUIF_LOCAL_REGS_OFFSET + 0x78)
#define CPU_DOORBELL_IN_MASK_REG			(MV_CPUIF_LOCAL_REGS_OFFSET + 0x7C)
#define CPU_HOST_TO_ARM_DRBL_REG(cpu)		(MV_CPUIF_REGS_BASE(cpu) + 0x78)
#define CPU_HOST_TO_ARM_MASK_REG(cpu)		(MV_CPUIF_REGS_BASE(cpu) + 0x7C)
#define CPU_ARM_TO_HOST_DRBL_REG(cpu)		(MV_CPUIF_REGS_BASE(cpu) + 0x70)
#define CPU_ARM_TO_HOST_MASK_REG(cpu)		(MV_CPUIF_REGS_BASE(cpu) + 0x74)

/*******************************************/
/* CLOCK Complex Registers Map - AXP only  */
/*******************************************/

#define CPU_DIV_CLK_CTRL0_REG			(MV_CLK_CMPLX_REGS_OFFSET)
#define CPU_DIV_CLK_CTRL0_RESET_MASK_OFFS	8
#define CPU_DIV_CLK_CTRL2_RATIO_FULL0_REG	(MV_CLK_CMPLX_REGS_OFFSET + 0x8)
#define CPU_DIV_CLK_CTRL2_NB_RATIO_OFFS		16
#define CPU_DIV_CLK_CTRL3_RATIO_FULL1_REG	(MV_CLK_CMPLX_REGS_OFFSET + 0xC)
#define CPU_DIV_CLK_CTRL3_CPU_RATIO_OFFS	8

/* CPU control register map */
/* Set bits means value is about to change according to new value */
#define CPU_CONFIG_DEFAULT_MASK         	(CCR_VEC_INIT_LOC_MASK)
#define CPU_CONFIG_DEFAULT                      (CCR_VEC_INIT_LOC_FF00)


#endif /* __INCmvCpuIfRegsh */
