home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / bbs / cbm / os-include.lha / os-include / inline / exec.h < prev    next >
C/C++ Source or Header  |  1993-12-09  |  44KB  |  1,482 lines

  1. #ifndef _INLINE_EXEC_H
  2. #define _INLINE_EXEC_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 ExecBase * SysBase;
  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 SysBase
  18. #endif
  19.  
  20. static __inline void 
  21. AbortIO (BASE_PAR_DECL struct IORequest *ioRequest)
  22. {
  23.   BASE_EXT_DECL
  24.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  25.   register struct IORequest *a1 __asm("a1") = ioRequest;
  26.   __asm __volatile ("jsr a6@(-0x1e0)"
  27.   : /* no output */
  28.   : "r" (a6), "r" (a1)
  29.   : "a0","a1","d0","d1", "memory");
  30. }
  31. static __inline void 
  32. AddDevice (BASE_PAR_DECL struct Device *device)
  33. {
  34.   BASE_EXT_DECL
  35.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  36.   register struct Device *a1 __asm("a1") = device;
  37.   __asm __volatile ("jsr a6@(-0x1b0)"
  38.   : /* no output */
  39.   : "r" (a6), "r" (a1)
  40.   : "a0","a1","d0","d1", "memory");
  41. }
  42. static __inline void 
  43. AddHead (BASE_PAR_DECL struct List *list,struct Node *node)
  44. {
  45.   BASE_EXT_DECL
  46.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  47.   register struct List *a0 __asm("a0") = list;
  48.   register struct Node *a1 __asm("a1") = node;
  49.   __asm __volatile ("jsr a6@(-0xf0)"
  50.   : /* no output */
  51.   : "r" (a6), "r" (a0), "r" (a1)
  52.   : "a0","a1","d0","d1", "memory");
  53. }
  54. static __inline void 
  55. AddIntServer (BASE_PAR_DECL long intNumber,struct Interrupt *interrupt)
  56. {
  57.   BASE_EXT_DECL
  58.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  59.   register long d0 __asm("d0") = intNumber;
  60.   register struct Interrupt *a1 __asm("a1") = interrupt;
  61.   __asm __volatile ("jsr a6@(-0xa8)"
  62.   : /* no output */
  63.   : "r" (a6), "r" (d0), "r" (a1)
  64.   : "a0","a1","d0","d1", "memory");
  65. }
  66. static __inline void 
  67. AddLibrary (BASE_PAR_DECL struct Library *library)
  68. {
  69.   BASE_EXT_DECL
  70.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  71.   register struct Library *a1 __asm("a1") = library;
  72.   __asm __volatile ("jsr a6@(-0x18c)"
  73.   : /* no output */
  74.   : "r" (a6), "r" (a1)
  75.   : "a0","a1","d0","d1", "memory");
  76. }
  77. static __inline void 
  78. AddMemHandler (BASE_PAR_DECL struct Interrupt *memhand)
  79. {
  80.   BASE_EXT_DECL
  81.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  82.   register struct Interrupt *a1 __asm("a1") = memhand;
  83.   __asm __volatile ("jsr a6@(-0x306)"
  84.   : /* no output */
  85.   : "r" (a6), "r" (a1)
  86.   : "a0","a1","d0","d1", "memory");
  87. }
  88. static __inline void 
  89. AddMemList (BASE_PAR_DECL unsigned long size,unsigned long attributes,long pri,APTR base,UBYTE *name)
  90. {
  91.   BASE_EXT_DECL
  92.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  93.   register unsigned long d0 __asm("d0") = size;
  94.   register unsigned long d1 __asm("d1") = attributes;
  95.   register long d2 __asm("d2") = pri;
  96.   register APTR a0 __asm("a0") = base;
  97.   register UBYTE *a1 __asm("a1") = name;
  98.   __asm __volatile ("jsr a6@(-0x26a)"
  99.   : /* no output */
  100.   : "r" (a6), "r" (d0), "r" (d1), "r" (d2), "r" (a0), "r" (a1)
  101.   : "a0","a1","d0","d1","d2", "memory");
  102. }
  103. static __inline void 
  104. AddPort (BASE_PAR_DECL struct MsgPort *port)
  105. {
  106.   BASE_EXT_DECL
  107.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  108.   register struct MsgPort *a1 __asm("a1") = port;
  109.   __asm __volatile ("jsr a6@(-0x162)"
  110.   : /* no output */
  111.   : "r" (a6), "r" (a1)
  112.   : "a0","a1","d0","d1", "memory");
  113. }
  114. static __inline void 
  115. AddResource (BASE_PAR_DECL APTR resource)
  116. {
  117.   BASE_EXT_DECL
  118.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  119.   register APTR a1 __asm("a1") = resource;
  120.   __asm __volatile ("jsr a6@(-0x1e6)"
  121.   : /* no output */
  122.   : "r" (a6), "r" (a1)
  123.   : "a0","a1","d0","d1", "memory");
  124. }
  125. static __inline void 
  126. AddSemaphore (BASE_PAR_DECL struct SignalSemaphore *sigSem)
  127. {
  128.   BASE_EXT_DECL
  129.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  130.   register struct SignalSemaphore *a1 __asm("a1") = sigSem;
  131.   __asm __volatile ("jsr a6@(-0x258)"
  132.   : /* no output */
  133.   : "r" (a6), "r" (a1)
  134.   : "a0","a1","d0","d1", "memory");
  135. }
  136. static __inline void 
  137. AddTail (BASE_PAR_DECL struct List *list,struct Node *node)
  138. {
  139.   BASE_EXT_DECL
  140.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  141.   register struct List *a0 __asm("a0") = list;
  142.   register struct Node *a1 __asm("a1") = node;
  143.   __asm __volatile ("jsr a6@(-0xf6)"
  144.   : /* no output */
  145.   : "r" (a6), "r" (a0), "r" (a1)
  146.   : "a0","a1","d0","d1", "memory");
  147. }
  148. static __inline APTR 
  149. AddTask (BASE_PAR_DECL struct Task *task,APTR initPC,APTR finalPC)
  150. {
  151.   BASE_EXT_DECL
  152.   register APTR  _res  __asm("d0");
  153.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  154.   register struct Task *a1 __asm("a1") = task;
  155.   register APTR a2 __asm("a2") = initPC;
  156.   register APTR a3 __asm("a3") = finalPC;
  157.   __asm __volatile ("jsr a6@(-0x11a)"
  158.   : "=r" (_res)
  159.   : "r" (a6), "r" (a1), "r" (a2), "r" (a3)
  160.   : "a0","a1","a2","a3","d0","d1", "memory");
  161.   return _res;
  162. }
  163. static __inline void 
  164. Alert (BASE_PAR_DECL unsigned long alertNum)
  165. {
  166.   BASE_EXT_DECL
  167.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  168.   register unsigned long d7 __asm("d7") = alertNum;
  169.   __asm __volatile ("jsr a6@(-0x6c)"
  170.   : /* no output */
  171.   : "r" (a6), "r" (d7)
  172.   : "a0","a1","d0","d1","d7", "memory");
  173. }
  174. static __inline APTR 
  175. AllocAbs (BASE_PAR_DECL unsigned long byteSize,APTR location)
  176. {
  177.   BASE_EXT_DECL
  178.   register APTR  _res  __asm("d0");
  179.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  180.   register unsigned long d0 __asm("d0") = byteSize;
  181.   register APTR a1 __asm("a1") = location;
  182.   __asm __volatile ("jsr a6@(-0xcc)"
  183.   : "=r" (_res)
  184.   : "r" (a6), "r" (d0), "r" (a1)
  185.   : "a0","a1","d0","d1", "memory");
  186.   return _res;
  187. }
  188. static __inline struct MemList *
  189. AllocEntry (BASE_PAR_DECL struct MemList *entry)
  190. {
  191.   BASE_EXT_DECL
  192.   register struct MemList * _res  __asm("d0");
  193.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  194.   register struct MemList *a0 __asm("a0") = entry;
  195.   __asm __volatile ("jsr a6@(-0xde)"
  196.   : "=r" (_res)
  197.   : "r" (a6), "r" (a0)
  198.   : "a0","a1","d0","d1", "memory");
  199.   return _res;
  200. }
  201. static __inline APTR 
  202. AllocMem (BASE_PAR_DECL unsigned long byteSize,unsigned long requirements)
  203. {
  204.   BASE_EXT_DECL
  205.   register APTR  _res  __asm("d0");
  206.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  207.   register unsigned long d0 __asm("d0") = byteSize;
  208.   register unsigned long d1 __asm("d1") = requirements;
  209.   __asm __volatile ("jsr a6@(-0xc6)"
  210.   : "=r" (_res)
  211.   : "r" (a6), "r" (d0), "r" (d1)
  212.   : "a0","a1","d0","d1", "memory");
  213.   return _res;
  214. }
  215. static __inline APTR 
  216. AllocPooled (BASE_PAR_DECL APTR poolHeader,unsigned long memSize)
  217. {
  218.   BASE_EXT_DECL
  219.   register APTR  _res  __asm("d0");
  220.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  221.   register APTR a0 __asm("a0") = poolHeader;
  222.   register unsigned long d0 __asm("d0") = memSize;
  223.   __asm __volatile ("jsr a6@(-0x2c4)"
  224.   : "=r" (_res)
  225.   : "r" (a6), "r" (a0), "r" (d0)
  226.   : "a0","a1","d0","d1", "memory");
  227.   return _res;
  228. }
  229. static __inline BYTE 
  230. AllocSignal (BASE_PAR_DECL long signalNum)
  231. {
  232.   BASE_EXT_DECL
  233.   register BYTE  _res  __asm("d0");
  234.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  235.   register long d0 __asm("d0") = signalNum;
  236.   __asm __volatile ("jsr a6@(-0x14a)"
  237.   : "=r" (_res)
  238.   : "r" (a6), "r" (d0)
  239.   : "a0","a1","d0","d1", "memory");
  240.   return _res;
  241. }
  242. static __inline LONG 
  243. AllocTrap (BASE_PAR_DECL long trapNum)
  244. {
  245.   BASE_EXT_DECL
  246.   register LONG  _res  __asm("d0");
  247.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  248.   register long d0 __asm("d0") = trapNum;
  249.   __asm __volatile ("jsr a6@(-0x156)"
  250.   : "=r" (_res)
  251.   : "r" (a6), "r" (d0)
  252.   : "a0","a1","d0","d1", "memory");
  253.   return _res;
  254. }
  255. static __inline APTR 
  256. AllocVec (BASE_PAR_DECL unsigned long byteSize,unsigned long requirements)
  257. {
  258.   BASE_EXT_DECL
  259.   register APTR  _res  __asm("d0");
  260.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  261.   register unsigned long d0 __asm("d0") = byteSize;
  262.   register unsigned long d1 __asm("d1") = requirements;
  263.   __asm __volatile ("jsr a6@(-0x2ac)"
  264.   : "=r" (_res)
  265.   : "r" (a6), "r" (d0), "r" (d1)
  266.   : "a0","a1","d0","d1", "memory");
  267.   return _res;
  268. }
  269. static __inline APTR 
  270. Allocate (BASE_PAR_DECL struct MemHeader *freeList,unsigned long byteSize)
  271. {
  272.   BASE_EXT_DECL
  273.   register APTR  _res  __asm("d0");
  274.   register struct ExecBase *a6 __asm("a6") = BASE_NAME;
  275.   register struct MemHeader *a0 __asm("a0")