dgrs_asstruct.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /*
  2. * For declaring structures shared with assembly routines
  3. *
  4. * $Id: dgrs_asstruct.h,v 1.1.1.1 2007/06/12 07:27:11 eyryu Exp $
  5. */
  6. #ifdef 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