00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #undef CAREFUL_ALIGNMENT
00021
00022
00023
00024 #ifdef __i386__
00025 #define CAREFUL_ALIGNMENT 0
00026 #endif
00027
00028 #ifndef CAREFUL_ALIGNMENT
00029 #define CAREFUL_ALIGNMENT 1
00030 #endif
00031
00032 #define CVAL(buf,pos) (((unsigned char *)(buf))[pos])
00033 #define PVAL(buf,pos) ((unsigned)CVAL(buf,pos))
00034 #define SCVAL(buf,pos,val) (CVAL(buf,pos) = (val))
00035
00036
00037 #if CAREFUL_ALIGNMENT
00038 #define SVAL(buf,pos) (PVAL(buf,pos)|PVAL(buf,(pos)+1)<<8)
00039 #define IVAL(buf,pos) (SVAL(buf,pos)|SVAL(buf,(pos)+2)<<16)
00040 #define SSVALX(buf,pos,val) (CVAL(buf,pos)=(val)&0xFF,CVAL(buf,pos+1)=(val)>>8)
00041 #define SIVALX(buf,pos,val) (SSVALX(buf,pos,val&0xFFFF),SSVALX(buf,pos+2,val>>16))
00042 #define SIVAL(buf,pos,val) SIVALX((buf),(pos),((uint32)(val)))
00043 #else
00044
00045
00046
00047
00048
00049
00050 #define IVAL(buf,pos) (*(uint32 *)((char *)(buf) + (pos)))
00051 #define SIVAL(buf,pos,val) IVAL(buf,pos)=((uint32)(val))
00052 #endif
00053
00054