home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 4 / FreshFish_May-June1994.bin / gnu / os-include / inline / expansion.h < prev    next >
C/C++ Source or Header  |  1993-12-09  |  9KB  |  289 lines

  1. #ifndef _INLINE_EXPANSION_H
  2. #define _INLINE_EXPANSION_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 ExpansionBase*  ExpansionBase;
  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 ExpansionBase
  18. #endif
  19.  
  20. static __inline BOOL 
  21. AddBootNode (BASE_PAR_DECL long bootPri,unsigned long flags,struct DeviceNode *deviceNode,struct ConfigDev *configDev)
  22. {
  23.   BASE_EXT_DECL
  24.   register BOOL  _res  __asm("d0");
  25.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  26.   register long d0 __asm("d0") = bootPri;
  27.   register unsigned long d1 __asm("d1") = flags;
  28.   register struct DeviceNode *a0 __asm("a0") = deviceNode;
  29.   register struct ConfigDev *a1 __asm("a1") = configDev;
  30.   __asm __volatile ("jsr a6@(-0x24)"
  31.   : "=r" (_res)
  32.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0), "r" (a1)
  33.   : "a0","a1","d0","d1", "memory");
  34.   return _res;
  35. }
  36. static __inline void 
  37. AddConfigDev (BASE_PAR_DECL struct ConfigDev *configDev)
  38. {
  39.   BASE_EXT_DECL
  40.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  41.   register struct ConfigDev *a0 __asm("a0") = configDev;
  42.   __asm __volatile ("jsr a6@(-0x1e)"
  43.   : /* no output */
  44.   : "r" (a6), "r" (a0)
  45.   : "a0","a1","d0","d1", "memory");
  46. }
  47. static __inline BOOL 
  48. AddDosNode (BASE_PAR_DECL long bootPri,unsigned long flags,struct DeviceNode *deviceNode)
  49. {
  50.   BASE_EXT_DECL
  51.   register BOOL  _res  __asm("d0");
  52.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  53.   register long d0 __asm("d0") = bootPri;
  54.   register unsigned long d1 __asm("d1") = flags;
  55.   register struct DeviceNode *a0 __asm("a0") = deviceNode;
  56.   __asm __volatile ("jsr a6@(-0x96)"
  57.   : "=r" (_res)
  58.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  59.   : "a0","a1","d0","d1", "memory");
  60.   return _res;
  61. }
  62. static __inline void 
  63. AllocBoardMem (BASE_PAR_DECL unsigned long slotSpec)
  64. {
  65.   BASE_EXT_DECL
  66.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  67.   register unsigned long d0 __asm("d0") = slotSpec;
  68.   __asm __volatile ("jsr a6@(-0x2a)"
  69.   : /* no output */
  70.   : "r" (a6), "r" (d0)
  71.   : "a0","a1","d0","d1", "memory");
  72. }
  73. static __inline struct ConfigDev *
  74. AllocConfigDev (BASE_PAR_DECL0)
  75. {
  76.   BASE_EXT_DECL
  77.   register struct ConfigDev * _res  __asm("d0");
  78.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  79.   __asm __volatile ("jsr a6@(-0x30)"
  80.   : "=r" (_res)
  81.   : "r" (a6)
  82.   : "a0","a1","d0","d1", "memory");
  83.   return _res;
  84. }
  85. static __inline APTR 
  86. AllocExpansionMem (BASE_PAR_DECL unsigned long numSlots,unsigned long slotAlign)
  87. {
  88.   BASE_EXT_DECL
  89.   register APTR  _res  __asm("d0");
  90.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  91.   register unsigned long d0 __asm("d0") = numSlots;
  92.   register unsigned long d1 __asm("d1") = slotAlign;
  93.   __asm __volatile ("jsr a6@(-0x36)"
  94.   : "=r" (_res)
  95.   : "r" (a6), "r" (d0), "r" (d1)
  96.   : "a0","a1","d0","d1", "memory");
  97.   return _res;
  98. }
  99. static __inline void 
  100. ConfigBoard (BASE_PAR_DECL APTR board,struct ConfigDev *configDev)
  101. {
  102.   BASE_EXT_DECL
  103.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  104.   register APTR a0 __asm("a0") = board;
  105.   register struct ConfigDev *a1 __asm("a1") = configDev;
  106.   __asm __volatile ("jsr a6@(-0x3c)"
  107.   : /* no output */
  108.   : "r" (a6), "r" (a0), "r" (a1)
  109.   : "a0","a1","d0","d1", "memory");
  110. }
  111. static __inline void 
  112. ConfigChain (BASE_PAR_DECL APTR baseAddr)
  113. {
  114.   BASE_EXT_DECL
  115.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  116.   register APTR a0 __asm("a0") = baseAddr;
  117.   __asm __volatile ("jsr a6@(-0x42)"
  118.   : /* no output */
  119.   : "r" (a6), "r" (a0)
  120.   : "a0","a1","d0","d1", "memory");
  121. }
  122. static __inline struct ConfigDev *
  123. FindConfigDev (BASE_PAR_DECL struct ConfigDev *oldConfigDev,long manufacturer,long product)
  124. {
  125.   BASE_EXT_DECL
  126.   register struct ConfigDev * _res  __asm("d0");
  127.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  128.   register struct ConfigDev *a0 __asm("a0") = oldConfigDev;
  129.   register long d0 __asm("d0") = manufacturer;
  130.   register long d1 __asm("d1") = product;
  131.   __asm __volatile ("jsr a6@(-0x48)"
  132.   : "=r" (_res)
  133.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  134.   : "a0","a1","d0","d1", "memory");
  135.   return _res;
  136. }
  137. static __inline void 
  138. FreeBoardMem (BASE_PAR_DECL unsigned long startSlot,unsigned long slotSpec)
  139. {
  140.   BASE_EXT_DECL
  141.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  142.   register unsigned long d0 __asm("d0") = startSlot;
  143.   register unsigned long d1 __asm("d1") = slotSpec;
  144.   __asm __volatile ("jsr a6@(-0x4e)"
  145.   : /* no output */
  146.   : "r" (a6), "r" (d0), "r" (d1)
  147.   : "a0","a1","d0","d1", "memory");
  148. }
  149. static __inline void 
  150. FreeConfigDev (BASE_PAR_DECL struct ConfigDev *configDev)
  151. {
  152.   BASE_EXT_DECL
  153.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  154.   register struct ConfigDev *a0 __asm("a0") = configDev;
  155.   __asm __volatile ("jsr a6@(-0x54)"
  156.   : /* no output */
  157.   : "r" (a6), "r" (a0)
  158.   : "a0","a1","d0","d1", "memory");
  159. }
  160. static __inline void 
  161. FreeExpansionMem (BASE_PAR_DECL unsigned long startSlot,unsigned long numSlots)
  162. {
  163.   BASE_EXT_DECL
  164.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  165.   register unsigned long d0 __asm("d0") = startSlot;
  166.   register unsigned long d1 __asm("d1") = numSlots;
  167.   __asm __volatile ("jsr a6@(-0x5a)"
  168.   : /* no output */
  169.   : "r" (a6), "r" (d0), "r" (d1)
  170.   : "a0","a1","d0","d1", "memory");
  171. }
  172. static __inline ULONG 
  173. GetCurrentBinding (BASE_PAR_DECL struct CurrentBinding *currentBinding,unsigned long bindingSize)
  174. {
  175.   BASE_EXT_DECL
  176.   register ULONG  _res  __asm("d0");
  177.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  178.   register struct CurrentBinding *a0 __asm("a0") = currentBinding;
  179.   register unsigned long d0 __asm("d0") = bindingSize;
  180.   __asm __volatile ("jsr a6@(-0x8a)"
  181.   : "=r" (_res)
  182.   : "r" (a6), "r" (a0), "r" (d0)
  183.   : "a0","a1","d0","d1", "memory");
  184.   return _res;
  185. }
  186. static __inline struct DeviceNode *
  187. MakeDosNode (BASE_PAR_DECL APTR parmPacket)
  188. {
  189.   BASE_EXT_DECL
  190.   register struct DeviceNode * _res  __asm("d0");
  191.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  192.   register APTR a0 __asm("a0") = parmPacket;
  193.   __asm __volatile ("jsr a6@(-0x90)"
  194.   : "=r" (_res)
  195.   : "r" (a6), "r" (a0)
  196.   : "a0","a1","d0","d1", "memory");
  197.   return _res;
  198. }
  199. static __inline void 
  200. ObtainConfigBinding (BASE_PAR_DECL0)
  201. {
  202.   BASE_EXT_DECL
  203.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  204.   __asm __volatile ("jsr a6@(-0x78)"
  205.   : /* no output */
  206.   : "r" (a6)
  207.   : "a0","a1","d0","d1", "memory");
  208. }
  209. static __inline UBYTE 
  210. ReadExpansionByte (BASE_PAR_DECL APTR board,unsigned long offset)
  211. {
  212.   BASE_EXT_DECL
  213.   register UBYTE  _res  __asm("d0");
  214.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  215.   register APTR a0 __asm("a0") = board;
  216.   register unsigned long d0 __asm("d0") = offset;
  217.   __asm __volatile ("jsr a6@(-0x60)"
  218.   : "=r" (_res)
  219.   : "r" (a6), "r" (a0), "r" (d0)
  220.   : "a0","a1","d0","d1", "memory");
  221.   return _res;
  222. }
  223. static __inline void 
  224. ReadExpansionRom (BASE_PAR_DECL APTR board,struct ConfigDev *configDev)
  225. {
  226.   BASE_EXT_DECL
  227.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  228.   register APTR a0 __asm("a0") = board;
  229.   register struct ConfigDev *a1 __asm("a1") = configDev;
  230.   __asm __volatile ("jsr a6@(-0x66)"
  231.   : /* no output */
  232.   : "r" (a6), "r" (a0), "r" (a1)
  233.   : "a0","a1","d0","d1", "memory");
  234. }
  235. static __inline void 
  236. ReleaseConfigBinding (BASE_PAR_DECL0)
  237. {
  238.   BASE_EXT_DECL
  239.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  240.   __asm __volatile ("jsr a6@(-0x7e)"
  241.   : /* no output */
  242.   : "r" (a6)
  243.   : "a0","a1","d0","d1", "memory");
  244. }
  245. static __inline void 
  246. RemConfigDev (BASE_PAR_DECL struct ConfigDev *configDev)
  247. {
  248.   BASE_EXT_DECL
  249.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  250.   register struct ConfigDev *a0 __asm("a0") = configDev;
  251.   __asm __volatile ("jsr a6@(-0x6c)"
  252.   : /* no output */
  253.   : "r" (a6), "r" (a0)
  254.   : "a0","a1","d0","d1", "memory");
  255. }
  256. static __inline void 
  257. SetCurrentBinding (BASE_PAR_DECL struct CurrentBinding *currentBinding,unsigned long bindingSize)
  258. {
  259.   BASE_EXT_DECL
  260.   register struct ExpansionBase* a6 __asm("a6") = BASE_NAME;
  261.   register struct CurrentBinding *a0 __asm("a0") = currentBinding;
  262.   register unsigned long d0 __asm("d0") = b