00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef UTILITIES
00011 #define UTILITIES
00012
00013 #include "processor.h"
00014
00015
00016
00017 #define BYTE_W 8
00018 #define HWORD_W 16
00019 #define WORD_W 32
00020
00021
00022
00023 #define DEFAULT (0xFFFFFFFF)
00024
00025
00026
00027 #define MINI(x,y,z) z=((x)<(y))?(x):(y);
00028
00029
00030
00031
00032
00033 #define N_BIT_MASK(wid) (~(0xFFFFFFFF<<(wid)))
00034 #define FIELD_MASK(bit,wid) (N_BIT_MASK(wid) << (bit))
00035 #define FIELD_OFF(bit,wid) (~(FIELD_MASK(bit,wid)))
00036 #define FIELD_VAL(bit,wid,val) ((val&(N_BIT_MASK(wid))) << bit)
00037
00038 #define SET_VBIT(var,bit) (var |= (1 << bit))
00039 #define RST_VBIT(var,bit) (var &= ~(1 << bit))
00040 #define ASGN_VBIT(var,bit,val) (var = ((RST_VBIT(var,bit)) | (val<<bit)))
00041 #define GET_VBIT(var,bit) ((var >> bit) & 1)
00042 #define RST_VFLD(var,bit,wid) (var &= (FIELD_OFF(bit,wid)))
00043 #define ASGN_VFLD(var,bit,wid,val) \
00044 (var = (RST_VFLD(var,bit,wid)) | (FIELD_VAL(bit,wid,val)))
00045 #define GET_VFLD(var,bit,wid) ((FIELD_MASK(bit,wid) & var) >> bit)
00046
00047
00048
00049
00050
00051
00052 #define CONTENTS(adr) (*((volatile UINT32 *)(adr)))
00053
00054 #define READ_REG(adr) (CONTENTS(adr))
00055 #define WRITE_REG(adr,val) (CONTENTS(adr) = (val))
00056 #define SET_RBIT(adr,bit) (CONTENTS(adr) |= (1 << (bit)))
00057 #define RST_RBIT(adr,bit) (CONTENTS(adr) &= (~(1 << (bit))))
00058 #define ASGN_RBIT(adr,bit,val) (CONTENTS(adr) = (RST_RBIT(adr,bit)) | (val<<bit))
00059 #define GET_RBIT(adr,bit) ((CONTENTS(adr) >> bit) & 1)
00060 #define RST_RFLD(adr,bit,wid) (CONTENTS(adr) &= (FIELD_OFF(bit,wid)))
00061 #define GET_RFLD(adr,bit,wid) ((CONTENTS(adr) & FIELD_MASK(bit,wid)) >> bit)
00062 #define ASGN_RFLD(adr,bit,wid,val) (CONTENTS(adr) = \
00063 (RST_RFLD(adr,bit,wid)) | (FIELD_VAL(bit,wid,val)))
00064
00065 #endif