/**CFile**************************************************************** FileName [mvcCube.c] PackageName [MVSIS 2.0: Multi-valued logic synthesis system.] Synopsis [Manipulating unate cubes.] Author [MVSIS Group] Affiliation [UC Berkeley] Date [Ver. 1.0. Started - February 1, 2003.] Revision [$Id: mvcCube.c,v 1.4 2003/04/03 06:31:49 alanmi Exp $] ***********************************************************************/ #include "mvc.h" ABC_NAMESPACE_IMPL_START //////////////////////////////////////////////////////////////////////// /// DECLARATIONS /// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// /// FUNCTION DEFINITIONS /// //////////////////////////////////////////////////////////////////////// /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Mvc_Cube_t * Mvc_CubeAlloc( Mvc_Cover_t * pCover ) { Mvc_Cube_t * pCube; assert( pCover->nWords >= 0 ); // allocate the cube #ifdef USE_SYSTEM_MEMORY_MANAGEMENT if ( pCover->nWords == 0 ) pCube = (Mvc_Cube_t *)ABC_ALLOC( char, sizeof(Mvc_Cube_t) ); else pCube = (Mvc_Cube_t *)ABC_ALLOC( char, sizeof(Mvc_Cube_t) + sizeof(Mvc_CubeWord_t) * (pCover->nWords - 1) ); #else switch( pCover->nWords ) { case 0: case 1: pCube = (Mvc_Cube_t *)Extra_MmFixedEntryFetch( pCover->pMem->pMan1 ); break; case 2: pCube = (Mvc_Cube_t *)Extra_MmFixedEntryFetch( pCover->pMem->pMan2 ); break; case 3: case 4: pCube = (Mvc_Cube_t *)Extra_MmFixedEntryFetch( pCover->pMem->pMan4 ); break; default: pCube = (Mvc_Cube_t *)ABC_ALLOC( char, sizeof(Mvc_Cube_t) + sizeof(Mvc_CubeWord_t) * (pCover->nWords - 1) ); break; } #endif // set the parameters charactering this cube if ( pCover->nWords == 0 ) pCube->iLast = pCover->nWords; else pCube->iLast = pCover->nWords - 1; pCube->nUnused = pCover->nUnused; return pCube; } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ Mvc_Cube_t * Mvc_CubeDup( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube ) { Mvc_Cube_t * pCubeCopy; pCubeCopy = Mvc_CubeAlloc( pCover ); Mvc_CubeBitCopy( pCubeCopy, pCube ); return pCubeCopy; } /**Function************************************************************* Synopsis [] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ void Mvc_CubeFree( Mvc_Cover_t * pCover, Mvc_Cube_t * pCube ) { if ( pCube == NULL ) return; // verify the parameters charactering this cube assert( pCube->iLast == 0 || ((int)pCube->iLast) == pCover->nWords - 1 ); assert( ((int)pCube->nUnused) == pCover->nUnused ); // deallocate the cube #ifdef USE_SYSTEM_MEMORY_MANAGEMENT ABC_FREE( pCube ); #else switch( pCover->nWords ) { case 0: case 1: Extra_MmFixedEntryRecycle( pCover->pMem->pMan1, (char *)pCube ); break; case 2: Extra_MmFixedEntryRecycle( pCover->pMem->pMan2, (char *)pCube ); break; case 3: case 4: Extra_MmFixedEntryRecycle( pCover->pMem->pMan4, (char *)pCube ); break; default: ABC_FREE( pCube ); break; } #endif } /**Function************************************************************* Synopsis [Removes the don't-care variable from the cube.] Description [] SideEffects [] SeeAlso [] ***********************************************************************/ void Mvc_CubeBitRemoveDcs( Mvc_Cube_t * pCube ) { unsigned Mask; int i; for ( i = Mvc_CubeReadLast(pCube); i >= 0; i-- ) { // detect those variables that are different (not DCs) Mask = (pCube->pData[i] ^ (pCube->pData[i] >> 1)) & BITS_DISJOINT; // create the mask of all that are different Mask |= (Mask << 1); // remove other bits from the set pCube->pData[i] &= Mask; } } //////////////////////////////////////////////////////////////////////// /// END OF FILE /// //////////////////////////////////////////////////////////////////////// ABC_NAMESPACE_IMPL_END 42 43 44 45 46 47 48 49 50 51 52
/* arch/arm/mach-exynos4/include/mach/regs-mct.h
 *
 * Copyright (c) 2011 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * EXYNOS4 MCT configutation
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
*/

#ifndef __ASM_ARCH_REGS_MCT_H
#define __ASM_ARCH_REGS_MCT_H __FILE__

#include <mach/map.h>

#define EXYNOS4_MCTREG(x)		(S5P_VA_SYSTIMER + (x))

#define EXYNOS4_MCT_G_CNT_L		EXYNOS4_MCTREG(0x100)
#define EXYNOS4_MCT_G_CNT_U		EXYNOS4_MCTREG(0x104)
#define EXYNOS4_MCT_G_CNT_WSTAT		EXYNOS4_MCTREG(0x110)

#define EXYNOS4_MCT_G_COMP0_L		EXYNOS4_MCTREG(0x200)
#define EXYNOS4_MCT_G_COMP0_U		EXYNOS4_MCTREG(0x204)
#define EXYNOS4_MCT_G_COMP0_ADD_INCR	EXYNOS4_MCTREG(0x208)

#define EXYNOS4_MCT_G_TCON		EXYNOS4_MCTREG(0x240)

#define EXYNOS4_MCT_G_INT_CSTAT		EXYNOS4_MCTREG(0x244)
#define EXYNOS4_MCT_G_INT_ENB		EXYNOS4_MCTREG(0x248)
#define EXYNOS4_MCT_G_WSTAT		EXYNOS4_MCTREG(0x24C)

#define EXYNOS4_MCT_L0_BASE		EXYNOS4_MCTREG(0x300)
#define EXYNOS4_MCT_L1_BASE		EXYNOS4_MCTREG(0x400)

#define MCT_L_TCNTB_OFFSET		(0x00)
#define MCT_L_ICNTB_OFFSET		(0x08)
#define MCT_L_TCON_OFFSET		(0x20)
#define MCT_L_INT_CSTAT_OFFSET		(0x30)
#define MCT_L_INT_ENB_OFFSET		(0x34)
#define MCT_L_WSTAT_OFFSET		(0x40)

#define MCT_G_TCON_START		(1 << 8)
#define MCT_G_TCON_COMP0_AUTO_INC	(1 << 1)
#define MCT_G_TCON_COMP0_ENABLE		(1 << 0)

#define MCT_L_TCON_INTERVAL_MODE	(1 << 2)
#define MCT_L_TCON_INT_START		(1 << 1)
#define MCT_L_TCON_TIMER_START		(1 << 0)

#endif /* __ASM_ARCH_REGS_MCT_H */