/* DO NOT EDIT THIS FILE
 * Automatically generated by generate-cdef-headers.xsl
 * DO NOT EDIT THIS FILE
 */

#ifndef __BFIN_CDEF_ADSP_EDN_core__
#define __BFIN_CDEF_ADSP_EDN_core__

#define pWPIACTL                       ((uint32_t volatile *)WPIACTL)
#define bfin_read_WPIACTL()            bfin_read32(WPIACTL)
#define bfin_write_WPIACTL(val)        bfin_write32(WPIACTL, val)
#define pWPIA0                         ((void * volatile *)WPIA0)
#define bfin_read_WPIA0()              bfin_readPTR(WPIA0)
#define bfin_write_WPIA0(val)          bfin_writePTR(WPIA0, val)
#define pWPIA1                         ((void * volatile *)WPIA1)
#define bfin_read_WPIA1()              bfin_readPTR(WPIA1)
#define bfin_write_WPIA1(val)          bfin_writePTR(WPIA1, val)
#define pWPIA2                         ((void * volatile *)WPIA2)
#define bfin_read_WPIA2()              bfin_readPTR(WPIA2)
#define bfin_write_WPIA2(val)          bfin_writePTR(WPIA2, val)
#define pWPIA3                         ((void * volatile *)WPIA3)
#define bfin_read_WPIA3()              bfin_readPTR(WPIA3)
#define bfin_write_WPIA3(val)          bfin_writePTR(WPIA3, val)
#define pWPIA4                         ((void * volatile *)WPIA4)
#define bfin_read_WPIA4()              bfin_readPTR(WPIA4)
#define bfin_write_WPIA4(val)          bfin_writePTR(WPIA4, val)
#define pWPIA5                         ((void * volatile *)WPIA5)
#define bfin_read_WPIA5()              bfin_readPTR(WPIA5)
#define bfin_write_WPIA5(val)          bfin_writePTR(WPIA5, val)
#define pWPIACNT0                      ((uint32_t volatile *)WPIACNT0)
#define bfin_read_WPIACNT0()           bfin_read32(WPIACNT0)
#define bfin_write_WPIACNT0(val)       bfin_write32(WPIACNT0, val)
#define pWPIACNT1                      ((uint32_t volatile *)WPIACNT1)
#define bfin_read_WPIACNT1()           bfin_read32(WPIACNT1)
#define bfin_write_WPIACNT1(val)       bfin_write32(WPIACNT1, val)
#define pWPIACNT2                      ((uint32_t volatile *)WPIACNT2)
#define bfin_read_WPIACNT2()           bfin_read32(WPIACNT2)
#define bfin_write_WPIACNT2(val)       bfin_write32(WPIACNT2, val)
#define pWPIACNT3                      ((uint32_t volatile *)WPIACNT3)
#define bfin_read_WPIACNT3()           bfin_read32(WPIACNT3)
#define bfin_write_WPIACNT3(val)       bfin_write32(WPIACNT3, val)
#define pWPIACNT4                      ((uint32_t volatile *)WPIACNT4)
#define bfin_read_WPIACNT4()           bfin_read32(WPIACNT4)
#define bfin_write_WPIACNT4(val)       bfin_write32(WPIACNT4, val)
#define pWPIACNT5                      ((uint32_t volatile *)WPIACNT5)
#define bfin_read_WPIACNT5()           bfin_read32(WPIACNT5)
#define bfin_write_WPIACNT5(val)       bfin_write32(WPIACNT5, val)
#define pWPDACTL                       ((uint32_t volatile *)WPDACTL)
#define bfin_read_WPDACTL()            bfin_read32(WPDACTL)
#define bfin_write_WPDACTL(val)        bfin_write32(WPDACTL, val)
#define pWPDA0                         ((void * volatile *)WPDA0)
#define bfin_read_WPDA0()              bfin_readPTR(WPDA0)
#define bfin_write_WPDA0(val)          bfin_writePTR(WPDA0, val)
#define pWPDA1                         ((void * volatile *)WPDA1)
#define bfin_read_WPDA1()              bfin_readPTR(WPDA1)
#define bfin_write_WPDA1(val)          bfin_writePTR(WPDA1, val)
#define pWPDACNT0                      ((uint32_t volatile *)WPDACNT0)
#define bfin_read_WPDACNT0()           bfin_read32(WPDACNT0)
#define bfin_write_WPDACNT0(val)       bfin_write32(WPDACNT0, val)
#define pWPDACNT1                      ((uint32_t volatile *)WPDACNT1)
#define bfin_read_WPDACNT1()           bfin_read32(WPDACNT1)
#define bfin_write_WPDACNT1(val)       bfin_write32(WPDACNT1, val)
#define pWPSTAT                        ((uint32_t volatile *)WPSTAT)
#define bfin_read_WPSTAT()             bfin_read32(WPSTAT)
#define bfin_write_WPSTAT(val)         bfin_write32(WPSTAT, val)
#define pDSPID                         ((uint32_t volatile *)DSPID)
#define bfin_read_DSPID()              bfin_read32(DSPID)
#define bfin_write_DSPID(val)          bfin_write32(DSPID, val)
#define pDBGSTAT                       ((uint32_t volatile *)DBGSTAT)
#define bfin_read_DBGSTAT()            bfin_read32(DBGSTAT)
#define bfin_write_DBGSTAT(val)        bfin_write32(DBGSTAT, val)

#endif /* __BFIN_CDEF_ADSP_EDN_core__ */
