2 Copyright © 1995-2006, The AROS Development Team. All rights reserved.
10 /******************************************************************************
16 Some macros to build functions with registerized parameters on the
17 different compilers around. Usage:
19 AROS_LH<n><f>(type, name, type1, name1, reg1, ...)
21 \* Function starts here. *\
24 <n> - Number of arguments of the function (not including the
27 <f> - 'I' means: Function ignores library base.
28 This is useful to get rid of warnings about unused arguments.
30 type - Returntype of the function.
32 name - Name of the function. A underscore '_' is prepended so that
33 following functions jump over the base vector and don't call
34 the function directly.
36 type<i>, name<i>, reg<i> - Type, name and register for the
37 arguments. Register names are written uppercase because they
38 are preprocessor symbols.
40 Example: Define a Exec compatible RemHead function.
42 AROS_LH1I(struct Node *, RemHead,
43 struct List *, list, A0,
44 struct ExecBase, SysBase, 43, Exec)
46 // Hier *keine* ";" !!
48 // Das ist eigentlich nicht notwendig, da die Funktion
49 // SysBase nicht verwendet, aber ist ja nur ein Demo :-)
50 AROS_LIBBASE_EXT_DECL(struct ExecBase, SysBase)
55 if(node->ln_Succ==NULL)
64 ******************************************************************************/
66 #include <aros/config.h>
68 #define AROS_LIBFUNC_INIT {
69 #define AROS_LIBFUNC_EXIT }}
70 #define AROS_LIBBASE_EXT_DECL(type, base)
72 /* System-Specific things */
74 # include <aros/system.h>
78 # include <aros/abi.h>
81 #ifndef __typedef_VOID_FUNC
82 #define __typedef_VOID_FUNC
83 typedef void (*VOID_FUNC
)(void);
85 #ifndef __typedef_LONG_FUNC
86 #define __typedef_LONG_FUNC
87 typedef long (*LONG_FUNC
)(void);
89 #ifndef __typedef_ULONG_FUNC
90 #define __typedef_ULONG_FUNC
91 typedef unsigned long (*ULONG_FUNC
)(void);
94 /* Declare all macros which the systems' libcall didn't */
95 #ifndef __AROS_SLIB_ENTRY
96 # define __AROS_SLIB_ENTRY(n,s) s ## _ ## n
98 #ifndef AROS_SLIB_ENTRY
100 This is to allow the C preprocessor to expand n and s before they are
101 maybe concatenated (the CPP first evaluates a ## b and the tries
102 to expand ab instead of expanding a and b and then concatenating the
105 # define AROS_SLIB_ENTRY(n,s) __AROS_SLIB_ENTRY(n,s)
108 #if !(UseRegisterArgs && defined(AROS_COMPILER_NO_REGARGS))
109 /* Library functions which need the libbase */
110 #define AROS_LHQUAD1(t,n,a1,bt,bn,o,s) \
111 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(\
113 __AROS_LH_BASE(bt,bn))
114 #define AROS_LHQUAD2(t,n,a1,a2,bt,bn,o,s) \
115 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(\
118 __AROS_LH_BASE(bt,bn))
120 #define AROS_LH0(t,n,bt,bn,o,s) \
121 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
122 __AROS_LH_BASE(bt,bn);
124 #define AROS_LH1(t,n,a1,bt,bn,o,s) \
125 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
127 __AROS_LH_BASE(bt,bn);
129 #define AROS_LH2(t,n,a1,a2,bt,bn,o,s) \
130 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
133 __AROS_LH_BASE(bt,bn);
135 #define AROS_LH3(t,n,a1,a2,a3,bt,bn,o,s) \
136 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
140 __AROS_LH_BASE(bt,bn);
142 #define AROS_LH4(t,n,a1,a2,a3,a4,bt,bn,o,s) \
143 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
148 __AROS_LH_BASE(bt,bn);
150 #define AROS_LH5(t,n,a1,a2,a3,a4,a5,bt,bn,o,s) \
151 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
157 __AROS_LH_BASE(bt,bn);
159 #define AROS_LH6(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,s) \
160 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
167 __AROS_LH_BASE(bt,bn);
169 #define AROS_LH7(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,s) \
170 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
178 __AROS_LH_BASE(bt,bn);
180 #define AROS_LH8(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,s) \
181 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
190 __AROS_LH_BASE(bt,bn);
192 #define AROS_LH9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,s) \
193 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
203 __AROS_LH_BASE(bt,bn);
205 #define AROS_LH10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,s) \
206 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
217 __AROS_LH_BASE(bt,bn);
219 #define AROS_LH11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,s) \
220 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
232 __AROS_LH_BASE(bt,bn);
234 #define AROS_LH12(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,bt,bn,o,s) \
235 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
248 __AROS_LH_BASE(bt,bn);
250 #define AROS_LH13(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,bt,bn,o,s) \
251 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
265 __AROS_LH_BASE(bt,bn);
267 #define AROS_LH14(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,bt,bn,o,s) \
268 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
283 __AROS_LH_BASE(bt,bn);
285 #define AROS_LH15(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,bt,bn,o,s) \
286 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
302 __AROS_LH_BASE(bt,bn);
304 /* Library functions which don't need the libbase */
305 #define AROS_LH0I(t,n,bt,bn,o,s) \
306 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) {
308 #define AROS_LH1I(t,n,a1,bt,bn,o,s) \
309 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
312 #define AROS_LH2I(t,n,a1,a2,bt,bn,o,s) \
313 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
317 #define AROS_LH3I(t,n,a1,a2,a3,bt,bn,o,s) \
318 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
323 #define AROS_LH4I(t,n,a1,a2,a3,a4,bt,bn,o,s) \
324 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
330 #define AROS_LH5I(t,n,a1,a2,a3,a4,a5,bt,bn,o,s) \
331 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
338 #define AROS_LH6I(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,s) \
339 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
347 #define AROS_LH7I(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,s) \
348 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
357 #define AROS_LH8I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,s) \
358 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
368 #define AROS_LH9I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,s) \
369 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
380 #define AROS_LH10I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,s) \
381 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
393 #define AROS_LH11I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,s) \
394 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
407 #define AROS_LH12I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,bt,bn,o,s) \
408 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
422 #define AROS_LH13I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,bt,bn,o,s) \
423 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
438 #define AROS_LH14I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,bt,bn,o,s) \
439 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
455 #define AROS_LH15I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,bt,bn,o,s) \
456 __AROS_LH_PREFIX t AROS_SLIB_ENTRY(n,s)(void) { \
474 /* Call a library function which requires the libbase */
475 #define AROS_LCQUAD1(t,n,a1,bt,bn,o,s) \
476 (((__AROS_LC_PREFIX t(*)(\
478 __AROS_LP_BASE(bt,bn)))__AROS_GETVECADDR(bn,o))(\
480 __AROS_LC_BASE(bt,bn)))
482 #define AROS_LCQUAD2(t,n,a1,a2,bt,bn,o,s) \
483 (((__AROS_LC_PREFIX t(*)(\
486 __AROS_LP_BASE(bt,bn)))__AROS_GETVECADDR(bn,o))(\
489 __AROS_LC_BASE(bt,bn)))
491 #define AROS_LC0(t,n,bt,bn,o,s) \
493 __AROS_LP_BASE(bt,bn); \
494 __AROS_LC_BASE(bt,bn); \
495 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
498 #define AROS_LC1(t,n,a1,bt,bn,o,s) \
501 __AROS_LP_BASE(bt,bn); \
503 __AROS_LC_BASE(bt,bn); \
504 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
507 #define AROS_LC2(t,n,a1,a2,bt,bn,o,s) \
511 __AROS_LP_BASE(bt,bn); \
514 __AROS_LC_BASE(bt,bn); \
515 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
518 #define AROS_LC3(t,n,a1,a2,a3,bt,bn,o,s) \
523 __AROS_LP_BASE(bt,bn); \
527 __AROS_LC_BASE(bt,bn); \
528 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
531 #define AROS_LC4(t,n,a1,a2,a3,a4,bt,bn,o,s) \
537 __AROS_LP_BASE(bt,bn); \
542 __AROS_LC_BASE(bt,bn); \
543 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
546 #define AROS_LC5(t,n,a1,a2,a3,a4,a5,bt,bn,o,s) \
553 __AROS_LP_BASE(bt,bn); \
559 __AROS_LC_BASE(bt,bn); \
560 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
563 #define AROS_LC6(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,s) \
571 __AROS_LP_BASE(bt,bn); \
578 __AROS_LC_BASE(bt,bn); \
579 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
582 #define AROS_LC7(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,s) \
591 __AROS_LP_BASE(bt,bn); \
599 __AROS_LC_BASE(bt,bn); \
600 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
603 #define AROS_LC8(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,s) \
613 __AROS_LP_BASE(bt,bn); \
622 __AROS_LC_BASE(bt,bn); \
623 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
626 #define AROS_LC9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,s) \
637 __AROS_LP_BASE(bt,bn); \
647 __AROS_LC_BASE(bt,bn); \
648 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
651 #define AROS_LC10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,s) \
663 __AROS_LP_BASE(bt,bn); \
674 __AROS_LC_BASE(bt,bn); \
675 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
678 #define AROS_LC11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,s) \
691 __AROS_LP_BASE(bt,bn); \
703 __AROS_LC_BASE(bt,bn); \
704 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
707 #define AROS_LC12(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,bt,bn,o,s) \
721 __AROS_LP_BASE(bt,bn); \
734 __AROS_LC_BASE(bt,bn); \
735 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
738 #define AROS_LC13(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,bt,bn,o,s) \
753 __AROS_LP_BASE(bt,bn); \
767 __AROS_LC_BASE(bt,bn); \
768 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
771 #define AROS_LC14(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,bt,bn,o,s) \
787 __AROS_LP_BASE(bt,bn); \
802 __AROS_LC_BASE(bt,bn); \
803 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
806 #define AROS_LC15(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,bt,bn,o,s) \
823 __AROS_LP_BASE(bt,bn); \
839 __AROS_LC_BASE(bt,bn); \
840 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
843 /* Call a library function which doesn't require the libbase */
844 #define AROS_LC0I AROS_LC0
845 #define AROS_LC1I AROS_LC1
846 #define AROS_LC2I AROS_LC2
847 #define AROS_LC3I AROS_LC3
848 #define AROS_LC4I AROS_LC4
849 #define AROS_LC5I AROS_LC5
850 #define AROS_LC6I AROS_LC6
851 #define AROS_LC7I AROS_LC7
852 #define AROS_LC8I AROS_LC8
853 #define AROS_LC9I AROS_LC9
854 #define AROS_LC10I AROS_LC10
855 #define AROS_LC11I AROS_LC11
856 #define AROS_LC12I AROS_LC12
857 #define AROS_LC13I AROS_LC13
858 #define AROS_LC14I AROS_LC14
859 #define AROS_LC15I AROS_LC15
861 /* Special calls: Call a library function without the name just by the offset */
863 #ifndef AROS_LVO_CALL0
864 #define AROS_LVO_CALL0(returntype,basetype,basename,offset,system) \
865 AROS_LC0(returntype, f, basetype, basename, offset, system)
868 #ifndef AROS_LVO_CALL0NR
869 #define AROS_LVO_CALL0NR(basetype,basename,offset,system) \
870 AROS_LC0(void, f, basetype, basename, offset, system)
873 #ifndef AROS_LVO_CALL1
874 #define AROS_LVO_CALL1(t,a1,bt,bn,o,s) \
877 __AROS_LP_BASE(bt,bn); \
879 __AROS_LC_BASE(bt,bn); \
880 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
884 #ifndef AROS_LVO_CALL1NR
885 #define AROS_LVO_CALL1NR(a1,bt,bn,o,s) \
888 __AROS_LP_BASE(bt,bn); \
890 __AROS_LC_BASE(bt,bn); \
891 (((void (*)())__AROS_GETVECADDR((bn),(o)))()); \
895 #ifndef AROS_LVO_CALL2
896 #define AROS_LVO_CALL2(t,a1,a2,bt,bn,o,s) \
900 __AROS_LP_BASE(bt,bn); \
903 __AROS_LC_BASE(bt,bn); \
904 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
908 #ifndef AROS_LVO_CALL2NR
909 #define AROS_LVO_CALL2NR(a1,a2,bt,bn,o,s) \
913 __AROS_LP_BASE(bt,bn); \
916 __AROS_LC_BASE(bt,bn); \
917 (((void (*)())__AROS_GETVECADDR((bn),(o)))()); \
921 #ifndef AROS_LVO_CALL3
922 #define AROS_LVO_CALL3(t,a1,a2,a3,bt,bn,o,s) \
927 __AROS_LP_BASE(bt,bn); \
931 __AROS_LC_BASE(bt,bn); \
932 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
936 #ifndef AROS_LVO_CALL3NR
937 #define AROS_LVO_CALL3NR(a1,a2,a3,bt,bn,o,s) \
942 __AROS_LP_BASE(bt,bn); \
946 __AROS_LC_BASE(bt,bn); \
947 (((void (*)())__AROS_GETVECADDR((bn),(o)))()); \
951 #ifndef AROS_LVO_CALL4
952 #define AROS_LVO_CALL4(t,a1,a2,a3,a4,bt,bn,o,s) \
958 __AROS_LP_BASE(bt,bn); \
963 __AROS_LC_BASE(bt,bn); \
964 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
968 #ifndef AROS_LVO_CALL4NR
969 #define AROS_LVO_CALL4NR(a1,a2,a3,a4,bt,bn,o,s) \
975 __AROS_LP_BASE(bt,bn); \
980 __AROS_LC_BASE(bt,bn); \
981 (((void (*)())__AROS_GETVECADDR((bn),(o)))()); \
985 #ifndef AROS_LVO_CALL5
986 #define AROS_LVO_CALL5(t,a1,a2,a3,a4,a5,bt,bn,o,s) \
993 __AROS_LP_BASE(bt,bn); \
999 __AROS_LC_BASE(bt,bn); \
1000 (t)(((t (*)())__AROS_GETVECADDR((bn),(o)))()); \
1004 #ifndef AROS_LVO_CALL5NR
1005 #define AROS_LVO_CALL5NR(a1,a2,a3,a4,a5,bt,bn,o,s) \
1012 __AROS_LP_BASE(bt,bn); \
1018 __AROS_LC_BASE(bt,bn); \
1019 (((void (*)())__AROS_GETVECADDR((bn),(o)))()); \
1022 #endif /* !(UseRegisterArgs && defined(AROS_COMPILER_NO_REGARGS)) */
1024 #ifdef __AROS_USE_MACROS_FOR_LIBCALL
1025 # define AROS_LPQUAD1(t,n,a1,bt,bn,o,s)
1026 # define AROS_LPQUAD2(t,n,a1,a2,bt,bn,o,s)
1028 # define AROS_LP0(t,n,bt,bn,o,s)
1029 # define AROS_LP1(t,n,a1,bt,bn,o,s)
1030 # define AROS_LP2(t,n,a1,a2,bt,bn,o,s)
1031 # define AROS_LP3(t,n,a1,a2,a3,bt,bn,o,s)
1032 # define AROS_LP4(t,n,a1,a2,a3,a4,bt,bn,o,s)
1033 # define AROS_LP5(t,n,a1,a2,a3,a4,a5,bt,bn,o,s)
1034 # define AROS_LP6(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,s)
1035 # define AROS_LP7(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,s)
1036 # define AROS_LP8(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,s)
1037 # define AROS_LP9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,s)
1038 # define AROS_LP10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,s)
1039 # define AROS_LP11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,s)
1040 # define AROS_LP12(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,bt,bn,o,s)
1041 # define AROS_LP13(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,bt,bn,o,s)
1042 # define AROS_LP14(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,bt,bn,o,s)
1043 # define AROS_LP15(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,bt,bn,o,s)
1045 # define AROS_LP0I(t,n,bt,bn,o,s)
1046 # define AROS_LP1I(t,n,a1,bt,bn,o,s)
1047 # define AROS_LP2I(t,n,a1,a2,bt,bn,o,s)
1048 # define AROS_LP3I(t,n,a1,a2,a3,bt,bn,o,s)
1049 # define AROS_LP4I(t,n,a1,a2,a3,a4,bt,bn,o,s)
1050 # define AROS_LP5I(t,n,a1,a2,a3,a4,a5,bt,bn,o,s)
1051 # define AROS_LP6I(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,s)
1052 # define AROS_LP7I(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,s)
1053 # define AROS_LP8I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,s)
1054 # define AROS_LP9I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,s)
1055 # define AROS_LP10I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,s)
1056 # define AROS_LP11I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,s)
1057 # define AROS_LP12I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,bt,bn,o,s)
1058 # define AROS_LP13I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,bt,bn,o,s)
1059 # define AROS_LP14I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,bt,bn,o,s)
1060 # define AROS_LP15I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,bt,bn,o,s)
1062 /* Prototypes for library functions which need the libbase */
1063 # define AROS_LPQUAD1(t,n,a1,bt,bn,o,s) \
1064 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (a1,__AROS_LP_BASE(bt,bn))
1065 # define AROS_LPQUAD2(t,n,a1,a2,bt,bn,o,s) \
1066 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (a1,a2,__AROS_LP_BASE(bt,bn))
1068 # define AROS_LP0(t,n,bt,bn,o,s) \
1069 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1070 # define AROS_LP1(t,n,a1,bt,bn,o,s) \
1071 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1072 # define AROS_LP2(t,n,a1,a2,bt,bn,o,s) \
1073 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1074 # define AROS_LP3(t,n,a1,a2,a3,bt,bn,o,s) \
1075 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1076 # define AROS_LP4(t,n,a1,a2,a3,a4,bt,bn,o,s) \
1077 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1078 # define AROS_LP5(t,n,a1,a2,a3,a4,a5,bt,bn,o,s) \
1079 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1080 # define AROS_LP6(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,s) \
1081 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1082 # define AROS_LP7(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,s) \
1083 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1084 # define AROS_LP8(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,s) \
1085 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1086 # define AROS_LP9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,s) \
1087 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1088 # define AROS_LP10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,s) \
1089 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1090 # define AROS_LP11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,s) \
1091 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1092 # define AROS_LP12(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,bt,bn,o,s) \
1093 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1094 # define AROS_LP13(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,bt,bn,o,s) \
1095 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1096 # define AROS_LP14(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,bt,bn,o,s) \
1097 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1098 # define AROS_LP15(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,bt,bn,o,s) \
1099 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1101 /* Prototypes for library functions which don't need the libbase */
1102 # define AROS_LP0I(t,n,bt,bn,o,s) \
1103 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1104 # define AROS_LP1I(t,n,a1,bt,bn,o,s) \
1105 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1106 # define AROS_LP2I(t,n,a1,a2,bt,bn,o,s) \
1107 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1108 # define AROS_LP3I(t,n,a1,a2,a3,bt,bn,o,s) \
1109 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1110 # define AROS_LP4I(t,n,a1,a2,a3,a4,bt,bn,o,s) \
1111 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1112 # define AROS_LP5I(t,n,a1,a2,a3,a4,a5,bt,bn,o,s) \
1113 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1114 # define AROS_LP6I(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,s) \
1115 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1116 # define AROS_LP7I(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,s) \
1117 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1118 # define AROS_LP8I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,s) \
1119 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1120 # define AROS_LP9I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,s) \
1121 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1122 # define AROS_LP10I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,s) \
1123 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1124 # define AROS_LP11I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,s) \
1125 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1126 # define AROS_LP12I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,bt,bn,o,s) \
1127 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1128 # define AROS_LP13I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,bt,bn,o,s) \
1129 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1130 # define AROS_LP14I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,bt,bn,o,s) \
1131 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1132 # define AROS_LP15I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,bt,bn,o,s) \
1133 __AROS_LP_PREFIX t AROS_SLIB_ENTRY(n,s) (void);
1136 /* Declarations for library functions which need the libbase */
1137 # define AROS_LDQUAD1(t,n,a1,bt,bn,o,s) \
1138 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1139 # define AROS_LDQUAD2(t,n,a1,a2,bt,bn,o,s) \
1140 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1142 # define AROS_LD0(t,n,bt,bn,o,s) \
1143 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1144 # define AROS_LD1(t,n,a1,bt,bn,o,s) \
1145 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1146 # define AROS_LD2(t,n,a1,a2,bt,bn,o,s) \
1147 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1148 # define AROS_LD3(t,n,a1,a2,a3,bt,bn,o,s) \
1149 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1150 # define AROS_LD4(t,n,a1,a2,a3,a4,bt,bn,o,s) \
1151 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1152 # define AROS_LD5(t,n,a1,a2,a3,a4,a5,bt,bn,o,s) \
1153 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1154 # define AROS_LD6(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,s) \
1155 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1156 # define AROS_LD7(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,s) \
1157 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1158 # define AROS_LD8(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,s) \
1159 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1160 # define AROS_LD9(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,s) \
1161 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1162 # define AROS_LD10(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,s) \
1163 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1164 # define AROS_LD11(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,s) \
1165 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1166 # define AROS_LD12(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,bt,bn,o,s) \
1167 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1168 # define AROS_LD13(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,bt,bn,o,s) \
1169 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1170 # define AROS_LD14(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,bt,bn,o,s) \
1171 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1172 # define AROS_LD15(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,bt,bn,o,s) \
1173 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1175 /* Declarations for library functions which don't need the libbase */
1176 # define AROS_LD0I(t,n,bt,bn,o,s) \
1177 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1178 # define AROS_LD1I(t,n,a1,bt,bn,o,s) \
1179 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1180 # define AROS_LD2I(t,n,a1,a2,bt,bn,o,s) \
1181 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1182 # define AROS_LD3I(t,n,a1,a2,a3,bt,bn,o,s) \
1183 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1184 # define AROS_LD4I(t,n,a1,a2,a3,a4,bt,bn,o,s) \
1185 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1186 # define AROS_LD5I(t,n,a1,a2,a3,a4,a5,bt,bn,o,s) \
1187 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1188 # define AROS_LD6I(t,n,a1,a2,a3,a4,a5,a6,bt,bn,o,s) \
1189 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1190 # define AROS_LD7I(t,n,a1,a2,a3,a4,a5,a6,a7,bt,bn,o,s) \
1191 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1192 # define AROS_LD8I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,bt,bn,o,s) \
1193 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1194 # define AROS_LD9I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,bt,bn,o,s) \
1195 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1196 # define AROS_LD10I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,bt,bn,o,s) \
1197 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1198 # define AROS_LD11I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,bt,bn,o,s) \
1199 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1200 # define AROS_LD12I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,bt,bn,o,s) \
1201 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1202 # define AROS_LD13I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,bt,bn,o,s) \
1203 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1204 # define AROS_LD14I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,bt,bn,o,s) \
1205 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1206 # define AROS_LD15I(t,n,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,bt,bn,o,s) \
1207 __AROS_LD_PREFIX t AROS_SLIB_ENTRY(n,s) (void)
1209 #define AROS_LHA(type,name,reg) type,name,reg
1210 #define AROS_LPA(type,name,reg) type,name,reg
1211 #define AROS_LCA(type,name,reg) type,name,reg
1212 #define AROS_LDA(type,name,reg) type,name,reg
1214 #define AROS_LHAQUAD(type,name,reg1,reg2) type,name,reg1,reg2
1215 #define AROS_LPAQUAD(type,name,reg1,reg2) type,name,reg1,reg2
1216 #define AROS_LCAQUAD(type,name,reg1,reg2) type,name,reg1,reg2
1217 #define AROS_LDAQUAD(type,name,reg1,reg2) type,name,reg1,reg2
1219 #ifndef AROS_LIBFUNC_INIT
1220 # define AROS_LIBFUNC_INIT {
1222 #ifndef AROS_LIBFUNC_EXIT
1223 # define AROS_LIBFUNC_EXIT }}
1225 #ifndef AROS_LIBBASE_EXT_DECL
1226 # define AROS_LIBBASE_EXT_DECL(a,b)
1229 /******************************************************************************
1230 ***** ENDE aros/libcall.h
1231 ******************************************************************************/
1233 #endif /* AROS_LIBCALL_H */