home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / prog / c / gcc233.lha / os-include / inline / asl.h < prev    next >
C/C++ Source or Header  |  1992-12-29  |  3KB  |  111 lines

  1. #ifndef _INLINE_ASL_H
  2. #define _INLINE_ASL_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*  AslBase;
  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 AslBase
  18. #endif
  19.  
  20. static __inline APTR 
  21. AllocAslRequest (BASE_PAR_DECL unsigned long reqType,struct TagItem *tagList)
  22. {
  23.   BASE_EXT_DECL
  24.   register APTR  _res  __asm("d0");
  25.   register struct Library* a6 __asm("a6") = BASE_NAME;
  26.   register unsigned long d0 __asm("d0") = reqType;
  27.   register struct TagItem *a0 __asm("a0") = tagList;
  28.   __asm __volatile ("jsr a6@(-0x30)"
  29.   : "=r" (_res)
  30.   : "r" (a6), "r" (d0), "r" (a0)
  31.   : "a0","a1","d0","d1", "memory");
  32.   return _res;
  33. }
  34. #ifndef NO_INLINE_STDARG
  35. #define AllocAslRequestTags(a0, tags...) \
  36.   ({ struct TagItem _tags[] = { tags }; AllocAslRequest ((a0), _tags); })
  37. #endif /* not NO_INLINE_STDARG */
  38. static __inline struct FileRequester *
  39. AllocFileRequest (BASE_PAR_DECL0)
  40. {
  41.   BASE_EXT_DECL
  42.   register struct FileRequester * _res  __asm("d0");
  43.   register struct Library* a6 __asm("a6") = BASE_NAME;
  44.   __asm __volatile ("jsr a6@(-0x1e)"
  45.   : "=r" (_res)
  46.   : "r" (a6)
  47.   : "a0","a1","d0","d1", "memory");
  48.   return _res;
  49. }
  50. static __inline BOOL 
  51. AslRequest (BASE_PAR_DECL APTR requester,struct TagItem *tagList)
  52. {
  53.   BASE_EXT_DECL
  54.   register BOOL  _res  __asm("d0");
  55.   register struct Library* a6 __asm("a6") = BASE_NAME;
  56.   register APTR a0 __asm("a0") = requester;
  57.   register struct TagItem *a1 __asm("a1") = tagList;
  58.   __asm __volatile ("jsr a6@(-0x3c)"
  59.   : "=r" (_res)
  60.   : "r" (a6), "r" (a0), "r" (a1)
  61.   : "a0","a1","d0","d1", "memory");
  62.   return _res;
  63. }
  64. #ifndef NO_INLINE_STDARG
  65. #define AslRequestTags(a0, tags...) \
  66.   ({ struct TagItem _tags[] = { tags }; AslRequest ((a0), _tags); })
  67. #endif /* not NO_INLINE_STDARG */
  68. static __inline void 
  69. FreeAslRequest (BASE_PAR_DECL APTR requester)
  70. {
  71.   BASE_EXT_DECL
  72.   register struct Library* a6 __asm("a6") = BASE_NAME;
  73.   register APTR a0 __asm("a0") = requester;
  74.   __asm __volatile ("jsr a6@(-0x36)"
  75.   : /* no output */
  76.   : "r" (a6), "r" (a0)
  77.   : "a0","a1","d0","d1", "memory");
  78. }
  79. static __inline void 
  80. FreeFileRequest (BASE_PAR_DECL struct FileRequester *fileReq)
  81. {
  82.   BASE_EXT_DECL
  83.   register struct Library* a6 __asm("a6") = BASE_NAME;
  84.   register struct FileRequester *a0 __asm("a0") = fileReq;
  85.   __asm __volatile ("jsr a6@(-0x24)"
  86.   : /* no output */
  87.   : "r" (a6), "r" (a0)
  88.   : "a0","a1","d0","d1", "memory");
  89. }
  90. static __inline BOOL 
  91. RequestFile (BASE_PAR_DECL struct FileRequester *fileReq)
  92. {
  93.   BASE_EXT_DECL
  94.   register BOOL  _res  __asm("d0");
  95.   register struct Library* a6 __asm("a6") = BASE_NAME;
  96.   register struct FileRequester *a0 __asm("a0") = fileReq;
  97.   __asm __volatile ("jsr a6@(-0x2a)"
  98.   : "=r" (_res)
  99.   : "r" (a6), "r" (a0)
  100.   : "a0","a1","d0","d1", "memory");
  101.   return _res;
  102. }
  103. #undef BASE_EXT_DECL
  104. #undef BASE_PAR_DECL
  105. #undef BASE_PAR_DECL0
  106. #undef BASE_NAME
  107.  
  108. __END_DECLS
  109.  
  110. #endif /* _INLINE_ASL_H */
  111.