home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / packery / xpk_develop / include / c / inline / xpksub.h < prev   
C/C++ Source or Header  |  1996-10-19  |  2KB  |  100 lines

  1. #ifndef _INLINE_XPKSUB_H
  2. #define _INLINE_XPKSUB_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL extern struct Library*  XpkSubBase;
  11. #endif
  12. #ifndef BASE_PAR_DECL
  13. #define BASE_PAR_DECL
  14. #define BASE_PAR_DECL0 void
  15. #endif
  16. #ifndef BASE_NAME
  17. #define BASE_NAME XpkSubBase
  18. #endif
  19.  
  20. #include <xpk/xpksub.h>
  21.  
  22. static __inline 
  23. XpksPackChunk (BASE_PAR_DECL struct XpkSubParams *xpar)
  24. {
  25.   BASE_EXT_DECL
  26.   register  _res  __asm("d0");
  27.   register struct XpkSubBase* a6 __asm("a6") = BASE_NAME;
  28.   register struct XpkSubParams * a0 __asm("a0") = xpar;
  29.   __asm __volatile ("jsr a6@(-0x24)"
  30.   : "=r" (_res)
  31.   : "r" (a6), "r" (a0)
  32.   : "a0","a1","d0","d1");
  33.   *(char *)a0 = *(char *)a0;
  34.   return _res;
  35. }
  36. static __inline 
  37. XpksPackFree (BASE_PAR_DECL struct XpkSubParams * xpar)
  38. {
  39.   BASE_EXT_DECL
  40.   register  _res  __asm("d0");
  41.   register struct XpkSubBase* a6 __asm("a6") = BASE_NAME;
  42.   register struct XpkSubParams * a0 __asm("a0") = xpar;
  43.   __asm __volatile ("jsr a6@(-0x2a)"
  44.   : "=r" (_res)
  45.   : "r" (a6), "r" (a0)
  46.   : "a0","a1","d0","d1");
  47.   *(char *)a0 = *(char *)a0;
  48.   return _res;
  49. }
  50. static __inline 
  51. XpksPackReset (BASE_PAR_DECL struct XpkSubParams * xpar)
  52. {
  53.   BASE_EXT_DECL
  54.   register  _res  __asm("d0");
  55.   register struct XpkSubBase* a6 __asm("a6") = BASE_NAME;
  56.   register struct XpkSubParams * a0 __asm("a0") = xpar;
  57.   __asm __volatile ("jsr a6@(-0x30)"
  58.   : "=r" (_res)
  59.   : "r" (a6), "r" (a0)
  60.   : "a0","a1","d0","d1");
  61.   *(char *)a0 = *(char *)a0;
  62.   return _res;
  63. }
  64. static __inline 
  65. XpksUnpackChunk (BASE_PAR_DEC struct XpkSubParams * xpar)
  66. {
  67.   BASE_EXT_DECL
  68.   register __asm  _res  __asm("d0");
  69.   register struct XpkSubBase* a6 __asm("a6") = BASE_NAME;
  70.   register struct XpkSubParams * a0 __asm("a0") = xpar;
  71.   __asm __volatile ("jsr a6@(-0x36)"
  72.   : "=r" (_res)
  73.   : "r" (a6), "r" (a0)
  74.   : "a0","a1","d0","d1");
  75.   *(char *)a0 = *(char *)a0;
  76.   return _res;
  77. }
  78. static __inline 
  79. XpksUnpackFree (BASE_PAR_DECL struct XpkSubParams * xpar)
  80. {
  81.   BASE_EXT_DECL
  82.   register  _res  __asm("d0");
  83.   register struct XpkSubBase* a6 __asm("a6") = BASE_NAME;
  84.   register struct XpkSubParams * a0 __asm("a0") = xpar;
  85.   __asm __volatile ("jsr a6@(-0x42)"
  86.   : "=r" (_res)
  87.   : "r" (a6), "r" (a0)
  88.   : "a0","a1","d0","d1");
  89.   *(char *)a0 = *(char *)a0;
  90.   return _res;
  91. }
  92. #undef BASE_EXT_DECL
  93. #undef BASE_PAR_DECL
  94. #undef BASE_PAR_DECL0
  95. #undef BASE_NAME
  96.  
  97. __END_DECLS
  98.  
  99. #endif /* _INLINE_XPKSUB_H */
  100.