/**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 */