#ifndef AROS_CONFIG_SASC_LIBCALL_H
#define AROS_CONFIG_SASC_LIBCALL_H
/* (C) 1995 AROS - The Amiga Replacement OS */

/******************************************************************************

    MODUL
	$Id: libcall.h 1.1 1995/11/05 22:33:50 digulla Exp digulla $

    DESCRIPTION
	This is the config file for libcalls for SAS/C. Read
	aros/libcall.h for details.

	This file declares the actual LH<x><y> macros where
	<x> is the number of parameters and <y> are flags.

******************************************************************************/

/* Includes */
#include <aros/lvo.h>

/* How to use registers in function declarations */
#if UseRegisterArgs
#   define D0	register __d0
#   define D1	register __d1
#   define D2	register __d2
#   define D3	register __d3
#   define D4	register __d4
#   define D5	register __d5
#   define D6	register __d6
#   define D7	register __d7
#   define A0	register __a0
#   define A1	register __a1
#   define A2	register __a2
#   define A3	register __a3
#   define A4	register __a4
#   define A5	register __a5
#   define A6	register __a6
#   define A7	register __a7
#   define __AROS_LIBCALL   __asm
#else
#   define D0
#   define D1
#   define D2
#   define D3
#   define D4
#   define D5
#   define D6
#   define D7
#   define A0
#   define A1
#   define A2
#   define A3
#   define A4
#   define A5
#   define A6
#   define A7
#   define __AROS_LIBCALL
#endif

#if LibBaseShouldBeAParameter
/* Header for functions that use LibBase */
#   define __AROS_LH_HEADER0(type,name,libname,basetype,basename) \
	type __AROS_LIBCALL libname ## _ ## name (A6 basetype basename
/* Header for functions that don't use Libbase */
#   define __AROS_LHI_HEADER0(type,name,libname) \
	type __AROS_LIBCALL libname ## _ ## name (
/* This is neccessary to expand things if they are a macros and to map
    arguments */
#   define __AROS_LH_HEADER(t,n,bt,bn,o,m)  __AROS_LH_HEADER0(t,n,m,bt,bn)
#   define __AROS_LHI_HEADER(t,n,bt,bn,o,m) __AROS_LHI_HEADER0(t,n,m)
/* EXT_DECL is empty */
#   define __AROS_BASE_EXT_DECL(bt,bn)

/* Special case: if there are no arguments, then there might be a
    void or not (depending on the fact whether the function uses LibBase
    or not). */
#   define __AROS_LH0(t,n,bt,bn,o,m)  __AROS_LH_HEADER(t,n,bt,bn,o,m))
#   define __AROS_LH_COMMA  ,
#else /* No Libbase as Parameter */
/* If the function doesn't want the LibBase as parameter, things
    are more simple */
#   define __AROS_LH_HEADER0(t,n,ln) \
	t __AROS_LIBCALL ln ## _ ## n (
#   define __AROS_LHI_HEADER0(t,n,ln) \
	t __AROS_LIBCALL ln ## _ ## n (
/* This is neccessary to expand things if they are a macros and to map
    arguments */
#   define __AROS_LH_HEADER(t,n,bt,bn,o,m)  __AROS_LH_HEADER0(t,n,m)
#   define __AROS_LHI_HEADER(t,n,bt,bn,o,m) __AROS_LHI_HEADER0(t,n,m)
/* This time, the LibBase is a global variable */
#   define __AROS_BASE_EXT_DECL(bt,bn)   extern bt bn;

/* Special case */
#   define __AROS_LH0(t,n,bt,bn,o,m) \
	__AROS_LH_HEADER(t,n,bt,bn,o,m)void)
#   define __AROS_LH_COMMA
#endif /* Libbase as parameter or not */

/* Entry and exit code for each function */
#define __AROS_FUNC_INIT    __AROS_BASE_EXT_DECL(__AROS_LIBRARY_TYPE,__AROS_LIBRARY_BASE)
#define __AROS_FUNC_EXIT    /* empty */

/* Declare an argument for a function */
#define __AROS_LA(t,p,r) r t p

/*
    Now the macros to declare with more/many parameters (upto 11)

    These Macros expand to different things when different options
    are used.

    The Function

	void AddHead (struct List * list, struct Node * node);

    has this header:

	__AROS_LH2I(void,AddHead,
		struct List*,list,A0,
		struct Node*,node,A1,
		struct ExecBase*,SysBase,40,Exec)

    since it has two parameters and ignores the LibBase (it works
    of exec is not properly initialized yet). The two parameters
    and the registers, they are passed in, are declared, the
    type and name of the LibBase, the LVO (in LVOs, ie. 1 is
    LibOpen) and the LibName.

    This becomes:

	void __asm Exec_AddHead (
		register __a0 struct List* list,
		register __a1 struct Node* node)

    in any case (since it ignores the LibBase). AddLibrary() on the
    other hand uses libbase and has this header:

	__AROS_LH1(void,AddLibrary,
		struct Library*,library,A1,
		struct ExecBase*,SysBase,66,Exec)

    This becomes:

	void __asm Exec_AddLibrary (
		register __a6 struct ExecBase* SysBase,
		register __a1 struct Library* library)

    is the Symbol LibBaseShouldBeAParameter is != 0 or

	void __asm Exec_AddLibrary (
		register __a1 struct Library* library)

    is it isn't defined or 0. In the latter case, "__AROS_EXT_DECL(bt,bn);"
    becomes "extern bt bn;" in the former "".

*/
#define __AROS_LH0I(t,n,bt,bn,o,m) \
    __AROS_LHI_HEADER(t,n,bt,bn,o,m)void)

#define  __AROS_LH1(t,n,a1,bt,bn,o,m) \
  __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1)
#define __AROS_LH1I(t,n,a1,bt,bn,o,m) \
 __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1)

#define   __AROS_LH2(t,n,a1,a2,bt,bn,o,m) \
   __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2)
#define __AROS_LH2I(t,n,a1,a2,bt,bn,o,m) \
 __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2)

#define   __AROS_LH3(t,n,a1,a2,a3,bt,bn,o,m) \
  __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2, a3)
#define  __AROS_LH3I(t,n,a1,a2,a3,bt,bn,o,m) \
 __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2, a3)

#define   __AROS_LH4(t,n,a1,a2,a3,a4,bt,bn,o,m) \
   __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2,a3,a4)
#define  __AROS_LH4I(t,n,a1,a2,a3,a4,bt,bn,o,m) \
  __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2,a3,a4)

#define   __AROS_LH5(t,n,a1,a2,a3,a4,a5,bt,bn,o,m) \
   __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2,a3,a4,a5)
#define  __AROS_LH5I(t,n,a1,a2,a3,a4,a5,bt,bn,o,m) \
  __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2,a3,a4,a5)

#define   __AROS_LH6(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,m) \
   __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2,a3,a4,a5,a6)
#define  __AROS_LH6I(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,m) \
  __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2,a3,a4,a5,a6)

#define   __AROS_LH7(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,m) \
   __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2,a3,a4,a5,a6,a7)
#define  __AROS_LH7I(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,m) \
  __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2,a3,a4,a5,a6,a7)

#define   __AROS_LH8(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,m) \
   __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2,a3,a4,a5,a6,a7,a8)
#define  __AROS_LH8I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,m) \
  __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2,a3,a4,a5,a6,a7,a8)

#define   __AROS_LH9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,m) \
   __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2,a3,a4,a5,a6,a7,a8,a9)
#define  __AROS_LH9I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,m) \
  __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2,a3,a4,a5,a6,a7,a8,a9)

#define  __AROS_LH10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,m) \
   __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)
#define __AROS_LH10I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,m) \
  __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2,a3,a4,a5,a6,a7,a8,a9,a10)

#define  __AROS_LH11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,m) \
   __AROS_LH_HEADER(t,n,bt,bn,o,m) __AROS_LH_COMMA a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)
#define __AROS_LH11I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,m) \
  __AROS_LHI_HEADER(t,n,bt,bn,o,m) a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11)

/*
    Now the macros to call lib functions with upto 11 parameters

    There are even more cases here, since we have two variables:

	1. Should we call functions over LVOs ?
	2. Should LibBase be a parameter ?

    Fortunately, we can merge all these cases in the header and need not
    define every macro 4 times.

    If we call AddLibrary(), it looks like this in the source:

	AddLibrary (mylib);

    This is in fact a macro

	#define AddLibrary(p1) \
	    __AROS_LC1(void,AddLibrary,
		__AROS_LCA(struct Library *,p1,A1),
		struct ExecBase*,SysBase,66,Exec)

    which expands into:

    Case 1: (No LVOs and no LibBase)

	Exec_AddLibrary (mylib);

    Case 2: (No LVOs but LibBase)

	Exec_AddLibrary (SysBase,mylib);

    Case 3: (LVOs and no LibBase)

	__AROS_LVO_CALL(SysBase,66,void (* __asm)
	    (register __a1 struct Library *)) (mylib);

    Case 4: (LVOs and LibBase)

	__AROS_LVO_CALL(SysBase,66,void (* __asm)
	    (register __a6 struct ExecBase *,
	    register __a1 struct Library *)) (SysBase,mylib);

*/
#if LibBaseShouldBeAParameter
#   define __AROS_LC_PAR_DECL(bt)  A6 bt,
#   define __AROS_LC_PAR_DECL0(bt) A6 bt
#   define __AROS_LC_PAR_USE(bn)   bn,
#   define __AROS_LC_PAR_USE0(bn)  bn
#else /* Libbase is no parameter */
#   define __AROS_LC_PAR_DECL(bt)
#   define __AROS_LC_PAR_DECL0(bt)  void
#   define __AROS_LC_PAR_USE(bn)
#   define __AROS_LC_PAR_USE0(bn)
#endif /* LibBase as parameter or not */

/*
    Another macro:

    __AROS_LC_HEADER(t,n,pd,bt,bn,o,m,p)

    t:	Return type
    n:	Name of the function
    pd: Parameter-list (types only)
    bt: Type of library (eg. struct ExecBase *)
    bn: Name of library base (eg. SysBase)
    o:	LVO
    m:	Name of library (eg. Exec)
    p:	Parameter-list (types and names)
*/
#if UseLVOs
#   if UseRegisterArgs
#	define __AROS_LC_HEADER(t,n,pd,bt,bn,o,m,p) \
	    __AROS_LVO_CALL(bn,o,t (* __asm)pd)p
#   else
#	define __AROS_LC_HEADER(t,n,pd,bt,bn,o,m,p) \
	    __AROS_LVO_CALL(bn,o,t (*)pd)p
#   endif
#else /* Don't use LVOs */
#   define __AROS_LC_HEADER(t,n,pd,bt,bn,o,m,p) \
	m ## _ ## n p
#endif /* LVOs or not */

/*
    Macros to extract parts of the arguments.

    __AROS_LCA() expands to its arguments
    __AROS_LCAET() expands to the type if the parameter only (including
	    the CPU register if neccessary)
    __AROS_LCAEP() expands to the name of the parameter only

    __AROS_LCA(int,a,D0)   -> int,a,D0
    __AROS_LCAET(int,a,D0) -> D0 int
    __AROS_LCAEP(int,a,D0) -> a
*/
#define __AROS_LCA(t,p,r)      t,p,r
#define __AROS_LCAET(t,p,r)     r t
#define __AROS_LCAEP(t,p,r)     p

#define __AROS_LC0(t,n,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL0(bt)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE0(bn)))
#define __AROS_LC0I(t,n,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (void),\
    bt,bn,o,m,\
    ())
#define __AROS_LC0P(t,n,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (void),\
    bt,bn,o,m,\
    ())
#define __AROS_LC0S(t,n,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (void),\
    bt,bn,o,m,\
    ())

#define __AROS_LC1(t,n,a1,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1)))
#define __AROS_LC1I(t,n,a1,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1)))
#define __AROS_LC1P(t,n,a1,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1)))

#define __AROS_LC2(t,n,a1,a2,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2)))
#define __AROS_LC2I(t,n,a1,a2,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2)))

#define __AROS_LC3(t,n,a1,a2,a3,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3)))
#define __AROS_LC3I(t,n,a1,a2,a3,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3)))

#define __AROS_LC4(t,n,a1,a2,a3,a4,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),\
	__AROS_LCAET(a4)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),\
	__AROS_LCAEP(a4)))
#define __AROS_LC4I(t,n,a1,a2,a3,a4,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),__AROS_LCAET(a4)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),__AROS_LCAEP(a4)))

#define __AROS_LC5(t,n,a1,a2,a3,a4,a5,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),\
	__AROS_LCAET(a4),__AROS_LCAET(a5)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),\
	__AROS_LCAEP(a4),__AROS_LCAEP(a5)))
#define __AROS_LC5I(t,n,a1,a2,a3,a4,a5,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),__AROS_LCAET(a4),\
	__AROS_LCAET(a5)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),__AROS_LCAEP(a4),\
	__AROS_LCAEP(a5)))

#define __AROS_LC6(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),\
	__AROS_LCAET(a4),__AROS_LCAET(a5),__AROS_LCAET(a6)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),\
	__AROS_LCAEP(a4),__AROS_LCAEP(a5),__AROS_LCAEP(a6)))
#define __AROS_LC6I(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),__AROS_LCAET(a4),\
	__AROS_LCAET(a5),__AROS_LCAET(a6)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),__AROS_LCAEP(a4),\
	__AROS_LCAEP(a5),__AROS_LCAEP(a6)))

#define __AROS_LC7(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),\
	__AROS_LCAET(a4),__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),\
	__AROS_LCAEP(a4),__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7)))
#define __AROS_LC7I(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),__AROS_LCAET(a4),\
	__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),__AROS_LCAEP(a4),\
	__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7)))

#define __AROS_LC8(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),\
	__AROS_LCAET(a4),__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7),\
	__AROS_LCAET(a8)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),\
	__AROS_LCAEP(a4),__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7),\
	__AROS_LCAEP(a8)))
#define __AROS_LC8I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),__AROS_LCAET(a4),\
	__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7),__AROS_LCAET(a8)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),__AROS_LCAEP(a4),\
	__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7),__AROS_LCAEP(a8)))

#define __AROS_LC9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),\
	__AROS_LCAET(a4),__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7),\
	__AROS_LCAET(a8),__AROS_LCAET(a9)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),\
	__AROS_LCAEP(a4),__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7),\
	__AROS_LCAEP(a8),__AROS_LCAEP(a9)))
#define __AROS_LC9I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),__AROS_LCAET(a4),\
	__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7),__AROS_LCAET(a8),\
	__AROS_LCAET(a9)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),__AROS_LCAEP(a4),\
	__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7),__AROS_LCAEP(a8),\
	__AROS_LCAEP(a9)))

#define __AROS_LC10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10, bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),\
	__AROS_LCAET(a4),__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7),\
	__AROS_LCAET(a8),__AROS_LCAET(a9),__AROS_LCAET(a10)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),\
	__AROS_LCAEP(a4),__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7),\
	__AROS_LCAEP(a8),__AROS_LCAEP(a9),__AROS_LCAEP(a10))
#define __AROS_LC10I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),__AROS_LCAET(a4),\
	__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7),__AROS_LCAET(a8),\
	__AROS_LCAET(a9),__AROS_LCAET(a10)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),__AROS_LCAEP(a4),\
	__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7),__AROS_LCAEP(a8),\
	__AROS_LCAEP(a9),__AROS_LCAEP(a10)))

#define __AROS_LC11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LC_PAR_DECL(bt) __AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),\
	__AROS_LCAET(a4),__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7),\
	__AROS_LCAET(a8),__AROS_LCAET(a9),__AROS_LCAET(a10),__AROS_LCAET(a11)),\
    bt,bn,o,m,\
    (__AROS_LC_PAR_USE(bn) __AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),\
	__AROS_LCAEP(a4),__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7),\
	__AROS_LCAEP(a8),__AROS_LCAEP(a9),__AROS_LCAEP(a10),__AROS_LCAEP(a11)))
#define __AROS_LC11I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,m) \
    __AROS_LC_HEADER(t,n,\
    (__AROS_LCAET(a1),__AROS_LCAET(a2),__AROS_LCAET(a3),__AROS_LCAET(a4),\
	__AROS_LCAET(a5),__AROS_LCAET(a6),__AROS_LCAET(a7),__AROS_LCAET(a8),\
	__AROS_LCAET(a9),__AROS_LCAET(a10),__AROS_LCAET(a11)),\
    bt,bn,o,m,\
    (__AROS_LCAEP(a1),__AROS_LCAEP(a2),__AROS_LCAEP(a3),__AROS_LCAEP(a4),\
	__AROS_LCAEP(a5),__AROS_LCAEP(a6),__AROS_LCAEP(a7),__AROS_LCAEP(a8),\
	__AROS_LCAEP(a9),__AROS_LCAEP(a10),__AROS_LCAEP(a11)))

/******************************************************************************
*****  ENDE aros/config/sasc/libcall.h
******************************************************************************/

#endif /* AROS_CONFIG_SASC_LIBCALL_H */
