dgrs_asstruct.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:1k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /*
  2.  * For declaring structures shared with assembly routines
  3.  *
  4.  * $Id: asstruct.h,v 1.1.1.1 1994/10/23 05:08:32 rick Exp $
  5.  */
  6. #if ASSEMBLER
  7. # define MO(t,a) (a)
  8. # define VMO(t,a) (a)
  9. # define BEGIN_STRUCT(x) _Off=0
  10. # define S1A(t,x,n) _Off=(_Off+0)&~0; x=_Off; _Off=_Off+(1*n)
  11. # define S2A(t,x,n) _Off=(_Off+1)&~1; x=_Off; _Off=_Off+(2*n)
  12. # define S4A(t,x,n) _Off=(_Off+3)&~3; x=_Off; _Off=_Off+(4*n)
  13. # define WORD(x) _Off=(_Off+3)&~3; x=_Off; _Off=_Off+4
  14. # define WORDA(x,n) _Off=(_Off+3)&~3; x=_Off; _Off=_Off+(4*n)
  15. # define VWORD(x) _Off=(_Off+3)&~3; x=_Off; _Off=_Off+4
  16. # define S1(t,x) _Off=(_Off+0)&~0; x=_Off; _Off=_Off+1
  17. # define S2(t,x) _Off=(_Off+1)&~1; x=_Off; _Off=_Off+2
  18. # define S4(t,x) _Off=(_Off+3)&~3; x=_Off; _Off=_Off+4
  19. # define END_STRUCT(x) _Off=(_Off+3)&~3; x=_Off 
  20. #else /* C */
  21. #define VMO(t,a)        (*(volatile t *)(a))
  22. # define BEGIN_STRUCT(x) struct x {
  23. # define S1(t,x)         t x ;
  24. # define S1A(t,x,n)      t x[n] ;
  25. # define S2(t,x)         t x ;
  26. # define S2A(t,x,n)      t x[n] ;
  27. # define S4(t,x)         t x ;
  28. # define S4A(t,x,n)      t x[n] ;
  29. # define END_STRUCT(x)   } ;
  30. #endif