/*****************************************************\ * Copyright 2003, Texas Instruments Incorporated. * * All rights reserved. * * Restricted rights to use, duplicate or disclose * * this code are granted through contract. * \*****************************************************/ /* @(#) PSP/CSL 3.00.01.00[5905PG1_0] (2003-11-12) */ /* Register layer central -- contains field-manipulation macro definitions */ #ifndef _CSLR_H_ #define _CSLR_H_ /* the "expression" macros */ /* the Field MaKe macro */ #define CSL_FMK(PER_REG_FIELD, val) \ (((val) << CSL_##PER_REG_FIELD##_SHIFT) & CSL_##PER_REG_FIELD##_MASK) /* the Field EXTract macro */ #define CSL_FEXT(reg, PER_REG_FIELD) \ (((reg) & CSL_##PER_REG_FIELD##_MASK) >> CSL_##PER_REG_FIELD##_SHIFT) /* the Field INSert macro */ #define CSL_FINS(reg, PER_REG_FIELD, val) \ ((reg) = ((reg) & ~CSL_##PER_REG_FIELD##_MASK) \ | CSL_FMK(PER_REG_FIELD, val)) /* the "token" macros */ /* the Field MaKe (Token) macro */ #define CSL_FMKT(PER_REG_FIELD, TOKEN) \ CSL_FMK(PER_REG_FIELD, CSL_##PER_REG_FIELD##_##TOKEN) /* the Field INSert (Token) macro */ #define CSL_FINST(reg, PER_REG_FIELD, TOKEN) \ CSL_FINS((reg), PER_REG_FIELD, CSL_##PER_REG_FIELD##_##TOKEN) /* the "raw" macros */ /* the Field MaKe (Raw) macro */ #define CSL_FMKR(msb, lsb, val) \ (((val) & ((1 << ((msb) - (lsb) + 1)) - 1)) << (lsb)) /* the Field EXTract (Raw) macro */ #define CSL_FEXTR(reg, msb, lsb) \ (((reg) >> (lsb)) & ((1 << ((msb) - (lsb) + 1)) - 1)) /* the Field INSert (Raw) macro */ #define CSL_FINSR(reg, msb, lsb, val) \ ((reg) = ((reg) &~ (((1 << ((msb) - (lsb) + 1)) - 1) << (lsb))) \ | CSL_FMKR(msb, lsb, val)) /* the Field SET (Raw) macro */ #define CSL_FSET(reg, msb, lsb, val) \ ((reg) = CSL_FMKR(msb, lsb, val)) #endif /* _CSLR_H_ */