/******************************************************************/ /* regs.h V0.00 */ /* Copyright (c) Texas Instruments , Incorporated 1997 */ /******************************************************************/ /******************************************************************/ /* DEFINE ALL PERIPHERAL MEMORY MAPPED REGISTER ADRESSES */ /******************************************************************/ /******************************************************************/ /* Check to see if mmregs.h has been previously included by */ /* another header, if so, skip this and go on */ /******************************************************************/ #if !defined(__MMREGS) #include /******************************************************************/ /* Target specific data and macros */ /* */ /* MASK_TARGET_WORD - bit pattern to mask all bits in a target */ /* word */ /* WORD_SIZE - size in bits of target word */ /* BASE_ADDR - base address of memory-mapped peripheral */ /* control registers */ /******************************************************************/ #define MASK_TARGET_WORD 0xffff #define TARGET_WRD_SZ CHAR_BIT #define BYTES_PER_WORD TARGET_WRD_SZ/8 #define WORD_SIZE (CHAR_BIT * sizeof(unsigned int)) #define SP_ADDR(port) (0x22 + (0x10 * port)) #define DRR_ADDR(port) (0x20 + (0x10 * port)) #define DXR_ADDR(port) (0x21 + (0x10 * port)) #define BSP_ADDR(port) (0x22 + (0x20 * port)) #define BDRR_ADDR(port) (0x20 + (0x20 * port)) #define BDXR_ADDR(port) (0x21 + (0x20 * port)) #define BSPCE_ADDR(port) (0x23 + (0x20 * port)) #define AXR_ADDR(port) (0x38 + (0x04 * port)) #define ARR_ADDR(port) (0x3a + (0x04 * port)) #define TDM_ADDR TSPC #define TIMER_ADDR TCR_ADDR #define BASE_VEC_ADR 0x0 #define RESET_VEC 0x0 #define NMI_VEC 4 #define SINT17_VEC 8 #define SINT18_VEC 12 #define SINT19_VEC 16 #define SINT20_VEC 20 #define SINT21_VEC 24 #define SINT22_VEC 28 #define SINT23_VEC 32 #define SINT24_VEC 36 #define SINT25_VEC 40 #define SINT26_VEC 44 #define SINT27_VEC 48 #define SINT28_VEC 52 #define SINT29_VEC 56 #define SINT30_VEC 60 #define INT0_VEC 64 #define INT1_VEC 68 #define INT2_VEC 72 #define TINT_VEC 76 #define RINT0_VEC 80 #define BRINT0_VEC 84 #define XINT0_VEC 88 #define BXINT0_VEC 92 #define RINT1_VEC 96 #define TRINT_VEC 100 #define XINT1_VEC 104 #define TXINT_VEC 108 #define INT3_VEC 112 #define HPI_VEC 116 #define BRINT1_VEC 120 #define BXINT1_VEC 124 /*----------------------------------------------------------------------------*/ /* MACRO FUNCTIONS */ /*----------------------------------------------------------------------------*/ #define CONTENTS_OF(addr) \ (*((volatile unsigned int *)(addr))) #define LENGTH_TO_BITS(length) \ (~(0xffffffff << (length))) /* MACROS to SET, CLEAR and RETURN bits and bitfields in Memory Mapped */ /* locations using the address of the specified register. */ #define REG_READ(addr) \ (CONTENTS_OF(addr)) #define REG_WRITE(addr,val) \ (CONTENTS_OF(addr) = (val)) #define MASK_BIT(bit) \ (1 << (bit)) #define RESET_BIT(addr,bit) \ (CONTENTS_OF(addr) &= (~MASK_BIT(bit))) #define GET_BIT(addr,bit) \ (CONTENTS_OF(addr) & (MASK_BIT(bit)) ? 1 : 0) #define SET_BIT(addr,bit) \ (CONTENTS_OF(addr) = (CONTENTS_OF(addr)) | (MASK_BIT(bit))) #define ASSIGN_BIT_VAL(addr,bit,val) \ ( (val) ? SET_BIT(addr,bit) : RESET_BIT(addr,bit) ) #define CREATE_FIELD(bit,length) \ (LENGTH_TO_BITS(length) << (bit)) #define RESET_FIELD(addr,bit,length) \ ( CONTENTS_OF(addr) &= (~CREATE_FIELD(bit,length))) #define TRUNCATE(val,bit,length) \ (((unsigned int)(val) << (bit)) & (CREATE_FIELD(bit, length))) #define MASK_FIELD(bit,val,length)\ TRUNCATE(val, bit, length) #define GET_FIELD(addr,bit,length) \ ((CONTENTS_OF(addr) & CREATE_FIELD(bit,length)) >> bit) #define LOAD_FIELD(addr,val,bit,length) \ (CONTENTS_OF(addr) &= (~CREATE_FIELD(bit,length))\ | TRUNCATE(val, bit, length)) /* MACROS to SET, CLEAR and RETURN bits and bitfields in Memory Mapped */ /* and Non-Memory Mapped using register names. */ #define GET_REG(reg) \ (reg) #define SET_REG(reg,val) \ ((reg)= (val)) #define GET_REG_BIT(reg,bit) \ ((reg) & MASK_BIT(bit) ? 1 : 0) #define SET_REG_BIT(reg,bit) \ ((reg) |= MASK_BIT(bit)) #define RESET_REG_BIT(reg,bit) \ ((reg) &= (~MASK_BIT(bit))) #define GET_REG_FIELD(reg,bit,length) \ (reg & CREATE_FIELD(bit,length)) >> bit) #define LOAD_REG_FIELD(reg,val,bit,length) \ (reg &= (~CREATE_FIELD(bit,length)) | (val<