home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / misc / emu / AROS_m68k_bin.lha / AROS / include / aros / asmcall.h < prev    next >
C/C++ Source or Header  |  1997-02-08  |  17KB  |  717 lines

  1. #ifndef AROS_ASMCALL_H
  2. #define AROS_ASMCALL_H
  3. /* (C) 1995-96 AROS - The Amiga Replacement OS */
  4.  
  5. /******************************************************************************
  6.  
  7.     MODUL
  8.     $Id: asmcall.h,v 1.1 1997/01/09 18:21:15 digulla Exp $
  9.  
  10.     DESCRIPTION
  11.     Some macros to build and call functions with registerized parameters on
  12.     the different compilers around. Usage:
  13.  
  14.     AROS_UFH<n><f>(type, name, type1,  name1, reg1, ...)
  15.     {
  16.         \* Function starts here. *\
  17.     }
  18.  
  19.     <n> - Number of arguments of the function (not including the
  20.         library base).
  21.  
  22.     <f> - 'I' means: Function ignores library base.
  23.         This is useful to get rid of warnings about unused arguments.
  24.  
  25.     type - Returntype of the function.
  26.  
  27.     name - Name of the function. A underscore '_' is prepended so that
  28.         following functions jump over the base vector and don't call
  29.         the function directly.
  30.  
  31.     type<i>, name<i>, reg<i> - Type, name and register for the
  32.         arguments. Register names are written uppercase because they
  33.         are preprocessor symbols.
  34.  
  35.     Example: Define a Exec compatible RemHead function.
  36.  
  37.     AROS_UFH1(struct Node *, RemHead,
  38.         AROS_UFHA(struct List *, list, A0)
  39.     )
  40.     {
  41.         struct Node *node;
  42.  
  43.         node=list->lh_Head;
  44.         if(node->ln_Succ==NULL)
  45.         return NULL;
  46.         Remove(node);
  47.         return node;
  48.     }
  49.  
  50. ******************************************************************************/
  51.  
  52. /* System-Specific things */
  53. #ifndef AROS_SYSTEM_H
  54. #   include <aros/system.h>
  55. #endif
  56.  
  57. #ifndef __typedef_VOID_FUNC
  58. #define __typedef_VOID_FUNC
  59. typedef void (*VOID_FUNC)();
  60. #endif
  61. #ifndef __typedef_LONG_FUNC
  62. #define __typedef_LONG_FUNC
  63. typedef long (*LONG_FUNC)();
  64. #endif
  65. #ifndef __typedef_ULONG_FUNC
  66. #define __typedef_ULONG_FUNC
  67. typedef unsigned long (*ULONG_FUNC)();
  68. #endif
  69.  
  70. #ifndef AROS_ASMSYMNAME
  71. #   define AROS_ASMSYMNAME(n)     n
  72. #endif
  73.  
  74. /* Function headers for user functions */
  75. #define AROS_UFH0(t,n) \
  76.     __AROS_UFH_PREFIX t n (void)
  77. #define AROS_UFH1(t,n,a1) \
  78.     __AROS_UFH_PREFIX t n (\
  79.     __AROS_UFHA(a1)\
  80.     )
  81. #define AROS_UFH2(t,n,a1,a2) \
  82.     __AROS_UFH_PREFIX t n (\
  83.     __AROS_UFHA(a1),\
  84.     __AROS_UFHA(a2)\
  85.     )
  86. #define AROS_UFH3(t,n,a1,a2,a3) \
  87.     __AROS_UFH_PREFIX t n (\
  88.     __AROS_UFHA(a1),\
  89.     __AROS_UFHA(a2),\
  90.     __AROS_UFHA(a3)\
  91.     )
  92. #define AROS_UFH4(t,n,a1,a2,a3,a4) \
  93.     __AROS_UFH_PREFIX t n (\
  94.     __AROS_UFHA(a1),\
  95.     __AROS_UFHA(a2),\
  96.     __AROS_UFHA(a3),\
  97.     __AROS_UFHA(a4)\
  98.     )
  99. #define AROS_UFH5(t,n,a1,a2,a3,a4,a5) \
  100.     __AROS_UFH_PREFIX t n (\
  101.     __AROS_UFHA(a1),\
  102.     __AROS_UFHA(a2),\
  103.     __AROS_UFHA(a3),\
  104.     __AROS_UFHA(a4),\
  105.     __AROS_UFHA(a5)\
  106.     )
  107. #define AROS_UFH6(t,n,a1,a2,a3,a4,a5,a6) \
  108.     __AROS_UFH_PREFIX t n (\
  109.     __AROS_UFHA(a1),\
  110.     __AROS_UFHA(a2),\
  111.     __AROS_UFHA(a3),\
  112.     __AROS_UFHA(a4),\
  113.     __AROS_UFHA(a5),\
  114.     __AROS_UFHA(a6)\
  115.     )
  116. #define AROS_UFH7(t,n,a1,a2,a3,a4,a5,a6,a7) \
  117.     __AROS_UFH_PREFIX t n (\
  118.     __AROS_UFHA(a1),\
  119.     __AROS_UFHA(a2),\
  120.     __AROS_UFHA(a3),\
  121.     __AROS_UFHA(a4),\
  122.     __AROS_UFHA(a5),\
  123.     __AROS_UFHA(a6),\
  124.     __AROS_UFHA(a7)\
  125.     )
  126. #define AROS_UFH8(t,n,a1,a2,a3,a4,a5,a6,a7,a8) \
  127.     __AROS_UFH_PREFIX t n (\
  128.     __AROS_UFHA(a1),\
  129.     __AROS_UFHA(a2),\
  130.     __AROS_UFHA(a3),\
  131.     __AROS_UFHA(a4),\
  132.     __AROS_UFHA(a5),\
  133.     __AROS_UFHA(a6),\
  134.     __AROS_UFHA(a7),\
  135.     __AROS_UFHA(a8)\
  136.     )
  137. #define AROS_UFH9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9) \
  138.     __AROS_UFH_PREFIX t n (\
  139.     __AROS_UFHA(a1),\
  140.     __AROS_UFHA(a2),\
  141.     __AROS_UFHA(a3),\
  142.     __AROS_UFHA(a4),\
  143.     __AROS_UFHA(a5),\
  144.     __AROS_UFHA(a6),\
  145.     __AROS_UFHA(a7),\
  146.     __AROS_UFHA(a8),\
  147.     __AROS_UFHA(a9)\
  148.     )
  149. #define AROS_UFH10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) \
  150.     __AROS_UFH_PREFIX t n (\
  151.     __AROS_UFHA(a1),\
  152.     __AROS_UFHA(a2),\
  153.     __AROS_UFHA(a3),\
  154.     __AROS_UFHA(a4),\
  155.     __AROS_UFHA(a5),\
  156.     __AROS_UFHA(a6),\
  157.     __AROS_UFHA(a7),\
  158.     __AROS_UFHA(a8),\
  159.     __AROS_UFHA(a9),\
  160.     __AROS_UFHA(a10)\
  161.     )
  162. #define AROS_UFH11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) \
  163.     __AROS_UFH_PREFIX t n (\
  164.     __AROS_UFHA(a1),\
  165.     __AROS_UFHA(a2),\
  166.     __AROS_UFHA(a3),\
  167.     __AROS_UFHA(a4),\
  168.     __AROS_UFHA(a5),\
  169.     __AROS_UFHA(a6),\
  170.     __AROS_UFHA(a7),\
  171.     __AROS_UFHA(a8),\
  172.     __AROS_UFHA(a9),\
  173.     __AROS_UFHA(a10),\
  174.     __AROS_UFHA(a11)\
  175.     )
  176. #define AROS_UFH12(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) \
  177.     __AROS_UFH_PREFIX t n (\
  178.     __AROS_UFHA(a1),\
  179.     __AROS_UFHA(a2),\
  180.     __AROS_UFHA(a3),\
  181.     __AROS_UFHA(a4),\
  182.     __AROS_UFHA(a5),\
  183.     __AROS_UFHA(a6),\
  184.     __AROS_UFHA(a7),\
  185.     __AROS_UFHA(a8),\
  186.     __AROS_UFHA(a9),\
  187.     __AROS_UFHA(a10),\
  188.     __AROS_UFHA(a11),\
  189.     __AROS_UFHA(a12)\
  190.     )
  191. #define AROS_UFH13(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) \
  192.     __AROS_UFH_PREFIX t n (\
  193.     __AROS_UFHA(a1),\
  194.     __AROS_UFHA(a2),\
  195.     __AROS_UFHA(a3),\
  196.     __AROS_UFHA(a4),\
  197.     __AROS_UFHA(a5),\
  198.     __AROS_UFHA(a6),\
  199.     __AROS_UFHA(a7),\
  200.     __AROS_UFHA(a8),\
  201.     __AROS_UFHA(a9),\
  202.     __AROS_UFHA(a10),\
  203.     __AROS_UFHA(a11),\
  204.     __AROS_UFHA(a12),\
  205.     __AROS_UFHA(a13)\
  206.     )
  207. #define AROS_UFH14(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) \
  208.     __AROS_UFH_PREFIX t n (\
  209.     __AROS_UFHA(a1),\
  210.     __AROS_UFHA(a2),\
  211.     __AROS_UFHA(a3),\
  212.     __AROS_UFHA(a4),\
  213.     __AROS_UFHA(a5),\
  214.     __AROS_UFHA(a6),\
  215.     __AROS_UFHA(a7),\
  216.     __AROS_UFHA(a8),\
  217.     __AROS_UFHA(a9),\
  218.     __AROS_UFHA(a10),\
  219.     __AROS_UFHA(a11),\
  220.     __AROS_UFHA(a12),\
  221.     __AROS_UFHA(a13),\
  222.     __AROS_UFHA(a14)\
  223.     )
  224. #define AROS_UFH15(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) \
  225.     __AROS_UFH_PREFIX t n (\
  226.     __AROS_UFHA(a1),\
  227.     __AROS_UFHA(a2),\
  228.     __AROS_UFHA(a3),\
  229.     __AROS_UFHA(a4),\
  230.     __AROS_UFHA(a5),\
  231.     __AROS_UFHA(a6),\
  232.     __AROS_UFHA(a7),\
  233.     __AROS_UFHA(a8),\
  234.     __AROS_UFHA(a9),\
  235.     __AROS_UFHA(a10),\
  236.     __AROS_UFHA(a11),\
  237.     __AROS_UFHA(a12),\
  238.     __AROS_UFHA(a13),\
  239.     __AROS_UFHA(a14),\
  240.     __AROS_UFHA(a15)\
  241.     )
  242.  
  243. /* Call a user function */
  244. #define AROS_UFC0(t,n) \
  245.     (((__AROS_UFC_PREFIX t(*)(void))n)())
  246. #define AROS_UFC1(t,n,a1) \
  247.     (((__AROS_UFC_PREFIX t(*)(\
  248.     __AROS_UFPA(a1)\
  249.     ))n)(\
  250.     __AROS_UFCA(a1)\
  251.     ))
  252. #define AROS_UFC2(t,n,a1,a2) \
  253.     (((__AROS_UFC_PREFIX t(*)(\
  254.     __AROS_UFPA(a1),\
  255.     __AROS_UFPA(a2)\
  256.     ))n)(\
  257.     __AROS_UFCA(a1),\
  258.     __AROS_UFCA(a2)\
  259.     ))
  260. #define AROS_UFC3(t,n,a1,a2,a3) \
  261.     (((__AROS_UFC_PREFIX t(*)(\
  262.     __AROS_UFPA(a1),\
  263.     __AROS_UFPA(a2),\
  264.     __AROS_UFPA(a3)\
  265.     ))n)(\
  266.     __AROS_UFCA(a1),\
  267.     __AROS_UFCA(a2),\
  268.     __AROS_UFCA(a3)\
  269.     ))
  270. #define AROS_UFC4(t,n,a1,a2,a3,a4) \
  271.     (((__AROS_UFC_PREFIX t(*)(\
  272.     __AROS_UFPA(a1),\
  273.     __AROS_UFPA(a2),\
  274.     __AROS_UFPA(a3),\
  275.     __AROS_UFPA(a4)\
  276.     ))n)(\
  277.     __AROS_UFCA(a1),\
  278.     __AROS_UFCA(a2),\
  279.     __AROS_UFCA(a3),\
  280.     __AROS_UFCA(a4)\
  281.     ))
  282. #define AROS_UFC5(t,n,a1,a2,a3,a4,a5) \
  283.     (((__AROS_UFC_PREFIX t(*)(\
  284.     __AROS_UFPA(a1),\
  285.     __AROS_UFPA(a2),\
  286.     __AROS_UFPA(a3),\
  287.     __AROS_UFPA(a4),\
  288.     __AROS_UFPA(a5)\
  289.     ))n)(\
  290.     __AROS_UFCA(a1),\
  291.     __AROS_UFCA(a2),\
  292.     __AROS_UFCA(a3),\
  293.     __AROS_UFCA(a4),\
  294.     __AROS_UFCA(a5)\
  295.     ))
  296. #define AROS_UFC6(t,n,a1,a2,a3,a4,a5,a6) \
  297.     (((__AROS_UFC_PREFIX t(*)(\
  298.     __AROS_UFPA(a1),\
  299.     __AROS_UFPA(a2),\
  300.     __AROS_UFPA(a3),\
  301.     __AROS_UFPA(a4),\
  302.     __AROS_UFPA(a5),\
  303.     __AROS_UFPA(a6)\
  304.     ))n)(\
  305.     __AROS_UFCA(a1),\
  306.     __AROS_UFCA(a2),\
  307.     __AROS_UFCA(a3),\
  308.     __AROS_UFCA(a4),\
  309.     __AROS_UFCA(a5),\
  310.     __AROS_UFCA(a6)\
  311.     ))
  312. #define AROS_UFC7(t,n,a1,a2,a3,a4,a5,a6,a7) \
  313.     (((__AROS_UFC_PREFIX t(*)(\
  314.     __AROS_UFPA(a1),\
  315.     __AROS_UFPA(a2),\
  316.     __AROS_UFPA(a3),\
  317.     __AROS_UFPA(a4),\
  318.     __AROS_UFPA(a5),\
  319.     __AROS_UFPA(a6),\
  320.     __AROS_UFPA(a7)\
  321.     ))n)(\
  322.     __AROS_UFCA(a1),\
  323.     __AROS_UFCA(a2),\
  324.     __AROS_UFCA(a3),\
  325.     __AROS_UFCA(a4),\
  326.     __AROS_UFCA(a5),\
  327.     __AROS_UFCA(a6),\
  328.     __AROS_UFCA(a7)\
  329.     ))
  330. #define AROS_UFC8(t,n,a1,a2,a3,a4,a5,a6,a7,a8) \
  331.     (((__AROS_UFC_PREFIX t(*)(\
  332.     __AROS_UFPA(a1),\
  333.     __AROS_UFPA(a2),\
  334.     __AROS_UFPA(a3),\
  335.     __AROS_UFPA(a4),\
  336.     __AROS_UFPA(a5),\
  337.     __AROS_UFPA(a6),\
  338.     __AROS_UFPA(a7),\
  339.     __AROS_UFPA(a8)\
  340.     ))n)(\
  341.     __AROS_UFCA(a1),\
  342.     __AROS_UFCA(a2),\
  343.     __AROS_UFCA(a3),\
  344.     __AROS_UFCA(a4),\
  345.     __AROS_UFCA(a5),\
  346.     __AROS_UFCA(a6),\
  347.     __AROS_UFCA(a7),\
  348.     __AROS_UFCA(a8)\
  349.     ))
  350. #define AROS_UFC9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9) \
  351.     (((__AROS_UFC_PREFIX t(*)(\
  352.     __AROS_UFPA(a1),\
  353.     __AROS_UFPA(a2),\
  354.     __AROS_UFPA(a3),\
  355.     __AROS_UFPA(a4),\
  356.     __AROS_UFPA(a5),\
  357.     __AROS_UFPA(a6),\
  358.     __AROS_UFPA(a7),\
  359.     __AROS_UFPA(a8),\
  360.     __AROS_UFPA(a9)\
  361.     ))n)(\
  362.     __AROS_UFCA(a1),\
  363.     __AROS_UFCA(a2),\
  364.     __AROS_UFCA(a3),\
  365.     __AROS_UFCA(a4),\
  366.     __AROS_UFCA(a5),\
  367.     __AROS_UFCA(a6),\
  368.     __AROS_UFCA(a7),\
  369.     __AROS_UFCA(a8),\
  370.     __AROS_UFCA(a9)\
  371.     ))
  372. #define AROS_UFC10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) \
  373.     (((__AROS_UFC_PREFIX t(*)(\
  374.     __AROS_UFPA(a1),\
  375.     __AROS_UFPA(a2),\
  376.     __AROS_UFPA(a3),\
  377.     __AROS_UFPA(a4),\
  378.     __AROS_UFPA(a5),\
  379.     __AROS_UFPA(a6),\
  380.     __AROS_UFPA(a7),\
  381.     __AROS_UFPA(a8),\
  382.     __AROS_UFPA(a9),\
  383.     __AROS_UFPA(a10)\
  384.     ))n)(\
  385.     __AROS_UFCA(a1),\
  386.     __AROS_UFCA(a2),\
  387.     __AROS_UFCA(a3),\
  388.     __AROS_UFCA(a4),\
  389.     __AROS_UFCA(a5),\
  390.     __AROS_UFCA(a6),\
  391.     __AROS_UFCA(a7),\
  392.     __AROS_UFCA(a8),\
  393.     __AROS_UFCA(a9),\
  394.     __AROS_UFCA(a10)\
  395.     ))
  396. #define AROS_UFC11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) \
  397.     (((__AROS_UFC_PREFIX t(*)(\
  398.     __AROS_UFPA(a1),\
  399.     __AROS_UFPA(a2),\
  400.     __AROS_UFPA(a3),\
  401.     __AROS_UFPA(a4),\
  402.     __AROS_UFPA(a5),\
  403.     __AROS_UFPA(a6),\
  404.     __AROS_UFPA(a7),\
  405.     __AROS_UFPA(a8),\
  406.     __AROS_UFPA(a9),\
  407.     __AROS_UFPA(a10),\
  408.     __AROS_UFPA(a11)\
  409.     ))n)(\
  410.     __AROS_UFCA(a1),\
  411.     __AROS_UFCA(a2),\
  412.     __AROS_UFCA(a3),\
  413.     __AROS_UFCA(a4),\
  414.     __AROS_UFCA(a5),\
  415.     __AROS_UFCA(a6),\
  416.     __AROS_UFCA(a7),\
  417.     __AROS_UFCA(a8),\
  418.     __AROS_UFCA(a9),\
  419.     __AROS_UFCA(a10),\
  420.     __AROS_UFCA(a11)\
  421.     ))
  422. #define AROS_UFC12(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) \
  423.     (((__AROS_UFC_PREFIX t(*)(\
  424.     __AROS_UFPA(a1),\
  425.     __AROS_UFPA(a2),\
  426.     __AROS_UFPA(a3),\
  427.     __AROS_UFPA(a4),\
  428.     __AROS_UFPA(a5),\
  429.     __AROS_UFPA(a6),\
  430.     __AROS_UFPA(a7),\
  431.     __AROS_UFPA(a8),\
  432.     __AROS_UFPA(a9),\
  433.     __AROS_UFPA(a10),\
  434.     __AROS_UFPA(a11),\
  435.     __AROS_UFPA(a12)\
  436.     ))n)(\
  437.     __AROS_UFCA(a1),\
  438.     __AROS_UFCA(a2),\
  439.     __AROS_UFCA(a3),\
  440.     __AROS_UFCA(a4),\
  441.     __AROS_UFCA(a5),\
  442.     __AROS_UFCA(a6),\
  443.     __AROS_UFCA(a7),\
  444.     __AROS_UFCA(a8),\
  445.     __AROS_UFCA(a9),\
  446.     __AROS_UFCA(a10),\
  447.     __AROS_UFCA(a11),\
  448.     __AROS_UFCA(a12)\
  449.     ))
  450. #define AROS_UFC13(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) \
  451.     (((__AROS_UFC_PREFIX t(*)(\
  452.     __AROS_UFPA(a1),\
  453.     __AROS_UFPA(a2),\
  454.     __AROS_UFPA(a3),\
  455.     __AROS_UFPA(a4),\
  456.     __AROS_UFPA(a5),\
  457.     __AROS_UFPA(a6),\
  458.     __AROS_UFPA(a7),\
  459.     __AROS_UFPA(a8),\
  460.     __AROS_UFPA(a9),\
  461.     __AROS_UFPA(a10),\
  462.     __AROS_UFPA(a11),\
  463.     __AROS_UFPA(a12),\
  464.     __AROS_UFPA(a13)\
  465.     ))n)(\
  466.     __AROS_UFCA(a1),\
  467.     __AROS_UFCA(a2),\
  468.     __AROS_UFCA(a3),\
  469.     __AROS_UFCA(a4),\
  470.     __AROS_UFCA(a5),\
  471.     __AROS_UFCA(a6),\
  472.     __AROS_UFCA(a7),\
  473.     __AROS_UFCA(a8),\
  474.     __AROS_UFCA(a9),\
  475.     __AROS_UFCA(a10),\
  476.     __AROS_UFCA(a11),\
  477.     __AROS_UFCA(a12),\
  478.     __AROS_UFCA(a13)\
  479.     ))
  480. #define AROS_UFC14(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) \
  481.     (((__AROS_UFC_PREFIX t(*)(\
  482.     __AROS_UFPA(a1),\
  483.     __AROS_UFPA(a2),\
  484.     __AROS_UFPA(a3),\
  485.     __AROS_UFPA(a4),\
  486.     __AROS_UFPA(a5),\
  487.     __AROS_UFPA(a6),\
  488.     __AROS_UFPA(a7),\
  489.     __AROS_UFPA(a8),\
  490.     __AROS_UFPA(a9),\
  491.     __AROS_UFPA(a10),\
  492.     __AROS_UFPA(a11),\
  493.     __AROS_UFPA(a12),\
  494.     __AROS_UFPA(a13),\
  495.     __AROS_UFPA(a14)\
  496.     ))n)(\
  497.     __AROS_UFCA(a1),\
  498.     __AROS_UFCA(a2),\
  499.     __AROS_UFCA(a3),\
  500.     __AROS_UFCA(a4),\
  501.     __AROS_UFCA(a5),\
  502.     __AROS_UFCA(a6),\
  503.     __AROS_UFCA(a7),\
  504.     __AROS_UFCA(a8),\
  505.     __AROS_UFCA(a9),\
  506.     __AROS_UFCA(a10),\
  507.     __AROS_UFCA(a11),\
  508.     __AROS_UFCA(a12),\
  509.     __AROS_UFCA(a13),\
  510.     __AROS_UFCA(a14)\
  511.     ))
  512. #define AROS_UFC15(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) \
  513.     (((__AROS_UFC_PREFIX t(*)(\
  514.     __AROS_UFPA(a1),\
  515.     __AROS_UFPA(a2),\
  516.     __AROS_UFPA(a3),\
  517.     __AROS_UFPA(a4),\
  518.     __AROS_UFPA(a5),\
  519.     __AROS_UFPA(a6),\
  520.     __AROS_UFPA(a7),\
  521.     __AROS_UFPA(a8),\
  522.     __AROS_UFPA(a9),\
  523.     __AROS_UFPA(a10),\
  524.     __AROS_UFPA(a11),\
  525.     __AROS_UFPA(a12),\
  526.     __AROS_UFPA(a13),\
  527.     __AROS_UFPA(a14),\
  528.     __AROS_UFPA(a15)\
  529.     ))n)(\
  530.     __AROS_UFCA(a1),\
  531.     __AROS_UFCA(a2),\
  532.     __AROS_UFCA(a3),\
  533.     __AROS_UFCA(a4),\
  534.     __AROS_UFCA(a5),\
  535.     __AROS_UFCA(a6),\
  536.     __AROS_UFCA(a7),\
  537.     __AROS_UFCA(a8),\
  538.     __AROS_UFCA(a9),\
  539.     __AROS_UFCA(a10),\
  540.     __AROS_UFCA(a11),\
  541.     __AROS_UFCA(a12),\
  542.     __AROS_UFCA(a13),\
  543.     __AROS_UFCA(a14),\
  544.     __AROS_UFCA(a15)\
  545.     ))
  546.  
  547. /* Prototypes for user functions */
  548. #   define AROS_UFP0(t,n) \
  549.     __AROS_UFP_PREFIX t n (void)
  550. #   define AROS_UFP1(t,n,a1) \
  551.     __AROS_UFP_PREFIX t n (\
  552.     __AROS_UFPA(a1))
  553. #   define AROS_UFP2(t,n,a1,a2) \
  554.     __AROS_UFP_PREFIX t n (\
  555.     __AROS_UFPA(a1),\
  556.     __AROS_UFPA(a2))
  557. #   define AROS_UFP3(t,n,a1,a2,a3) \
  558.     __AROS_UFP_PREFIX t n (\
  559.     __AROS_UFPA(a1),\
  560.     __AROS_UFPA(a2),\
  561.     __AROS_UFPA(a3))
  562. #   define AROS_UFP4(t,n,a1,a2,a3,a4) \
  563.     __AROS_UFP_PREFIX t n (\
  564.     __AROS_UFPA(a1),\
  565.     __AROS_UFPA(a2),\
  566.     __AROS_UFPA(a3),\
  567.     __AROS_UFPA(a4))
  568. #   define AROS_UFP5(t,n,a1,a2,a3,a4,a5) \
  569.     __AROS_UFP_PREFIX t n (\
  570.     __AROS_UFPA(a1),\
  571.     __AROS_UFPA(a2),\
  572.     __AROS_UFPA(a3),\
  573.     __AROS_UFPA(a4),\
  574.     __AROS_UFPA(a5))
  575. #   define AROS_UFP6(t,n,a1,a2,a3,a4,a5,a6) \
  576.     __AROS_UFP_PREFIX t n (\
  577.     __AROS_UFPA(a1),\
  578.     __AROS_UFPA(a2),\
  579.     __AROS_UFPA(a3),\
  580.     __AROS_UFPA(a4),\
  581.     __AROS_UFPA(a5),\
  582.     __AROS_UFPA(a6))
  583. #   define AROS_UFP7(t,n,a1,a2,a3,a4,a5,a6,a7) \
  584.     __AROS_UFP_PREFIX t n (\
  585.     __AROS_UFPA(a1),\
  586.     __AROS_UFPA(a2),\
  587.     __AROS_UFPA(a3),\
  588.     __AROS_UFPA(a4),\
  589.     __AROS_UFPA(a5),\
  590.     __AROS_UFPA(a6),\
  591.     __AROS_UFPA(a7))
  592. #   define AROS_UFP8(t,n,a1,a2,a3,a4,a5,a6,a7,a8) \
  593.     __AROS_UFP_PREFIX t n (\
  594.     __AROS_UFPA(a1),\
  595.     __AROS_UFPA(a2),\
  596.     __AROS_UFPA(a3),\
  597.     __AROS_UFPA(a4),\
  598.     __AROS_UFPA(a5),\
  599.     __AROS_UFPA(a6),\
  600.     __AROS_UFPA(a7),\
  601.     __AROS_UFPA(a8))
  602. #   define AROS_UFP9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9) \
  603.     __AROS_UFP_PREFIX t n (\
  604.     __AROS_UFPA(a1),\
  605.     __AROS_UFPA(a2),\
  606.     __AROS_UFPA(a3),\
  607.     __AROS_UFPA(a4),\
  608.     __AROS_UFPA(a5),\
  609.     __AROS_UFPA(a6),\
  610.     __AROS_UFPA(a7),\
  611.     __AROS_UFPA(a8),\
  612.     __AROS_UFPA(a9))
  613. #   define AROS_UFP10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10) \
  614.     __AROS_UFP_PREFIX t n (\
  615.     __AROS_UFPA(a1),\
  616.     __AROS_UFPA(a2),\
  617.     __AROS_UFPA(a3),\
  618.     __AROS_UFPA(a4),\
  619.     __AROS_UFPA(a5),\
  620.     __AROS_UFPA(a6),\
  621.     __AROS_UFPA(a7),\
  622.     __AROS_UFPA(a8),\
  623.     __AROS_UFPA(a9),\
  624.     __AROS_UFPA(a10))
  625. #   define AROS_UFP11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11) \
  626.     __AROS_UFP_PREFIX t n (\
  627.     __AROS_UFPA(a1),\
  628.     __AROS_UFPA(a2),\
  629.     __AROS_UFPA(a3),\
  630.     __AROS_UFPA(a4),\
  631.     __AROS_UFPA(a5),\
  632.     __AROS_UFPA(a6),\
  633.     __AROS_UFPA(a7),\
  634.     __AROS_UFPA(a8),\
  635.     __AROS_UFPA(a9),\
  636.     __AROS_UFPA(a10),\
  637.     __AROS_UFPA(a11))
  638. #   define AROS_UFP12(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12) \
  639.     __AROS_UFP_PREFIX t n (\
  640.     __AROS_UFPA(a1),\
  641.     __AROS_UFPA(a2),\
  642.     __AROS_UFPA(a3),\
  643.     __AROS_UFPA(a4),\
  644.     __AROS_UFPA(a5),\
  645.     __AROS_UFPA(a6),\
  646.     __AROS_UFPA(a7),\
  647.     __AROS_UFPA(a8),\
  648.     __AROS_UFPA(a9),\
  649.     __AROS_UFPA(a10),\
  650.     __AROS_UFPA(a11),\
  651.     __AROS_UFPA(a12))
  652. #   define AROS_UFP13(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13) \
  653.     __AROS_UFP_PREFIX t n (\
  654.     __AROS_UFPA(a1),\
  655.     __AROS_UFPA(a2),\
  656.     __AROS_UFPA(a3),\
  657.     __AROS_UFPA(a4),\
  658.     __AROS_UFPA(a5),\
  659.     __AROS_UFPA(a6),\
  660.     __AROS_UFPA(a7),\
  661.     __AROS_UFPA(a8),\
  662.     __AROS_UFPA(a9),\
  663.     __AROS_UFPA(a10),\
  664.     __AROS_UFPA(a11),\
  665.     __AROS_UFPA(a12),\
  666.     __AROS_UFPA(a13))
  667. #   define AROS_UFP14(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14) \
  668.     __AROS_UFP_PREFIX t n (\
  669.     __AROS_UFPA(a1),\
  670.     __AROS_UFPA(a2),\
  671.     __AROS_UFPA(a3),\
  672.     __AROS_UFPA(a4),\
  673.     __AROS_UFPA(a5),\
  674.     __AROS_UFPA(a6),\
  675.     __AROS_UFPA(a7),\
  676.     __AROS_UFPA(a8),\
  677.     __AROS_UFPA(a9),\
  678.     __AROS_UFPA(a10),\
  679.     __AROS_UFPA(a11),\
  680.     __AROS_UFPA(a12),\
  681.     __AROS_UFPA(a13),\
  682.     __AROS_UFPA(a14))
  683. #   define AROS_UFP15(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15) \
  684.     __AROS_UFP_PREFIX t n (\
  685.     __AROS_UFPA(a1),\
  686.     __AROS_UFPA(a2),\
  687.     __AROS_UFPA(a3),\
  688.     __AROS_UFPA(a4),\
  689.     __AROS_UFPA(a5),\
  690.     __AROS_UFPA(a6),\
  691.     __AROS_UFPA(a7),\
  692.     __AROS_UFPA(a8),\
  693.     __AROS_UFPA(a9),\
  694.     __AROS_UFPA(a10),\
  695.     __AROS_UFPA(a11),\
  696.     __AROS_UFPA(a12),\
  697.     __AROS_UFPA(a13),\
  698.     __AROS_UFPA(a14),\
  699.     __AROS_UFPA(a15))
  700.  
  701. #define AROS_UFHA(type,name,reg)    type,name,reg
  702. #define AROS_UFPA(type,name,reg)    type,name,reg
  703. #define AROS_UFCA(type,name,reg)    type,name,reg
  704.  
  705. #ifndef AROS_USERFUNC_INIT
  706. #   define AROS_USERFUNC_INIT {
  707. #endif
  708. #ifndef AROS_USERFUNC_EXIT
  709. #   define AROS_USERFUNC_EXIT }
  710. #endif
  711.  
  712. /******************************************************************************
  713. *****  ENDE aros/asmcall.h
  714. ******************************************************************************/
  715.  
  716. #endif /* AROS_ASMCALL_H */
  717.