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