rename mathpatch to __stdc_fpumath
[AROS.git] / arch / m68k-all / stdc / __stdc_fpumath.c
blobbbf8b46d3b3f265c13401643d096e9c00e066417
1 /*
2 Copyright © 2018, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include <aros/libcall.h>
7 #include <aros/symbolsets.h>
8 #include <exec/execbase.h>
9 #include <libraries/stdc.h>
11 #include <proto/exec.h>
13 #ifndef STDC_STATIC
15 /* FPU math functions */
16 extern void AROS_SLIB_ENTRY(acos881, STDC, 120)(void);
17 extern void AROS_SLIB_ENTRY(log2881, STDC, 142)(void);
18 extern void AROS_SLIB_ENTRY(log10881, STDC, 140)(void);
19 extern void AROS_SLIB_ENTRY(log881, STDC, 139)(void);
20 extern void AROS_SLIB_ENTRY(remainder881, STDC, 167)(void);
21 extern void AROS_SLIB_ENTRY(sinh881, STDC, 131)(void);
22 extern void AROS_SLIB_ENTRY(sqrt881, STDC, 151)(void);
23 extern void AROS_SLIB_ENTRY(atan881, STDC, 122)(void);
24 extern void AROS_SLIB_ENTRY(ceil881, STDC, 156)(void);
25 extern void AROS_SLIB_ENTRY(copysign881, STDC, 169)(void);
26 extern void AROS_SLIB_ENTRY(cos881, STDC, 124)(void);
27 extern void AROS_SLIB_ENTRY(exp2881, STDC, 134)(void);
28 extern void AROS_SLIB_ENTRY(fabs881, STDC, 148)(void);
29 extern void AROS_SLIB_ENTRY(fdim881, STDC, 173)(void);
30 extern void AROS_SLIB_ENTRY(floor881, STDC, 157)(void);
31 extern void AROS_SLIB_ENTRY(fma881, STDC, 176)(void);
32 extern void AROS_SLIB_ENTRY(fmax881, STDC, 174)(void);
33 extern void AROS_SLIB_ENTRY(fmin881, STDC, 175)(void);
34 extern void AROS_SLIB_ENTRY(fpclassify881, STDC, 103)(void);
35 extern void AROS_SLIB_ENTRY(isfinite881, STDC, 105)(void);
36 extern void AROS_SLIB_ENTRY(isinf881, STDC, 108)(void);
37 extern void AROS_SLIB_ENTRY(isnan881, STDC, 111)(void);
38 extern void AROS_SLIB_ENTRY(isnormal881, STDC, 114)(void);
39 extern void AROS_SLIB_ENTRY(lround881, STDC, 163)(void);
40 extern void AROS_SLIB_ENTRY(nearbyint881, STDC, 158)(void);
41 extern void AROS_SLIB_ENTRY(round881, STDC, 162)(void);
42 extern void AROS_SLIB_ENTRY(signbit881, STDC, 118)(void);
43 extern void AROS_SLIB_ENTRY(sin881, STDC, 125)(void);
44 extern void AROS_SLIB_ENTRY(tan881, STDC, 126)(void);
45 extern void AROS_SLIB_ENTRY(tanh881, STDC, 132)(void);
46 extern void AROS_SLIB_ENTRY(trunc881, STDC, 165)(void);
47 extern void AROS_SLIB_ENTRY(asin881, STDC, 121)(void);
48 extern void AROS_SLIB_ENTRY(atanh881, STDC, 129)(void);
49 extern void AROS_SLIB_ENTRY(cosh881, STDC, 130)(void);
50 extern void AROS_SLIB_ENTRY(exp881, STDC, 133)(void);
51 extern void AROS_SLIB_ENTRY(fmod881, STDC, 166)(void);
52 extern void AROS_SLIB_ENTRY(hypot881, STDC, 149)(void);
54 static int STDCM68KMATH_Init(struct StdCBase *StdCBase)
56 if ((SysBase->AttnFlags & AFF_68060) && (SysBase->AttnFlags & AFF_FPU)) {
57 /* Override supported MC68060+ math functions */
58 __AROS_SETVECADDR(StdCBase, 149, AROS_SLIB_ENTRY(hypot881, STDC, 149));
59 __AROS_SETVECADDR(StdCBase, 151, AROS_SLIB_ENTRY(sqrt881, STDC, 151));
60 __AROS_SETVECADDR(StdCBase, 156, AROS_SLIB_ENTRY(ceil881, STDC, 156));
61 __AROS_SETVECADDR(StdCBase, 169, AROS_SLIB_ENTRY(copysign881, STDC, 169));
62 __AROS_SETVECADDR(StdCBase, 148, AROS_SLIB_ENTRY(fabs881, STDC, 148));
63 __AROS_SETVECADDR(StdCBase, 173, AROS_SLIB_ENTRY(fdim881, STDC, 173));
64 __AROS_SETVECADDR(StdCBase, 157, AROS_SLIB_ENTRY(floor881, STDC, 157));
65 __AROS_SETVECADDR(StdCBase, 176, AROS_SLIB_ENTRY(fma881, STDC, 176));
66 __AROS_SETVECADDR(StdCBase, 174, AROS_SLIB_ENTRY(fmax881, STDC, 174));
67 __AROS_SETVECADDR(StdCBase, 175, AROS_SLIB_ENTRY(fmin881, STDC, 175));
68 __AROS_SETVECADDR(StdCBase, 103, AROS_SLIB_ENTRY(fpclassify881, STDC, 103));
69 __AROS_SETVECADDR(StdCBase, 105, AROS_SLIB_ENTRY(isfinite881, STDC, 105));
70 __AROS_SETVECADDR(StdCBase, 108, AROS_SLIB_ENTRY(isinf881, STDC, 108));
71 __AROS_SETVECADDR(StdCBase, 111, AROS_SLIB_ENTRY(isnan881, STDC, 111));
72 __AROS_SETVECADDR(StdCBase, 114, AROS_SLIB_ENTRY(isnormal881, STDC, 114));
73 __AROS_SETVECADDR(StdCBase, 163, AROS_SLIB_ENTRY(lround881, STDC, 163));
74 __AROS_SETVECADDR(StdCBase, 158, AROS_SLIB_ENTRY(nearbyint881, STDC, 158));
75 __AROS_SETVECADDR(StdCBase, 162, AROS_SLIB_ENTRY(round881, STDC, 162));
76 __AROS_SETVECADDR(StdCBase, 118, AROS_SLIB_ENTRY(signbit881, STDC, 118));
77 __AROS_SETVECADDR(StdCBase, 165, AROS_SLIB_ENTRY(trunc881, STDC, 165));
79 else if ((SysBase->AttnFlags & AFF_68881) || (SysBase->AttnFlags & AFF_68882)) {
80 /* Override supported 68881/68882 math functions */
81 __AROS_SETVECADDR(StdCBase, 120, AROS_SLIB_ENTRY(acos881, STDC, 120));
82 __AROS_SETVECADDR(StdCBase, 142, AROS_SLIB_ENTRY(log2881, STDC, 142));
83 __AROS_SETVECADDR(StdCBase, 140, AROS_SLIB_ENTRY(log10881, STDC, 140));
84 __AROS_SETVECADDR(StdCBase, 139, AROS_SLIB_ENTRY(log881, STDC, 139));
85 __AROS_SETVECADDR(StdCBase, 167, AROS_SLIB_ENTRY(remainder881, STDC, 167));
86 __AROS_SETVECADDR(StdCBase, 131, AROS_SLIB_ENTRY(sinh881, STDC, 131));
87 __AROS_SETVECADDR(StdCBase, 151, AROS_SLIB_ENTRY(sqrt881, STDC, 151));
88 __AROS_SETVECADDR(StdCBase, 122, AROS_SLIB_ENTRY(atan881, STDC, 122));
89 __AROS_SETVECADDR(StdCBase, 156, AROS_SLIB_ENTRY(ceil881, STDC, 156));
90 __AROS_SETVECADDR(StdCBase, 169, AROS_SLIB_ENTRY(copysign881, STDC, 169));
91 __AROS_SETVECADDR(StdCBase, 124, AROS_SLIB_ENTRY(cos881, STDC, 124));
92 __AROS_SETVECADDR(StdCBase, 134, AROS_SLIB_ENTRY(exp2881, STDC, 134));
93 __AROS_SETVECADDR(StdCBase, 148, AROS_SLIB_ENTRY(fabs881, STDC, 148));
94 __AROS_SETVECADDR(StdCBase, 173, AROS_SLIB_ENTRY(fdim881, STDC, 173));
95 __AROS_SETVECADDR(StdCBase, 157, AROS_SLIB_ENTRY(floor881, STDC, 157));
96 __AROS_SETVECADDR(StdCBase, 176, AROS_SLIB_ENTRY(fma881, STDC, 176));
97 __AROS_SETVECADDR(StdCBase, 174, AROS_SLIB_ENTRY(fmax881, STDC, 174));
98 __AROS_SETVECADDR(StdCBase, 175, AROS_SLIB_ENTRY(fmin881, STDC, 175));
99 __AROS_SETVECADDR(StdCBase, 103, AROS_SLIB_ENTRY(fpclassify881, STDC, 103));
100 __AROS_SETVECADDR(StdCBase, 105, AROS_SLIB_ENTRY(isfinite881, STDC, 105));
101 __AROS_SETVECADDR(StdCBase, 108, AROS_SLIB_ENTRY(isinf881, STDC, 108));
102 __AROS_SETVECADDR(StdCBase, 111, AROS_SLIB_ENTRY(isnan881, STDC, 111));
103 __AROS_SETVECADDR(StdCBase, 114, AROS_SLIB_ENTRY(isnormal881, STDC, 114));
104 __AROS_SETVECADDR(StdCBase, 163, AROS_SLIB_ENTRY(lround881, STDC, 163));
105 __AROS_SETVECADDR(StdCBase, 158, AROS_SLIB_ENTRY(nearbyint881, STDC, 158));
106 __AROS_SETVECADDR(StdCBase, 162, AROS_SLIB_ENTRY(round881, STDC, 162));
107 __AROS_SETVECADDR(StdCBase, 118, AROS_SLIB_ENTRY(signbit881, STDC, 118));
108 __AROS_SETVECADDR(StdCBase, 125, AROS_SLIB_ENTRY(sin881, STDC, 125));
109 __AROS_SETVECADDR(StdCBase, 126, AROS_SLIB_ENTRY(tan881, STDC, 126));
110 __AROS_SETVECADDR(StdCBase, 132, AROS_SLIB_ENTRY(tanh881, STDC, 132));
111 __AROS_SETVECADDR(StdCBase, 165, AROS_SLIB_ENTRY(trunc881, STDC, 165));
112 __AROS_SETVECADDR(StdCBase, 121, AROS_SLIB_ENTRY(asin881, STDC, 121));
113 __AROS_SETVECADDR(StdCBase, 129, AROS_SLIB_ENTRY(atanh881, STDC, 129));
114 __AROS_SETVECADDR(StdCBase, 130, AROS_SLIB_ENTRY(cosh881, STDC, 130));
115 __AROS_SETVECADDR(StdCBase, 133, AROS_SLIB_ENTRY(exp881, STDC, 133));
116 __AROS_SETVECADDR(StdCBase, 166, AROS_SLIB_ENTRY(fmod881, STDC, 166));
117 __AROS_SETVECADDR(StdCBase, 149, AROS_SLIB_ENTRY(hypot881, STDC, 149));
120 return TRUE;
123 ADD2INITLIB(STDCM68KMATH_Init, 0)
124 #endif