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

  1. #ifndef _INLINE_UTILITY_H
  2. #define _INLINE_UTILITY_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*  UtilityBase;
  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 UtilityBase
  18. #endif
  19.  
  20. static __inline BOOL 
  21. AddNamedObject (BASE_PAR_DECL struct NamedObject *namespace,struct NamedObject *object)
  22. {
  23.   BASE_EXT_DECL
  24.   register BOOL  _res  __asm("d0");
  25.   register struct Library* a6 __asm("a6") = BASE_NAME;
  26.   register struct NamedObject *a0 __asm("a0") = namespace;
  27.   register struct NamedObject *a1 __asm("a1") = object;
  28.   __asm __volatile ("jsr a6@(-0xde)"
  29.   : "=r" (_res)
  30.   : "r" (a6), "r" (a0), "r" (a1)
  31.   : "a0","a1","d0","d1", "memory");
  32.   return _res;
  33. }
  34. static __inline struct NamedObject *
  35. AllocNamedObjectA (BASE_PAR_DECL STRPTR name,struct TagItem *tags)
  36. {
  37.   BASE_EXT_DECL
  38.   register struct NamedObject * _res  __asm("d0");
  39.   register struct Library* a6 __asm("a6") = BASE_NAME;
  40.   register STRPTR a0 __asm("a0") = name;
  41.   register struct TagItem *a1 __asm("a1") = tags;
  42.   __asm __volatile ("jsr a6@(-0xe4)"
  43.   : "=r" (_res)
  44.   : "r" (a6), "r" (a0), "r" (a1)
  45.   : "a0","a1","d0","d1", "memory");
  46.   return _res;
  47. }
  48. static __inline struct TagItem *
  49. AllocateTagItems (BASE_PAR_DECL unsigned long numTags)
  50. {
  51.   BASE_EXT_DECL
  52.   register struct TagItem * _res  __asm("d0");
  53.   register struct Library* a6 __asm("a6") = BASE_NAME;
  54.   register unsigned long d0 __asm("d0") = numTags;
  55.   __asm __volatile ("jsr a6@(-0x42)"
  56.   : "=r" (_res)
  57.   : "r" (a6), "r" (d0)
  58.   : "a0","a1","d0","d1", "memory");
  59.   return _res;
  60. }
  61. static __inline void 
  62. Amiga2Date (BASE_PAR_DECL unsigned long seconds,struct ClockData *result)
  63. {
  64.   BASE_EXT_DECL
  65.   register struct Library* a6 __asm("a6") = BASE_NAME;
  66.   register unsigned long d0 __asm("d0") = seconds;
  67.   register struct ClockData *a0 __asm("a0") = result;
  68.   __asm __volatile ("jsr a6@(-0x78)"
  69.   : /* no output */
  70.   : "r" (a6), "r" (d0), "r" (a0)
  71.   : "a0","a1","d0","d1", "memory");
  72. }
  73. static __inline void 
  74. ApplyTagChanges (BASE_PAR_DECL struct TagItem *list,struct TagItem *changeList)
  75. {
  76.   BASE_EXT_DECL
  77.   register struct Library* a6 __asm("a6") = BASE_NAME;
  78.   register struct TagItem *a0 __asm("a0") = list;
  79.   register struct TagItem *a1 __asm("a1") = changeList;
  80.   __asm __volatile ("jsr a6@(-0xba)"
  81.   : /* no output */
  82.   : "r" (a6), "r" (a0), "r" (a1)
  83.   : "a0","a1","d0","d1", "memory");
  84. }
  85. static __inline LONG 
  86. AttemptRemNamedObject (BASE_PAR_DECL struct NamedObject *object)
  87. {
  88.   BASE_EXT_DECL
  89.   register LONG  _res  __asm("d0");
  90.   register struct Library* a6 __asm("a6") = BASE_NAME;
  91.   register struct NamedObject *a0 __asm("a0") = object;
  92.   __asm __volatile ("jsr a6@(-0xea)"
  93.   : "=r" (_res)
  94.   : "r" (a6), "r" (a0)
  95.   : "a0","a1","d0","d1", "memory");
  96.   return _res;
  97. }
  98. static __inline ULONG 
  99. CallHookPkt (BASE_PAR_DECL struct Hook *hook,APTR object,APTR paramPacket)
  100. {
  101.   BASE_EXT_DECL
  102.   register ULONG  _res  __asm("d0");
  103.   register struct Library* a6 __asm("a6") = BASE_NAME;
  104.   register struct Hook *a0 __asm("a0") = hook;
  105.   register APTR a2 __asm("a2") = object;
  106.   register APTR a1 __asm("a1") = paramPacket;
  107.   __asm __volatile ("jsr a6@(-0x66)"
  108.   : "=r" (_res)
  109.   : "r" (a6), "r" (a0), "r" (a2), "r" (a1)
  110.   : "a0","a1","a2","d0","d1", "memory");
  111.   return _res;
  112. }
  113. static __inline ULONG 
  114. CheckDate (BASE_PAR_DECL struct ClockData *date)
  115. {
  116.   BASE_EXT_DECL
  117.   register ULONG  _res  __asm("d0");
  118.   register struct Library* a6 __asm("a6") = BASE_NAME;
  119.   register struct ClockData *a0 __asm("a0") = date;
  120.   __asm __volatile ("jsr a6@(-0x84)"
  121.   : "=r" (_res)
  122.   : "r" (a6), "r" (a0)
  123.   : "a0","a1","d0","d1", "memory");
  124.   return _res;
  125. }
  126. static __inline struct TagItem *
  127. CloneTagItems (BASE_PAR_DECL struct TagItem *tagList)
  128. {
  129.   BASE_EXT_DECL
  130.   register struct TagItem * _res  __asm("d0");
  131.   register struct Library* a6 __asm("a6") = BASE_NAME;
  132.   register struct TagItem *a0 __asm("a0") = tagList;
  133.   __asm __volatile ("jsr a6@(-0x48)"
  134.   : "=r" (_res)
  135.   : "r" (a6), "r" (a0)
  136.   : "a0","a1","d0","d1", "memory");
  137.   return _res;
  138. }
  139. static __inline ULONG 
  140. Date2Amiga (BASE_PAR_DECL struct ClockData *date)
  141. {
  142.   BASE_EXT_DECL
  143.   register ULONG  _res  __asm("d0");
  144.   register struct Library* a6 __asm("a6") = BASE_NAME;
  145.   register struct ClockData *a0 __asm("a0") = date;
  146.   __asm __volatile ("jsr a6@(-0x7e)"
  147.   : "=r" (_res)
  148.   : "r" (a6), "r" (a0)
  149.   : "a0","a1","d0","d1", "memory");
  150.   return _res;
  151. }
  152. static __inline void 
  153. FilterTagChanges (BASE_PAR_DECL struct TagItem *changeList,struct TagItem *originalList,unsigned long apply)
  154. {
  155.   BASE_EXT_DECL
  156.   register struct Library* a6 __asm("a6") = BASE_NAME;
  157.   register struct TagItem *a0 __asm("a0") = changeList;
  158.   register struct TagItem *a1 __asm("a1") = originalList;
  159.   register unsigned long d0 __asm("d0") = apply;
  160.   __asm __volatile ("jsr a6@(-0x36)"
  161.   : /* no output */
  162.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  163.   : "a0","a1","d0","d1", "memory");
  164. }
  165. static __inline ULONG 
  166. FilterTagItems (BASE_PAR_DECL struct TagItem *tagList,Tag *filterArray,unsigned long logic)
  167. {
  168.   BASE_EXT_DECL
  169.   register ULONG  _res  __asm("d0");
  170.   register struct Library* a6 __asm("a6") = BASE_NAME;
  171.   register struct TagItem *a0 __asm("a0") = tagList;
  172.   register Tag *a1 __asm("a1") = filterArray;
  173.   register unsigned long d0 __asm("d0") = logic;
  174.   __asm __volatile ("jsr a6@(-0x60)"
  175.   : "=r" (_res)
  176.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  177.   : "a0","a1","d0","d1", "memory");
  178.   return _res;
  179. }
  180. static __inline struct NamedObject *
  181. FindNamedObject (BASE_PAR_DECL struct NamedObject *namespace,STRPTR name,struct NamedObject *lastobject)
  182. {
  183.   BASE_EXT_DECL
  184.   register struct NamedObject * _res  __asm("d0");
  185.   register struct Library* a6 __asm("a6") = BASE_NAME;
  186.   register struct NamedObject *a0 __asm("a0") = namespace;
  187.   register STRPTR a1 __asm("a1") = name;
  188.   register struct NamedObject *a2 __asm("a2") = lastobject;
  189.   __asm __volatile ("jsr a6@(-0xf0)"
  190.   : "=r" (_res)
  191.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  192.   : "a0","a1","a2","d0","d1", "memory");
  193.   return _res;
  194. }
  195. static __inline struct TagItem *
  196. FindTagItem (BASE_PAR_DECL Tag tagVal,struct TagItem *tagList)
  197. {
  198.   BASE_EXT_DECL
  199.   register struct TagItem * _res  __asm("d0");
  200.   register struct Library* a6 __asm("a6") = BASE_NAME;
  201.   register Tag d0 __asm("d0") = tagVal;
  202.   register struct TagItem *a0 __asm("a0") = tagList;
  203.   __asm __volatile ("jsr a6@(-0x1e)"
  204.   : "=r" (_res)
  205.   : "r" (a6), "r" (d0), "r" (a0)
  206.   : "a0","a1","d0","d1", "memory");
  207.   return _res;
  208. }
  209. static __inline void 
  210. FreeNamedObject (BASE_PAR_DECL struct NamedObject *object)
  211. {
  212.   BASE_EXT_DECL
  213.   register struct Library* a6 __asm("a6") = BASE_NAME;
  214.   register struct NamedObject *a0 __asm("a0") = object;
  215.   __asm __volatile ("jsr a6@(-0xf6)"
  216.   : /* no output */
  217.   : "r" (a6), "r" (a0)
  218.   : "a0","a1","d0","d1", "memory");
  219. }
  220. static __inline void 
  221. FreeTagItems (BASE_PAR_DECL struct TagItem *tagList)
  222. {
  223.   BASE_EXT_DECL
  224.   register struct Library* a6 __asm("a6") = BASE_NAME;
  225.   register struct TagItem *a0 __asm("a0") = tagList;
  226.   __asm __volatile ("jsr a6@(-0x4e)"
  227.   : /* no output */
  228.   : "r" (a6), "r" (a0)
  229.   : "a0","a1","d0","d1", "memory");
  230. }
  231. static __inline ULONG 
  232. GetTagData (BASE_PAR_DECL Tag tagValue,unsigned long defaultVal,struct TagItem *tagList)
  233. {
  234.   BASE_EXT_DECL
  235.   register ULONG  _res  __asm("d0");
  236.   register struct Library* a6 __asm("a6") = BASE_NAME;
  237.   register Tag d0 __asm("d0") = tagValue;
  238.   register unsigned long d1 __asm("d1") = defaultVal;
  239.   register struct TagItem *a0 __asm("a0") = tagList;
  240.   __asm __volatile ("jsr a6@(-0x24)"
  241.   : "=r" (_res)
  242.   : "r" (a6), "r" (d0), "r" (d1), "r" (a0)
  243.   : "a0","a1","d0","d1", "memory");
  244.   return _res;
  245. }
  246. static __inline ULONG 
  247. GetUniqueID (BASE_PAR_DECL0)
  248. {
  249.   BASE_EXT_DECL
  250.   register ULONG  _res  __asm("d0");
  251.   register struct Library* a6 __asm("a6") = BASE_NAME;
  252.   __asm __volatile ("jsr a6@(-0x10e)"
  253.   : "=r" (_res)
  254.   : "r" (a6)
  255.   : "a0","a1","d0","d1", "memory");
  256.   return _res;
  257. }
  258. static __inline void 
  259. MapTags (BASE_PAR_DECL struct TagItem *tagList,struct TagItem *mapList,unsigned long mapType)
  260. {
  261.   BASE_EXT_DECL
  262.   register struct Library* a6 __asm("a6") = BASE_NAME;
  263.   register struct TagItem *a0 __asm("a0") = tagList;
  264.   register struct TagItem *a1 __asm("a1") = mapList;
  265.   register unsigned long d0 __asm("d0") = mapType;
  266.   __asm __volatile ("jsr a6@(-0x3c)"
  267.   : /* no output */
  268.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  269.   : "a0","a1","d0","d1", "memory");
  270. }
  271. static __inline STRPTR 
  272. NamedObjectName (BASE_PAR_DECL struct NamedObject *object)
  273. {
  274.   BASE_EXT_DECL
  275.   register STRPTR  _res  __asm("d0");
  276.   register struct Library* a6 __asm("a6") = BASE_NAME;
  277.   register struct NamedObject *a0 __asm("a0") = object;
  278.   __asm __volatile ("jsr a6@(-0xfc)"
  279.   : "=r" (_res)
  280.   : "r" (a6), "r" (a0)
  281.   : "a0","a1","d0","d1", "memory");
  282.   return _res;
  283. }
  284. static __inline struct TagItem *
  285. NextTagItem (BASE_PAR_DECL struct TagItem **tagListPtr)
  286. {
  287.   BASE_EXT_DECL
  288.   register struct TagItem * _res  __asm("d0");
  289.   register struct Library* a6 __asm("a6") = BASE_NAME;
  290.   register struct TagItem **a0 __asm("a0") = tagListPtr;
  291.   __asm __volatile ("jsr a6@(-0x30)"
  292.   : "=r" (_res)
  293.   : "r" (a6), "r" (a0)
  294.   : "a0","a1","d0","d1", "memory");
  295.   return _res;
  296. }
  297. static __inline ULONG 
  298. PackBoolTags (BASE_PAR_DECL unsigned long initialFlags,struct TagItem *tagList,struct TagItem *boolMap)
  299. {
  300.   BASE_EXT_DECL
  301.   register ULONG  _res  __asm("d0");
  302.   register struct Library* a6 __asm("a6") = BASE_NAME;
  303.   register unsigned long d0 __asm("d0") = initialFlags;
  304.   register struct TagItem *a0 __asm("a0") = tagList;
  305.   register struct TagItem *a1 __asm("a1") = boolMap;
  306.   __asm __volatile ("jsr a6@(-0x2a)"
  307.   : "=r" (_res)
  308.   : "r" (a6), "r" (d0), "r" (a0), "r" (a1)
  309.   : "a0","a1","d0","d1", "memory");
  310.   return _res;
  311. }
  312. static __inline ULONG 
  313. PackStructureTags (BASE_PAR_DECL APTR pack,ULONG *packtable,struct TagItem *tagList)
  314. {
  315.   BASE_EXT_DECL
  316.   register ULONG  _res  __asm("d0");
  317.   register struct Library* a6 __asm("a6") = BASE_NAME;
  318.   register APTR a0 __asm("a0") = pack;
  319.   register ULONG *a1 __asm("a1") = packtable;
  320.   register struct TagItem *a2 __asm("a2") = tagList;
  321.   __asm __volatile ("jsr a6@(-0xd2)"
  322.   : "=r" (_res)
  323.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  324.   : "a0","a1","a2","d0","d1", "memory");
  325.   return _res;
  326. }
  327. static __inline void 
  328. RefreshTagItemClones (BASE_PAR_DECL struct TagItem *clone,struct TagItem *original)
  329. {
  330.   BASE_EXT_DECL
  331.   register struct Library* a6 __asm("a6") = BASE_NAME;
  332.   register struct TagItem *a0 __asm("a0") = clone;
  333.   register struct TagItem *a1 __asm("a1") = original;
  334.   __asm __volatile ("jsr a6@(-0x54)"
  335.   : /* no output */
  336.   : "r" (a6), "r" (a0), "r" (a1)
  337.   : "a0","a1","d0","d1", "memory");
  338. }
  339. static __inline void 
  340. ReleaseNamedObject (BASE_PAR_DECL struct NamedObject *object)
  341. {
  342.   BASE_EXT_DECL
  343.   register struct Library* a6 __asm("a6") = BASE_NAME;
  344.   register struct NamedObject *a0 __asm("a0") = object;
  345.   __asm __volatile ("jsr a6@(-0x102)"
  346.   : /* no output */
  347.   : "r" (a6), "r" (a0)
  348.   : "a0","a1","d0","d1", "memory");
  349. }
  350. static __inline void 
  351. RemNamedObject (BASE_PAR_DECL struct NamedObject *object,struct Message *message)
  352. {
  353.   BASE_EXT_DECL
  354.   register struct Library* a6 __asm("a6") = BASE_NAME;
  355.   register struct NamedObject *a0 __asm("a0") = object;
  356.   register struct Message *a1 __asm("a1") = message;
  357.   __asm __volatile ("jsr a6@(-0x108)"
  358.   : /* no output */
  359.   : "r" (a6), "r" (a0), "r" (a1)
  360.   : "a0","a1","d0","d1", "memory");
  361. }
  362. static __inline LONG 
  363. SDivMod32 (BASE_PAR_DECL long dividend,long divisor)
  364. {
  365.   BASE_EXT_DECL
  366.   register LONG  _res  __asm("d0");
  367.   register struct Library* a6 __asm("a6") = BASE_NAME;
  368.   register long d0 __asm("d0") = dividend;
  369.   register long d1 __asm("d1") = divisor;
  370.   __asm __volatile ("jsr a6@(-0x96)"
  371.   : "=r" (_res)
  372.   : "r" (a6), "r" (d0), "r" (d1)
  373.   : "a0","a1","d0","d1", "memory");
  374.   return _res;
  375. }
  376. static __inline LONG 
  377. SMult32 (BASE_PAR_DECL long arg1,long arg2)
  378. {
  379.   BASE_EXT_DECL
  380.   register LONG  _res  __asm("d0");
  381.   register struct Library* a6 __asm("a6") = BASE_NAME;
  382.   register long d0 __asm("d0") = arg1;
  383.   register long d1 __asm("d1") = arg2;
  384.   __asm __volatile ("jsr a6@(-0x8a)"
  385.   : "=r" (_res)
  386.   : "r" (a6), "r" (d0), "r" (d1)
  387.   : "a0","a1","d0","d1", "memory");
  388.   return _res;
  389. }
  390. static __inline LONG 
  391. SMult64 (BASE_PAR_DECL long arg1,long arg2)
  392. {
  393.   BASE_EXT_DECL
  394.   register LONG  _res  __asm("d0");
  395.   register struct Library* a6 __asm("a6") = BASE_NAME;
  396.   register long d0 __asm("d0") = arg1;
  397.   register long d1 __asm("d1") = arg2;
  398.   __asm __volatile ("jsr a6@(-0xc6)"
  399.   : "=r" (_res)
  400.   : "r" (a6), "r" (d0), "r" (d1)
  401.   : "a0","a1","d0","d1", "memory");
  402.   return _res;
  403. }
  404. static __inline LONG 
  405. Stricmp (BASE_PAR_DECL STRPTR string1,STRPTR string2)
  406. {
  407.   BASE_EXT_DECL
  408.   register LONG  _res  __asm("d0");
  409.   register struct Library* a6 __asm("a6") = BASE_NAME;
  410.   register STRPTR a0 __asm("a0") = string1;
  411.   register STRPTR a1 __asm("a1") = string2;
  412.   __asm __volatile ("jsr a6@(-0xa2)"
  413.   : "=r" (_res)
  414.   : "r" (a6), "r" (a0), "r" (a1)
  415.   : "a0","a1","d0","d1", "memory");
  416.   return _res;
  417. }
  418. static __inline LONG 
  419. Strnicmp (BASE_PAR_DECL STRPTR string1,STRPTR string2,long length)
  420. {
  421.   BASE_EXT_DECL
  422.   register LONG  _res  __asm("d0");
  423.   register struct Library* a6 __asm("a6") = BASE_NAME;
  424.   register STRPTR a0 __asm("a0") = string1;
  425.   register STRPTR a1 __asm("a1") = string2;
  426.   register long d0 __asm("d0") = length;
  427.   __asm __volatile ("jsr a6@(-0xa8)"
  428.   : "=r" (_res)
  429.   : "r" (a6), "r" (a0), "r" (a1), "r" (d0)
  430.   : "a0","a1","d0","d1", "memory");
  431.   return _res;
  432. }
  433. static __inline BOOL 
  434. TagInArray (BASE_PAR_DECL Tag tagValue,Tag *tagArray)
  435. {
  436.   BASE_EXT_DECL
  437.   register BOOL  _res  __asm("d0");
  438.   register struct Library* a6 __asm("a6") = BASE_NAME;
  439.   register Tag d0 __asm("d0") = tagValue;
  440.   register Tag *a0 __asm("a0") = tagArray;
  441.   __asm __volatile ("jsr a6@(-0x5a)"
  442.   : "=r" (_res)
  443.   : "r" (a6), "r" (d0), "r" (a0)
  444.   : "a0","a1","d0","d1", "memory");
  445.   return _res;
  446. }
  447. static __inline UBYTE 
  448. ToLower (BASE_PAR_DECL unsigned long character)
  449. {
  450.   BASE_EXT_DECL
  451.   register UBYTE  _res  __asm("d0");
  452.   register struct Library* a6 __asm("a6") = BASE_NAME;
  453.   register unsigned long d0 __asm("d0") = character;
  454.   __asm __volatile ("jsr a6@(-0xb4)"
  455.   : "=r" (_res)
  456.   : "r" (a6), "r" (d0)
  457.   : "a0","a1","d0","d1", "memory");
  458.   return _res;
  459. }
  460. static __inline UBYTE 
  461. ToUpper (BASE_PAR_DECL unsigned long character)
  462. {
  463.   BASE_EXT_DECL
  464.   register UBYTE  _res  __asm("d0");
  465.   register struct Library* a6 __asm("a6") = BASE_NAME;
  466.   register unsigned long d0 __asm("d0") = character;
  467.   __asm __volatile ("jsr a6@(-0xae)"
  468.   : "=r" (_res)
  469.   : "r" (a6), "r" (d0)
  470.   : "a0","a1","d0","d1", "memory");
  471.   return _res;
  472. }
  473. static __inline ULONG 
  474. UDivMod32 (BASE_PAR_DECL unsigned long dividend,unsigned long divisor)
  475. {
  476.   BASE_EXT_DECL
  477.   register ULONG  _res  __asm("d0");
  478.   register struct Library* a6 __asm("a6") = BASE_NAME;
  479.   register unsigned long d0 __asm("d0") = dividend;
  480.   register unsigned long d1 __asm("d1") = divisor;
  481.   __asm __volatile ("jsr a6@(-0x9c)"
  482.   : "=r" (_res)
  483.   : "r" (a6), "r" (d0), "r" (d1)
  484.   : "a0","a1","d0","d1", "memory");
  485.   return _res;
  486. }
  487. static __inline ULONG 
  488. UMult32 (BASE_PAR_DECL unsigned long arg1,unsigned long arg2)
  489. {
  490.   BASE_EXT_DECL
  491.   register ULONG  _res  __asm("d0");
  492.   register struct Library* a6 __asm("a6") = BASE_NAME;
  493.   register unsigned long d0 __asm("d0") = arg1;
  494.   register unsigned long d1 __asm("d1") = arg2;
  495.   __asm __volatile ("jsr a6@(-0x90)"
  496.   : "=r" (_res)
  497.   : "r" (a6), "r" (d0), "r" (d1)
  498.   : "a0","a1","d0","d1", "memory");
  499.   return _res;
  500. }
  501. static __inline ULONG 
  502. UMult64 (BASE_PAR_DECL unsigned long arg1,unsigned long arg2)
  503. {
  504.   BASE_EXT_DECL
  505.   register ULONG  _res  __asm("d0");
  506.   register struct Library* a6 __asm("a6") = BASE_NAME;
  507.   register unsigned long d0 __asm("d0") = arg1;
  508.   register unsigned long d1 __asm("d1") = arg2;
  509.   __asm __volatile ("jsr a6@(-0xcc)"
  510.   : "=r" (_res)
  511.   : "r" (a6), "r" (d0), "r" (d1)
  512.   : "a0","a1","d0","d1", "memory");
  513.   return _res;
  514. }
  515. static __inline ULONG 
  516. UnpackStructureTags (BASE_PAR_DECL APTR pack,ULONG *packtable,struct TagItem *tagList)
  517. {
  518.   BASE_EXT_DECL
  519.   register ULONG  _res  __asm("d0");
  520.   register struct Library* a6 __asm("a6") = BASE_NAME;
  521.   register APTR a0 __asm("a0") = pack;
  522.   register ULONG *a1 __asm("a1") = packtable;
  523.   register struct TagItem *a2 __asm("a2") = tagList;
  524.   __asm __volatile ("jsr a6@(-0xd8)"
  525.   : "=r" (_res)
  526.   : "r" (a6), "r" (a0), "r" (a1), "r" (a2)
  527.   : "a0","a1","a2","d0","d1", "memory");
  528.   return _res;
  529. }
  530. #undef BASE_EXT_DECL
  531. #undef BASE_PAR_DECL
  532. #undef BASE_PAR_DECL0
  533. #undef BASE_NAME
  534.  
  535. __END_DECLS
  536.  
  537. #endif /* _INLINE_UTILITY_H */
  538.