Update vbcc stuff from latest VBCC. The include files are copied from m68k-linux and the libraries from m68k-atari.
Without this you get weird warnings.
This commit is contained in:
parent
a3846c799a
commit
08f6942dfe
|
@ -13,9 +13,6 @@
|
|||
/** Return the maximum value of x or y */
|
||||
#define max(x, y) ((x < y) ? y : x)
|
||||
|
||||
/** Return the absolute value of x */
|
||||
#define abs(x) ((x >= 0) ? x : 0 - x)
|
||||
|
||||
/**
|
||||
* Re-entrant version of strtok_r, because VBCC does not provide it
|
||||
*
|
||||
|
|
|
@ -33,7 +33,7 @@ int toupper(int);
|
|||
int tolower(int);
|
||||
|
||||
#ifndef __NOINLINE__
|
||||
int toupper(__reg("d0") int) =
|
||||
__regsused("d0/a0") int __asm_toupper(__reg("d0") int) =
|
||||
"\tinline\n"
|
||||
"\txref\t___ctype\n"
|
||||
"\tlea\t___ctype,a0\n"
|
||||
|
@ -42,7 +42,7 @@ int toupper(__reg("d0") int) =
|
|||
"\tand.b\t#$df,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int tolower(__reg("d0") int) =
|
||||
__regsused("d0/a0") int __asm_tolower(__reg("d0") int) =
|
||||
"\tinline\n"
|
||||
"\txref\t___ctype\n"
|
||||
"\tlea\t___ctype,a0\n"
|
||||
|
@ -51,6 +51,8 @@ int tolower(__reg("d0") int) =
|
|||
"\tor.b\t#$20,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
#define toupper(c) __asm_toupper(c)
|
||||
#define tolower(c) __asm_tolower(c)
|
||||
#endif /* __NOINLINE__ */
|
||||
|
||||
#endif /* __CTYPE_H */
|
||||
|
|
|
@ -40,33 +40,33 @@ int feupdateenv(const fenv_t *);
|
|||
#if defined(__M68881) || defined(__M68882)
|
||||
/* direct FPU support */
|
||||
|
||||
int fegetenv(__reg("a0")fenv_t *) =
|
||||
__regsused("d0/a0") int __asm_fegetenv(__reg("a0")fenv_t *) =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\tfpcr,(a0)\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
"\teinline";
|
||||
int fegetround(void) =
|
||||
__regsused("d0/d1") int __asm_fegetround() =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\tfpcr,d1\n"
|
||||
"\tmoveq\t#$30,d0\n"
|
||||
"\tand.l\td1,d0\n"
|
||||
"\teinline";
|
||||
int fegetprec(void) =
|
||||
__regsused("d0") int __asm_fegetprec() =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\tfpcr,d0\n"
|
||||
"\tand.l\t#$c0,d0\n"
|
||||
"\teinline";
|
||||
int feholdexcept(__reg("a0")fenv_t *) =
|
||||
__regsused("d0/a0") int __asm_feholdexcept(__reg("a0")fenv_t *) =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\tfpcr,(a0)\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
"\teinline";
|
||||
int fesetenv(__reg("a0")const fenv_t *) =
|
||||
__regsused("d0/a0") int __asm_fesetenv(__reg("a0")const fenv_t *) =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\t(a0),fpcr\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
"\teinline";
|
||||
int fesetround(__reg("d0")int) =
|
||||
__regsused("d0/d1") int __asm_fesetround(__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\tfpcr,d1\n"
|
||||
"\tand.w\t#$ffcf,d1\n"
|
||||
|
@ -74,7 +74,7 @@ int fesetround(__reg("d0")int) =
|
|||
"\tfmove.l\td1,fpcr\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
"\teinline";
|
||||
int fesetprec(__reg("d0")int) =
|
||||
__regsused("d0/d1") int __asm_fesetprec(__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\tfpcr,d1\n"
|
||||
"\tand.w\t#$ff3f,d1\n"
|
||||
|
@ -86,62 +86,77 @@ int fesetprec(__reg("d0")int) =
|
|||
#else
|
||||
/* IEEE or software floating-point */
|
||||
|
||||
int fegetenv(__reg("a0")fenv_t *) =
|
||||
__regsused("d0") int __asm_fegetenv(__reg("a0")fenv_t *) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
int fegetround(void) =
|
||||
__regsused("d0") int __asm_fegetround() =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
int fegetprec(void) =
|
||||
__regsused("d0") int __asm_fegetprec() =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
int feholdexcept(__reg("a0")fenv_t *) =
|
||||
__regsused("d0") int __asm_feholdexcept(__reg("a0")fenv_t *) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
int fesetenv(__reg("a0")const fenv_t *) =
|
||||
__regsused("d0") int __asm_fesetenv(__reg("a0")const fenv_t *) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
int fesetround(__reg("d0")int) =
|
||||
__regsused("d0") int __asm_fesetround(__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
int fesetprec(__reg("d0")int) =
|
||||
__regsused("d0") int __asm_fesetprec(__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
|
||||
#endif
|
||||
|
||||
int feclearexcept(__reg("d0")int) =
|
||||
__regsused("d0") int __asm_feclearexcept(__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
"\teinline";
|
||||
int fegetexceptflag(__reg("a0")fexcept_t *, __reg("d0")int) =
|
||||
__regsused("d0") int __asm_fegetexceptflag(__reg("a0")fexcept_t *,
|
||||
__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
int feraiseexcept(__reg("d0")int) =
|
||||
__regsused("d0") int __asm_feraiseexcept(__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
int fesetexceptflag(__reg("a0")const fexcept_t *, __reg("d0")int) =
|
||||
__regsused("d0") int __asm_fesetexceptflag(__reg("a0")const fexcept_t *,
|
||||
__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
int fetestexcept(__reg("d0")int) =
|
||||
__regsused("d0") int __asm_fetestexcept(__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
"\teinline";
|
||||
int feupdateenv(__reg("a0")const fenv_t *) =
|
||||
__regsused("d0") int __asm_feupdateenv(__reg("a0")const fenv_t *) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#-1,d0\n"
|
||||
"\teinline";
|
||||
|
||||
#define feclearexcept(x) __asm_feclearexcept(x)
|
||||
#define fegetenv(x) __asm_fegetenv(x)
|
||||
#define fegetexceptflag(x,y) __asm_fegetexceptflag(x,y)
|
||||
#define fegetround() __asm_fegetround()
|
||||
#define fegetprec() __asm_fegetprec()
|
||||
#define feholdexcept(x) __asm_feholdexcept(x)
|
||||
#define feraiseexcept(x) __asm_feraiseexcept(x)
|
||||
#define fesetenv(x) __asm_fesetenv(x)
|
||||
#define fesetexceptflag(x,y) __asm_fesetexceptflag(x,y)
|
||||
#define fesetround(x) __asm_fesetround(x)
|
||||
#define fesetprec(x) __asm_fesetprec(x)
|
||||
#define fetestexcept(x) __asm_fetestexcept(x)
|
||||
#define feupdateenv(x) __asm_feupdateenv(x)
|
||||
#endif /* __NOINLINE__ */
|
||||
|
||||
#endif /* __FENV_H */
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/* $VER: math_040.h 1.0 (06.04.2017)
|
||||
/* $VER: math_040.h 1.1 (25.09.2021)
|
||||
** math.h 68040 specific support, link with -lm040
|
||||
*/
|
||||
|
||||
/* macros */
|
||||
int fpclassify(__reg("fp0")double) =
|
||||
__regsused("d0/d1/fp0") int fpclassify(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tmoveq\t#7,d1\n"
|
||||
|
@ -11,7 +11,7 @@ int fpclassify(__reg("fp0")double) =
|
|||
"\trol.l\t#8,d0\n"
|
||||
"\tand.l\td1,d0\n"
|
||||
"\teinline";
|
||||
int isfinite(__reg("fp0")double) =
|
||||
__regsused("d0/fp0") int isfinite(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tfmove.l\tfpsr,d0\n"
|
||||
|
@ -19,7 +19,7 @@ int isfinite(__reg("fp0")double) =
|
|||
"\tseq\td0\n"
|
||||
"\textb.l\td0\n"
|
||||
"\teinline";
|
||||
int isnormal(__reg("fp0")double) =
|
||||
__regsused("d0/fp0") int isnormal(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tfmove.l\tfpsr,d0\n"
|
||||
|
@ -27,7 +27,7 @@ int isnormal(__reg("fp0")double) =
|
|||
"\tseq\td0\n"
|
||||
"\textb.l\td0\n"
|
||||
"\teinline";
|
||||
int isnan(__reg("fp0")double) =
|
||||
__regsused("d0/fp0") int isnan(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -35,7 +35,7 @@ int isnan(__reg("fp0")double) =
|
|||
"\tmoveq\t#0,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int isinf(__reg("fp0")double) =
|
||||
__regsused("d0/d1/fp0") int isinf(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -43,13 +43,13 @@ int isinf(__reg("fp0")double) =
|
|||
"\trol.l\t#7,d1\n"
|
||||
"\tand.l\td1,d0\n"
|
||||
"\teinline";
|
||||
int signbit(__reg("fp0")double) =
|
||||
__regsused("d0/d1/fp0") int signbit(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\tfp0,d0\n"
|
||||
"\tmoveq\t#31,d1\n"
|
||||
"\tasr.l\td1,d0\n"
|
||||
"\teinline";
|
||||
int isgreater(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int isgreater(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -57,7 +57,7 @@ int isgreater(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#0,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int isgreaterequal(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int isgreaterequal(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
|
@ -65,7 +65,7 @@ int isgreaterequal(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#1,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int isless(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int isless(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -73,7 +73,7 @@ int isless(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#0,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int islessequal(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int islessequal(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
|
@ -81,7 +81,7 @@ int islessequal(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#1,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int islessgreater(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int islessgreater(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
|
@ -89,7 +89,7 @@ int islessgreater(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#1,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int isunordered(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int isunordered(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -100,7 +100,7 @@ int isunordered(__reg("fp0")double,__reg("fp1")double) =
|
|||
|
||||
#ifndef __NOINLINE__
|
||||
/* faster inline functions */
|
||||
__fp0ret double ceil(__reg("fp0")double) =
|
||||
__regsused("d0/d1/fp0") __fp0ret double __asm_ceil(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\tfpcr,d1\n"
|
||||
"\tmoveq\t#$30,d0\n"
|
||||
|
@ -110,7 +110,7 @@ __fp0ret double ceil(__reg("fp0")double) =
|
|||
"\tfmove.l\td0,fp0\n"
|
||||
"\tfmove.l\td1,fpcr\n"
|
||||
"\teinline";
|
||||
__fp0ret double copysign(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") __fp0ret double __asm_copysign(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\tfp1,d0\n"
|
||||
"\tfabs.x\tfp0\n"
|
||||
|
@ -119,16 +119,16 @@ __fp0ret double copysign(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tfneg.x\tfp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double fabs(__reg("fp0")double) =
|
||||
__regsused("fp0") __fp0ret double __asm_fabs(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfabs.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double fdim(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_fdim(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfsub.x\tfp1,fp0\n"
|
||||
"\tfabs.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double floor(__reg("fp0")double) =
|
||||
__regsused("d0/d1/fp0") __fp0ret double __asm_floor(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\tfpcr,d1\n"
|
||||
"\tmoveq\t#$20,d0\n"
|
||||
|
@ -139,12 +139,12 @@ __fp0ret double floor(__reg("fp0")double) =
|
|||
"\tfmove.l\td0,fp0\n"
|
||||
"\tfmove.l\td1,fpcr\n"
|
||||
"\teinline";
|
||||
__fp0ret double fma(__reg("fp0")double,__reg("fp1")double,__reg("fp2")double) =
|
||||
__regsused("fp0/fp1/fp2") __fp0ret double __asm_fma(__reg("fp0")double,__reg("fp1")double,__reg("fp2")double) =
|
||||
"\tinline\n"
|
||||
"\tfmul.x\tfp1,fp0\n"
|
||||
"\tfadd.x\tfp2,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double fmax(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_fmax(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tfboge\t.skip\n"
|
||||
|
@ -153,7 +153,7 @@ __fp0ret double fmax(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tfmove.x\tfp1,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double fmin(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_fmin(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tfbole\t.skip\n"
|
||||
|
@ -162,27 +162,27 @@ __fp0ret double fmin(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tfmove.x\tfp1,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double hypot(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_hypot(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfmul.x\tfp0,fp0\n"
|
||||
"\tfmul.x\tfp1,fp1\n"
|
||||
"\tfadd.x\tfp1,fp0\n"
|
||||
"\tfsqrt.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double nan(__reg("a0")const char *) =
|
||||
__regsused("fp0") __fp0ret double __asm_nan(__reg("a0")const char *) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\t#$7fc00000,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double nearbyint(__reg("fp0")double) =
|
||||
__regsused("d0/fp0") __fp0ret double __asm_nearbyint(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.l\tfp0,d0\n"
|
||||
"\tfmove.l\td0,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double sqrt(__reg("fp0")double) =
|
||||
__regsused("fp0") __fp0ret double __asm_sqrt(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfsqrt.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double trunc(__reg("fp0")double) =
|
||||
__regsused("d0/d1/fp0") __fp0ret double __asm_trunc(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#$10,d0\n"
|
||||
"\tfmove.l\tfpcr,d1\n"
|
||||
|
@ -194,18 +194,33 @@ __fp0ret double trunc(__reg("fp0")double) =
|
|||
"\tfmove.l\td1,fpcr\n"
|
||||
"\teinline";
|
||||
|
||||
/* double precision */
|
||||
#define ceil(x) __asm_ceil(x)
|
||||
#define copysign(x,y) __asm_copysign(x,y)
|
||||
#define fabs(x) __asm_fabs(x)
|
||||
#define fdim(x,y) __asm_fdim(x,y)
|
||||
#define floor(x) __asm_floor(x)
|
||||
#define fma(x,y) __asm_fma(x,y)
|
||||
#define fmax(x,y) __asm_fmax(x,y)
|
||||
#define fmin(x,y) __asm_fmin(x,y)
|
||||
#define hypot(x,y) __asm_hypot(x,y)
|
||||
#define nan(x) __asm_nan(x)
|
||||
#define nearbyint(x) __asm_nearbyint(x)
|
||||
#define sqrt(x) __asm_sqrt(x)
|
||||
#define trunc(x) __asm_trunc(x)
|
||||
|
||||
/* single precision */
|
||||
#define ceilf(x) ceil(x)
|
||||
#define copysignf(x,y) copysign(x,y)
|
||||
#define fabsf(x) fabs(x)
|
||||
#define fdimf(x,y) fdim(x,y)
|
||||
#define floorf(x) floor(x)
|
||||
#define fmaf(x,y) fma(x,y)
|
||||
#define fmaxf(x,y) fmax(x,y)
|
||||
#define fminf(x,y) fmin(x,y)
|
||||
#define hypotf(x,y) hypot(x,y)
|
||||
#define nanf(x) nan(x)
|
||||
#define nearbyintf(x) nearbyint(x)
|
||||
#define sqrtf(x) sqrt(x)
|
||||
#define truncf(x) trunc(x)
|
||||
#define ceilf(x) __asm_ceil(x)
|
||||
#define copysignf(x,y) __asm_copysign(x,y)
|
||||
#define fabsf(x) __asm_fabs(x)
|
||||
#define fdimf(x,y) __asm_fdim(x,y)
|
||||
#define floorf(x) __asm_floor(x)
|
||||
#define fmaf(x,y) __asm_fma(x,y)
|
||||
#define fmaxf(x,y) __asm_fmax(x,y)
|
||||
#define fminf(x,y) __asm_fmin(x,y)
|
||||
#define hypotf(x,y) __asm_hypot(x,y)
|
||||
#define nanf(x) __asm_nan(x)
|
||||
#define nearbyintf(x) __asm_nearbyint(x)
|
||||
#define sqrtf(x) __asm_sqrt(x)
|
||||
#define truncf(x) __asm_trunc(x)
|
||||
#endif /* __NOINLINE__ */
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/* $VER: math_060.h 1.0 (06.04.2017)
|
||||
/* $VER: math_060.h 1.1 (25.09.2021)
|
||||
** math.h 68060 specific support, link with -lm060
|
||||
*/
|
||||
|
||||
/* macros */
|
||||
int fpclassify(__reg("fp0")double) =
|
||||
__regsused("d0/d1/fp0") int fpclassify(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tmoveq\t#7,d1\n"
|
||||
|
@ -11,7 +11,7 @@ int fpclassify(__reg("fp0")double) =
|
|||
"\trol.l\t#8,d0\n"
|
||||
"\tand.l\td1,d0\n"
|
||||
"\teinline";
|
||||
int isfinite(__reg("fp0")double) =
|
||||
__regsused("d0/fp0") int isfinite(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tfmove.l\tfpsr,d0\n"
|
||||
|
@ -19,7 +19,7 @@ int isfinite(__reg("fp0")double) =
|
|||
"\tseq\td0\n"
|
||||
"\textb.l\td0\n"
|
||||
"\teinline";
|
||||
int isnormal(__reg("fp0")double) =
|
||||
__regsused("d0/fp0") int isnormal(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tfmove.l\tfpsr,d0\n"
|
||||
|
@ -27,7 +27,7 @@ int isnormal(__reg("fp0")double) =
|
|||
"\tseq\td0\n"
|
||||
"\textb.l\td0\n"
|
||||
"\teinline";
|
||||
int isnan(__reg("fp0")double) =
|
||||
__regsused("d0/fp0") int isnan(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -35,7 +35,7 @@ int isnan(__reg("fp0")double) =
|
|||
"\tmoveq\t#0,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int isinf(__reg("fp0")double) =
|
||||
__regsused("d0/d1/fp0") int isinf(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftst.x\tfp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -43,13 +43,13 @@ int isinf(__reg("fp0")double) =
|
|||
"\trol.l\t#7,d1\n"
|
||||
"\tand.l\td1,d0\n"
|
||||
"\teinline";
|
||||
int signbit(__reg("fp0")double) =
|
||||
__regsused("d0/d1/fp0") int signbit(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\tfp0,d0\n"
|
||||
"\tmoveq\t#31,d1\n"
|
||||
"\tasr.l\td1,d0\n"
|
||||
"\teinline";
|
||||
int isgreater(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int isgreater(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -57,7 +57,7 @@ int isgreater(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#0,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int isgreaterequal(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int isgreaterequal(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
|
@ -65,7 +65,7 @@ int isgreaterequal(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#1,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int isless(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int isless(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -73,7 +73,7 @@ int isless(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#0,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int islessequal(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int islessequal(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
|
@ -81,7 +81,7 @@ int islessequal(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#1,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int islessgreater(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int islessgreater(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
|
@ -89,7 +89,7 @@ int islessgreater(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tmoveq\t#1,d0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
int isunordered(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") int isunordered(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tmoveq\t#1,d0\n"
|
||||
|
@ -100,7 +100,7 @@ int isunordered(__reg("fp0")double,__reg("fp1")double) =
|
|||
|
||||
#ifndef __NOINLINE__
|
||||
/* faster inline functions */
|
||||
__fp0ret double ceil(__reg("fp0")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_ceil(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.x\tfp0,fp1\n"
|
||||
"\tfintrz.x\tfp0\n"
|
||||
|
@ -109,7 +109,7 @@ __fp0ret double ceil(__reg("fp0")double) =
|
|||
"\tfadd.s\t#$3f800000,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double copysign(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("d0/fp0/fp1") __fp0ret double __asm_copysign(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\tfp1,d0\n"
|
||||
"\tfabs.x\tfp0\n"
|
||||
|
@ -118,16 +118,16 @@ __fp0ret double copysign(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tfneg.x\tfp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double fabs(__reg("fp0")double) =
|
||||
__regsused("fp0") __fp0ret double __asm_fabs(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfabs.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double fdim(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_fdim(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfsub.x\tfp1,fp0\n"
|
||||
"\tfabs.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double floor(__reg("fp0")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_floor(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.x\tfp0,fp1\n"
|
||||
"\tfintrz.x\tfp0\n"
|
||||
|
@ -136,12 +136,12 @@ __fp0ret double floor(__reg("fp0")double) =
|
|||
"\tfsub.s\t#$3f800000,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double fma(__reg("fp0")double,__reg("fp1")double,__reg("fp2")double) =
|
||||
__regsused("fp0/fp1/fp2") __fp0ret double __asm_fma(__reg("fp0")double,__reg("fp1")double,__reg("fp2")double) =
|
||||
"\tinline\n"
|
||||
"\tfmul.x\tfp1,fp0\n"
|
||||
"\tfadd.x\tfp2,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double fmax(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_fmax(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tfboge\t.skip\n"
|
||||
|
@ -150,7 +150,7 @@ __fp0ret double fmax(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tfmove.x\tfp1,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double fmin(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_fmin(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tfbole\t.skip\n"
|
||||
|
@ -159,14 +159,14 @@ __fp0ret double fmin(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tfmove.x\tfp1,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double hypot(__reg("fp0")double,__reg("fp1")double) =
|
||||
__regsused("fp0/fp1") __fp0ret double __asm_hypot(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfmul.x\tfp0,fp0\n"
|
||||
"\tfmul.x\tfp1,fp1\n"
|
||||
"\tfadd.x\tfp1,fp0\n"
|
||||
"\tfsqrt.x\tfp0\n"
|
||||
"\teinline";
|
||||
long lround(__reg("fp0")double) =
|
||||
__regsused("d0/fp0") long __asm_lround(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\tfp0,d0\n"
|
||||
"\tand.l\t#$80000000,d0\n"
|
||||
|
@ -175,15 +175,15 @@ long lround(__reg("fp0")double) =
|
|||
"\tfintrz.x\tfp0\n"
|
||||
"\tfmove.l\tfp0,d0\n"
|
||||
"\teinline";
|
||||
__fp0ret double nan(__reg("a0")const char *) =
|
||||
__regsused("fp0") __fp0ret double __asm_nan(__reg("a0")const char *) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\t#$7fc00000,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double nearbyint(__reg("fp0")double) =
|
||||
__regsused("fp0") __fp0ret double __asm_nearbyint(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfint.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double round(__reg("fp0")double) =
|
||||
__regsused("d0/fp0") __fp0ret double __asm_round(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\tfp0,d0\n"
|
||||
"\tand.l\t#$80000000,d0\n"
|
||||
|
@ -191,29 +191,46 @@ __fp0ret double round(__reg("fp0")double) =
|
|||
"\tfadd.s\td0,fp0\n"
|
||||
"\tfintrz.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double sqrt(__reg("fp0")double) =
|
||||
__regsused("fp0") __fp0ret double __asm_sqrt(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfsqrt.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double trunc(__reg("fp0")double) =
|
||||
__regsused("fp0") __fp0ret double __asm_trunc(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfintrz.x\tfp0\n"
|
||||
"\teinline";
|
||||
|
||||
/* double precision */
|
||||
#define ceil(x) __asm_ceil(x)
|
||||
#define copysign(x,y) __asm_copysign(x,y)
|
||||
#define fabs(x) __asm_fabs(x)
|
||||
#define fdim(x,y) __asm_fdim(x,y)
|
||||
#define floor(x) __asm_floor(x)
|
||||
#define fma(x,y) __asm_fma(x,y)
|
||||
#define fmax(x,y) __asm_fmax(x,y)
|
||||
#define fmin(x,y) __asm_fmin(x,y)
|
||||
#define hypot(x,y) __asm_hypot(x,y)
|
||||
#define lround(x) __asm_lround(x)
|
||||
#define nan(x) __asm_nan(x)
|
||||
#define nearbyint(x) __asm_nearbyint(x)
|
||||
#define round(x) __asm_round(x)
|
||||
#define sqrt(x) __asm_sqrt(x)
|
||||
#define trunc(x) __asm_trunc(x)
|
||||
|
||||
/* single precision */
|
||||
#define ceilf(x) ceil(x)
|
||||
#define copysignf(x,y) copysign(x,y)
|
||||
#define fabsf(x) fabs(x)
|
||||
#define fdimf(x,y) fdim(x,y)
|
||||
#define floorf(x) floor(x)
|
||||
#define fmaf(x,y) fma(x,y)
|
||||
#define fmaxf(x,y) fmax(x,y)
|
||||
#define fminf(x,y) fmin(x,y)
|
||||
#define hypotf(x,y) hypot(x,y)
|
||||
#define lroundf(x) lround(x)
|
||||
#define nanf(x) nan(x)
|
||||
#define nearbyintf(x) nearbyint(x)
|
||||
#define roundf(x) round(x)
|
||||
#define sqrtf(x) sqrt(x)
|
||||
#define truncf(x) trunc(x)
|
||||
#define ceilf(x) __asm_ceil(x)
|
||||
#define copysignf(x,y) __asm_copysign(x,y)
|
||||
#define fabsf(x) __asm_fabs(x)
|
||||
#define fdimf(x,y) __asm_fdim(x,y)
|
||||
#define floorf(x) __asm_floor(x)
|
||||
#define fmaf(x,y) __asm_fma(x,y)
|
||||
#define fmaxf(x,y) __asm_fmax(x,y)
|
||||
#define fminf(x,y) __asm_fmin(x,y)
|
||||
#define hypotf(x,y) __asm_hypot(x,y)
|
||||
#define lroundf(x) __asm_lround(x)
|
||||
#define nanf(x) __asm_nan(x)
|
||||
#define nearbyintf(x) __asm_nearbyint(x)
|
||||
#define roundf(x) __asm_round(x)
|
||||
#define sqrtf(x) __asm_sqrt(x)
|
||||
#define truncf(x) __asm_trunc(x)
|
||||
#endif /* __NOINLINE__ */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $VER: math_881.h 1.0 (06.04.2017)
|
||||
/* $VER: math_881.h 1.1 (25.09.2021)
|
||||
** math.h 6888x specific support, link with -lm881
|
||||
*/
|
||||
|
||||
|
@ -100,23 +100,23 @@ int isunordered(__reg("fp0")double,__reg("fp1")double) =
|
|||
|
||||
#ifndef __NOINLINE__
|
||||
/* faster inline functions */
|
||||
__fp0ret double acos(__reg("fp0")double) =
|
||||
__fp0ret double __asm_acos(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfacos.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double asin(__reg("fp0")double) =
|
||||
__fp0ret double __asm_asin(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfasin.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double atan(__reg("fp0")double) =
|
||||
__fp0ret double __asm_atan(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfatan.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double atanh(__reg("fp0")double) =
|
||||
__fp0ret double __asm_atanh(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfatanh.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double ceil(__reg("fp0")double) =
|
||||
__fp0ret double __asm_ceil(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.x\tfp0,fp1\n"
|
||||
"\tfintrz.x\tfp0\n"
|
||||
|
@ -125,7 +125,7 @@ __fp0ret double ceil(__reg("fp0")double) =
|
|||
"\tfadd.s\t#$3f800000,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double copysign(__reg("fp0")double,__reg("fp1")double) =
|
||||
__fp0ret double __asm_copysign(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\tfp1,d0\n"
|
||||
"\tfabs.x\tfp0\n"
|
||||
|
@ -134,40 +134,40 @@ __fp0ret double copysign(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tfneg.x\tfp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double cos(__reg("fp0")double) =
|
||||
__fp0ret double __asm_cos(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfcos.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double cosh(__reg("fp0")double) =
|
||||
__fp0ret double __asm_cosh(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfcosh.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double exp(__reg("fp0")double) =
|
||||
__fp0ret double __asm_exp(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfetox.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double exp2(__reg("fp0")double) =
|
||||
__fp0ret double __asm_exp2(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftwotox.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double exp10(__reg("fp0")double) =
|
||||
__fp0ret double __asm_exp10(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftentox.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double expm1(__reg("fp0")double) =
|
||||
__fp0ret double __asm_expm1(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfetoxm1.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double fabs(__reg("fp0")double) =
|
||||
__fp0ret double __asm_fabs(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfabs.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double fdim(__reg("fp0")double,__reg("fp1")double) =
|
||||
__fp0ret double __asm_fdim(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfsub.x\tfp1,fp0\n"
|
||||
"\tfabs.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double floor(__reg("fp0")double) =
|
||||
__fp0ret double __asm_floor(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.x\tfp0,fp1\n"
|
||||
"\tfintrz.x\tfp0\n"
|
||||
|
@ -176,12 +176,12 @@ __fp0ret double floor(__reg("fp0")double) =
|
|||
"\tfsub.s\t#$3f800000,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double fma(__reg("fp0")double,__reg("fp1")double,__reg("fp2")double) =
|
||||
__fp0ret double __asm_fma(__reg("fp0")double,__reg("fp1")double,__reg("fp2")double) =
|
||||
"\tinline\n"
|
||||
"\tfmul.x\tfp1,fp0\n"
|
||||
"\tfadd.x\tfp2,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double fmax(__reg("fp0")double,__reg("fp1")double) =
|
||||
__fp0ret double __asm_fmax(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tfboge\t.skip\n"
|
||||
|
@ -190,7 +190,7 @@ __fp0ret double fmax(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tfmove.x\tfp1,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double fmin(__reg("fp0")double,__reg("fp1")double) =
|
||||
__fp0ret double __asm_fmin(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfcmp.x\tfp1,fp0\n"
|
||||
"\tfbole\t.skip\n"
|
||||
|
@ -199,42 +199,42 @@ __fp0ret double fmin(__reg("fp0")double,__reg("fp1")double) =
|
|||
"\tfmove.x\tfp1,fp0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
__fp0ret double fmod(__reg("fp0")double,__reg("fp1")double) =
|
||||
__fp0ret double __asm_fmod(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfmod.x\tfp1,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double hypot(__reg("fp0")double,__reg("fp1")double) =
|
||||
__fp0ret double __asm_hypot(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfmul.x\tfp0,fp0\n"
|
||||
"\tfmul.x\tfp1,fp1\n"
|
||||
"\tfadd.x\tfp1,fp0\n"
|
||||
"\tfsqrt.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double ldexp(__reg("fp0")double,__reg("d0")int) =
|
||||
__fp0ret double __asm_ldexp(__reg("fp0")double,__reg("d0")int) =
|
||||
"\tinline\n"
|
||||
"\tfscale.l\td0,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double log(__reg("fp0")double) =
|
||||
__fp0ret double __asm_log(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tflogn.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double log10(__reg("fp0")double) =
|
||||
__fp0ret double __asm_log10(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tflog10.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double log2(__reg("fp0")double) =
|
||||
__fp0ret double __asm_log2(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tflog2.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double logb(__reg("fp0")double) =
|
||||
__fp0ret double __asm_logb(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfgetexp.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double lognp1(__reg("fp0")double) =
|
||||
__fp0ret double __asm_lognp1(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tflognp1.x\tfp0\n"
|
||||
"\teinline";
|
||||
long lround(__reg("fp0")double) =
|
||||
long __asm_lround(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\tfp0,d0\n"
|
||||
"\tand.l\t#$80000000,d0\n"
|
||||
|
@ -243,19 +243,19 @@ long lround(__reg("fp0")double) =
|
|||
"\tfintrz.x\tfp0\n"
|
||||
"\tfmove.l\tfp0,d0\n"
|
||||
"\teinline";
|
||||
__fp0ret double nan(__reg("a0")const char *) =
|
||||
__fp0ret double __asm_nan(__reg("a0")const char *) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\t#$7fc00000,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double nearbyint(__reg("fp0")double) =
|
||||
__fp0ret double __asm_nearbyint(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfint.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double remainder(__reg("fp0")double,__reg("fp1")double) =
|
||||
__fp0ret double __asm_remainder(__reg("fp0")double,__reg("fp1")double) =
|
||||
"\tinline\n"
|
||||
"\tfrem.x\tfp1,fp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double round(__reg("fp0")double) =
|
||||
__fp0ret double __asm_round(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfmove.s\tfp0,d0\n"
|
||||
"\tand.l\t#$80000000,d0\n"
|
||||
|
@ -263,67 +263,106 @@ __fp0ret double round(__reg("fp0")double) =
|
|||
"\tfadd.s\td0,fp0\n"
|
||||
"\tfintrz.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double sin(__reg("fp0")double) =
|
||||
__fp0ret double __asm_sin(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfsin.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double sinh(__reg("fp0")double) =
|
||||
__fp0ret double __asm_sinh(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfsinh.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double sqrt(__reg("fp0")double) =
|
||||
__fp0ret double __asm_sqrt(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfsqrt.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double tan(__reg("fp0")double) =
|
||||
__fp0ret double __asm_tan(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftan.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double tanh(__reg("fp0")double) =
|
||||
__fp0ret double __asm_tanh(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tftanh.x\tfp0\n"
|
||||
"\teinline";
|
||||
__fp0ret double trunc(__reg("fp0")double) =
|
||||
__fp0ret double __asm_trunc(__reg("fp0")double) =
|
||||
"\tinline\n"
|
||||
"\tfintrz.x\tfp0\n"
|
||||
"\teinline";
|
||||
|
||||
/* double precision */
|
||||
#define acos(x) __asm_acos(x)
|
||||
#define asin(x) __asm_asin(x)
|
||||
#define atan(x) __asm_atan(x)
|
||||
#define atanh(x) __asm_atanh(x)
|
||||
#define ceil(x) __asm_ceil(x)
|
||||
#define copysign(x,y) __asm_copysign(x,y)
|
||||
#define cos(x) __asm_cos(x)
|
||||
#define cosh(x) __asm_cosh(x)
|
||||
#define exp(x) __asm_exp(x)
|
||||
#define exp2(x) __asm_exp2(x)
|
||||
#define exp10(x) __asm_exp10(x)
|
||||
#define expm1(x) __asm_expm1(x)
|
||||
#define fabs(x) __asm_fabs(x)
|
||||
#define fdim(x,y) __asm_fdim(x,y)
|
||||
#define floor(x) __asm_floor(x)
|
||||
#define fma(x,y) __asm_fma(x,y)
|
||||
#define fmax(x,y) __asm_fmax(x,y)
|
||||
#define fmin(x,y) __asm_fmin(x,y)
|
||||
#define fmod(x,y) __asm_fmod(x,y)
|
||||
#define hypot(x,y) __asm_hypot(x,y)
|
||||
#define ldexp(x,exp) __asm_ldexp(x,exp)
|
||||
#define log(x) __asm_log(x)
|
||||
#define log10(x) __asm_log10(x)
|
||||
#define log2(x) __asm_log2(x)
|
||||
#define logb(x) __asm_logb(x)
|
||||
#define lognp1(x) __asm_lognp1(x)
|
||||
#define lround(x) __asm_lround(x)
|
||||
#define nan(x) __asm_nan(x)
|
||||
#define nearbyint(x) __asm_nearbyint(x)
|
||||
#define remainder(x,y) __asm_remainder(x,y)
|
||||
#define round(x) __asm_round(x)
|
||||
#define sin(x) __asm_sin(x)
|
||||
#define sinh(x) __asm_sinh(x)
|
||||
#define sqrt(x) __asm_sqrt(x)
|
||||
#define tan(x) __asm_tan(x)
|
||||
#define tanh(x) __asm_tanh(x)
|
||||
#define trunc(x) __asm_trunc(x)
|
||||
|
||||
/* single precision */
|
||||
#define acosf(x) acos(x)
|
||||
#define asinf(x) asin(x)
|
||||
#define atanf(x) atan(x)
|
||||
#define atanhf(x) atanh(x)
|
||||
#define ceilf(x) ceil(x)
|
||||
#define copysignf(x,y) copysign(x,y)
|
||||
#define cosf(x) cos(x)
|
||||
#define coshf(x) cosh(x)
|
||||
#define expf(x) exp(x)
|
||||
#define exp2f(x) exp2(x)
|
||||
#define exp10f(x) exp10(x)
|
||||
#define expm1f(x) expm1(x)
|
||||
#define fabsf(x) fabs(x)
|
||||
#define fdimf(x,y) fdim(x,y)
|
||||
#define floorf(x) floor(x)
|
||||
#define fmaf(x,y) fma(x,y)
|
||||
#define fmaxf(x,y) fmax(x,y)
|
||||
#define fminf(x,y) fmin(x,y)
|
||||
#define fmodf(x,y) fmod(x,y)
|
||||
#define hypotf(x,y) hypot(x,y)
|
||||
#define ldexpf(x,exp) ldexp(x,exp)
|
||||
#define logf(x) log(x)
|
||||
#define log10f(x) log10(x)
|
||||
#define log2f(x) log2(x)
|
||||
#define logbf(x) logb(x)
|
||||
#define lognp1f(x) lognp1(x)
|
||||
#define lroundf(x) lround(x)
|
||||
#define nanf(x) nan(x)
|
||||
#define nearbyintf(x) nearbyint(x)
|
||||
#define remainderf(x,y) remainder(x,y)
|
||||
#define roundf(x) round(x)
|
||||
#define sinf(x) sin(x)
|
||||
#define sinhf(x) sinh(x)
|
||||
#define sqrtf(x) sqrt(x)
|
||||
#define tanf(x) tan(x)
|
||||
#define tanhf(x) tanh(x)
|
||||
#define truncf(x) trunc(x)
|
||||
#define acosf(x) __asm_acos(x)
|
||||
#define asinf(x) __asm_asin(x)
|
||||
#define atanf(x) __asm_atan(x)
|
||||
#define atanhf(x) __asm_atanh(x)
|
||||
#define ceilf(x) __asm_ceil(x)
|
||||
#define copysignf(x,y) __asm_copysign(x,y)
|
||||
#define cosf(x) __asm_cos(x)
|
||||
#define coshf(x) __asm_cosh(x)
|
||||
#define expf(x) __asm_exp(x)
|
||||
#define exp2f(x) __asm_exp2(x)
|
||||
#define exp10f(x) __asm_exp10(x)
|
||||
#define expm1f(x) __asm_expm1(x)
|
||||
#define fabsf(x) __asm_fabs(x)
|
||||
#define fdimf(x,y) __asm_fdim(x,y)
|
||||
#define floorf(x) __asm_floor(x)
|
||||
#define fmaf(x,y) __asm_fma(x,y)
|
||||
#define fmaxf(x,y) __asm_fmax(x,y)
|
||||
#define fminf(x,y) __asm_fmin(x,y)
|
||||
#define fmodf(x,y) __asm_fmod(x,y)
|
||||
#define hypotf(x,y) __asm_hypot(x,y)
|
||||
#define ldexpf(x,exp) __asm_ldexp(x,exp)
|
||||
#define logf(x) __asm_log(x)
|
||||
#define log10f(x) __asm_log10(x)
|
||||
#define log2f(x) __asm_log2(x)
|
||||
#define logbf(x) __asm_logb(x)
|
||||
#define lognp1f(x) __asm_lognp1(x)
|
||||
#define lroundf(x) __asm_lround(x)
|
||||
#define nanf(x) __asm_nan(x)
|
||||
#define nearbyintf(x) __asm_nearbyint(x)
|
||||
#define remainderf(x,y) __asm_remainder(x,y)
|
||||
#define roundf(x) __asm_round(x)
|
||||
#define sinf(x) __asm_sin(x)
|
||||
#define sinhf(x) __asm_sinh(x)
|
||||
#define sqrtf(x) __asm_sqrt(x)
|
||||
#define tanf(x) __asm_tan(x)
|
||||
#define tanhf(x) __asm_tanh(x)
|
||||
#define truncf(x) __asm_trunc(x)
|
||||
#endif /* __NOINLINE__ */
|
||||
|
|
|
@ -125,9 +125,11 @@ int snprintf(char *,size_t,const char *,...);
|
|||
Simple versions of IO functions (see vbcc documentation).
|
||||
If versions with __v1 or __v2 are declared they are also used.
|
||||
*/
|
||||
/*
|
||||
int __v0fprintf(FILE *, const char *);
|
||||
int __v0printf(const char *);
|
||||
int __v0sprintf(char *, const char *);
|
||||
*/
|
||||
int vprintf(const char *,va_list);
|
||||
int vfprintf(FILE *,const char *,va_list);
|
||||
int vsprintf(char *,const char *,va_list);
|
||||
|
|
|
@ -40,6 +40,7 @@ long atol(const char *);
|
|||
long long atoll(const char *);
|
||||
#endif
|
||||
double strtod(const char *,char **);
|
||||
float strtof(const char *,char **);
|
||||
long strtol(const char *,char **,int);
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
signed long long strtoll(const char *,char **,int);
|
||||
|
@ -81,23 +82,24 @@ long long llabs(long long);
|
|||
#endif
|
||||
|
||||
#ifndef __NOINLINE__
|
||||
int abs(__reg("d0") int) =
|
||||
__regsused("d0") int __asm_abs(__reg("d0") int) =
|
||||
"\tinline\n"
|
||||
"\ttst.l\td0\n"
|
||||
"\tbpl\t.skip\n"
|
||||
"\tneg.l\td0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
long labs(__reg("d0") long) =
|
||||
__regsused("d0") long __asm_labs(__reg("d0") long) =
|
||||
"\tinline\n"
|
||||
"\ttst.l\td0\n"
|
||||
"\tbpl\t.skip\n"
|
||||
"\tneg.l\td0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
|
||||
#define abs(x) __asm_abs(x)
|
||||
#define labs(x) __asm_labs(x)
|
||||
#if __STDC_VERSION__ >= 199901L
|
||||
long long llabs(__reg("d0/d1") long long) =
|
||||
__regsused("d0/d1") long long __asm_llabs(__reg("d0/d1") long long) =
|
||||
"\tinline\n"
|
||||
"\ttst.l\td0\n"
|
||||
"\tbpl\t.skip\n"
|
||||
|
@ -105,18 +107,21 @@ long long llabs(__reg("d0/d1") long long) =
|
|||
"\tnegx.l\td0\n"
|
||||
".skip\n"
|
||||
"\teinline";
|
||||
#define llabs(x) __asm_llabs(x)
|
||||
#endif
|
||||
|
||||
#if !defined(__M68000) && !defined(__M68010)
|
||||
div_t div(__reg("d0") int,__reg("d1") int) =
|
||||
__regsused("d0/d1") div_t __asm_div(__reg("d0") int,__reg("d1") int) =
|
||||
"\tinline\n"
|
||||
"\tdivsl.l\td1,d1:d0\n"
|
||||
"\teinline";
|
||||
ldiv_t ldiv(__reg("d0") long,__reg("d1") long) =
|
||||
__regsused("d0/d1") ldiv_t __asm_ldiv(__reg("d0") long,__reg("d1") long) =
|
||||
"\tinline\n"
|
||||
"\tdivsl.l\td1,d1:d0\n"
|
||||
"\teinline";
|
||||
#endif
|
||||
#define div(n,d) __asm_div(n,d)
|
||||
#define ldiv(n,d) __asm_ldiv(n,d)
|
||||
#endif /* __NOINLINE__ */
|
||||
|
||||
#define atof(s) strtod((s),(char **)NULL)
|
||||
|
|
|
@ -34,8 +34,8 @@ size_t strxfrm(char *,const char *,size_t);
|
|||
|
||||
#ifndef __NOINLINE__
|
||||
#if defined(__M68000) || defined(__M68010)
|
||||
void *memcpy(__reg("a0") void *, __reg("a1") const void *,
|
||||
__reg("d2") size_t) =
|
||||
void *__asm_memcpy(__reg("a0") void *, __reg("a1") const void *,
|
||||
__reg("d2") size_t) =
|
||||
"\tinline\n"
|
||||
"\tmove.l\ta0,d0\n"
|
||||
"\tcmp.l\t#16,d2\n"
|
||||
|
@ -73,8 +73,8 @@ void *memcpy(__reg("a0") void *, __reg("a1") const void *,
|
|||
"\tdbf\td2,.l6\n"
|
||||
".l7\n"
|
||||
"\teinline";
|
||||
void *__memcpy_desc(__reg("a0") void *, __reg("a1") const void *,
|
||||
__reg("d2") size_t) =
|
||||
void *__asm_memcpy_desc(__reg("a0") void *, __reg("a1") const void *,
|
||||
__reg("d2") size_t) =
|
||||
"\tinline\n"
|
||||
"\tcmp.l\t#16,d2\n"
|
||||
"\tblo\t.l5\n"
|
||||
|
@ -113,7 +113,7 @@ void *__memcpy_desc(__reg("a0") void *, __reg("a1") const void *,
|
|||
".l7\n"
|
||||
"\tmove.l\ta0,d0\n"
|
||||
"\teinline";
|
||||
void *memset(__reg("a0") void *, __reg("d0") int, __reg("d2") size_t) =
|
||||
void *__asm_memset(__reg("a0") void *, __reg("d0") int, __reg("d2") size_t) =
|
||||
"\tinline\n"
|
||||
"\tmove.l\ta0,a1\n"
|
||||
"\tcmp.l\t#16,d2\n"
|
||||
|
@ -149,7 +149,8 @@ void *memset(__reg("a0") void *, __reg("d0") int, __reg("d2") size_t) =
|
|||
"\teinline";
|
||||
|
||||
#else /* 68020+ */
|
||||
void *memcpy(__reg("a0") void *, __reg("a1") const void *, __reg("d2") size_t) =
|
||||
void *__asm_memcpy(__reg("a0") void *, __reg("a1") const void *,
|
||||
__reg("d2") size_t) =
|
||||
"\tinline\n"
|
||||
"\tmove.l\ta0,d0\n"
|
||||
"\tsubq.l\t#4,d2\n"
|
||||
|
@ -179,8 +180,8 @@ void *memcpy(__reg("a0") void *, __reg("a1") const void *, __reg("d2") size_t) =
|
|||
"\tdbf\td2,.l4\n"
|
||||
".l5\n"
|
||||
"\teinline";
|
||||
void *__memcpy_desc(__reg("a0") void *, __reg("a1") const void *,
|
||||
__reg("d2") size_t) =
|
||||
void *__asm_memcpy_desc(__reg("a0") void *, __reg("a1") const void *,
|
||||
__reg("d2") size_t) =
|
||||
"\tinline\n"
|
||||
"\tsubq.l\t#4,d2\n"
|
||||
"\tbcs\t.l3\n"
|
||||
|
@ -209,7 +210,7 @@ void *__memcpy_desc(__reg("a0") void *, __reg("a1") const void *,
|
|||
".l5\n"
|
||||
"\tmove.l\ta0,d0\n"
|
||||
"\teinline";
|
||||
void *memset(__reg("a0") void *, __reg("d0") int, __reg("d2") size_t) =
|
||||
void *__asm_memset(__reg("a0") void *, __reg("d0") int, __reg("d2") size_t) =
|
||||
"\tinline\n"
|
||||
"\tmove.l\ta0,a1\n"
|
||||
"\tsubq.l\t#8,d2\n"
|
||||
|
@ -251,7 +252,7 @@ void *memset(__reg("a0") void *, __reg("d0") int, __reg("d2") size_t) =
|
|||
|
||||
#endif /* 68020+ */
|
||||
|
||||
size_t strlen(__reg("a0") const char *) =
|
||||
__regsused("d0/a0") size_t __asm_strlen(__reg("a0") const char *) =
|
||||
"\tinline\n"
|
||||
"\tmove.l\ta0,d0\n"
|
||||
".l1\n"
|
||||
|
@ -260,15 +261,15 @@ size_t strlen(__reg("a0") const char *) =
|
|||
"\tsub.l\ta0,d0\n"
|
||||
"\tnot.l\td0\n"
|
||||
"\teinline";
|
||||
char *strcpy(__reg("a0") char *, __reg("a1") const char *) =
|
||||
__regsused("d0/a0/a1") char *__asm_strcpy(__reg("a0") char *, __reg("a1") const char *) =
|
||||
"\tinline\n"
|
||||
"\tmove.l\ta0,d0\n"
|
||||
".l1\n"
|
||||
"\tmove.b\t(a1)+,(a0)+\n"
|
||||
"\tbne\t.l1\n"
|
||||
"\teinline";
|
||||
char *strncpy(__reg("a0") char *, __reg("a1") const char *,
|
||||
__reg("d1") size_t) =
|
||||
char *__asm_strncpy(__reg("a0") char *, __reg("a1") const char *,
|
||||
__reg("d1") size_t) =
|
||||
"\tinline\n"
|
||||
"\tmove.l\ta0,d0\n"
|
||||
"\tbra\t.l2\n"
|
||||
|
@ -280,7 +281,7 @@ char *strncpy(__reg("a0") char *, __reg("a1") const char *,
|
|||
"\tsubq.l\t#1,d1\n"
|
||||
"\tbpl\t.l1\n"
|
||||
"\teinline";
|
||||
int strcmp(__reg("a0") const char *, __reg("a1") const char *) =
|
||||
int __asm_strcmp(__reg("a0") const char *, __reg("a1") const char *) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
"\tmoveq\t#0,d1\n"
|
||||
|
@ -294,8 +295,8 @@ int strcmp(__reg("a0") const char *, __reg("a1") const char *) =
|
|||
".l2\n"
|
||||
"\tsub.l\td1,d0\n"
|
||||
"\teinline";
|
||||
int strncmp(__reg("a0") const char *, __reg("a1") const char *,
|
||||
__reg("d2") size_t) =
|
||||
int __asm_strncmp(__reg("a0") const char *, __reg("a1") const char *,
|
||||
__reg("d2") size_t) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
"\tmoveq\t#0,d1\n"
|
||||
|
@ -312,7 +313,7 @@ int strncmp(__reg("a0") const char *, __reg("a1") const char *,
|
|||
"\tsub.l\td1,d0\n"
|
||||
".l3\n"
|
||||
"\teinline";
|
||||
char *strcat(__reg("a0") char *, __reg("a1") const char *) =
|
||||
__regsused("d0/a0/a1") char *__asm_strcat(__reg("a0") char *, __reg("a1") const char *) =
|
||||
"\tinline\n"
|
||||
"\tmove.l\ta0,d0\n"
|
||||
".l1\n"
|
||||
|
@ -323,12 +324,12 @@ char *strcat(__reg("a0") char *, __reg("a1") const char *) =
|
|||
"\tmove.b\t(a1)+,(a0)+\n"
|
||||
"\tbne\t.l2\n"
|
||||
"\teinline";
|
||||
char *strncat(__reg("a0") char *, __reg("a1") const char *,
|
||||
__reg("d1") size_t) =
|
||||
char *__asm_strncat(__reg("a0") char *, __reg("a1") const char *,
|
||||
__reg("d1") size_t) =
|
||||
"\tinline\n"
|
||||
"\tmove.l\ta0,d0\n"
|
||||
"\ttst.l\td1\n"
|
||||
"\tbeq\t.l3\n"
|
||||
"\tbeq\t.l4\n"
|
||||
".l1\n"
|
||||
"\ttst.b\t(a0)+\n"
|
||||
"\tbne\t.l1\n"
|
||||
|
@ -339,8 +340,10 @@ char *strncat(__reg("a0") char *, __reg("a1") const char *,
|
|||
"\tsubq.l\t#1,d1\n"
|
||||
"\tbne\t.l2\n"
|
||||
".l3\n"
|
||||
"\tclr.b\t(a0)\n"
|
||||
".l4\n"
|
||||
"\teinline";
|
||||
char *strrchr(__reg("a0") const char *, __reg("d1") int) =
|
||||
__regsused("d0/d1/a0") char *__asm_strrchr(__reg("a0") const char *, __reg("d1") int) =
|
||||
"\tinline\n"
|
||||
"\tmoveq\t#0,d0\n"
|
||||
".l1\n"
|
||||
|
@ -352,8 +355,20 @@ char *strrchr(__reg("a0") const char *, __reg("d1") int) =
|
|||
"\tbne\t.l1\n"
|
||||
"\teinline";
|
||||
|
||||
#define memmove(d,s,n) ((d)<=(s) ? memcpy(d,s,n) : \
|
||||
__memcpy_desc((char *)(d)+(n),(char *)(s)+(n),n))
|
||||
#ifdef __OPTSPEED__
|
||||
#define memmove(d,s,n) ((d)<=(s) ? __asm_memcpy(d,s,n) : \
|
||||
__asm_memcpy_desc((char *)(d)+(n),(char *)(s)+(n),n))
|
||||
#endif
|
||||
#define memcpy(d,s,n) __asm_memcpy(d,s,n)
|
||||
#define memset(p,f,n) __asm_memset(p,f,n)
|
||||
#define strlen(p) __asm_strlen(p)
|
||||
#define strcpy(d,s) __asm_strcpy(d,s)
|
||||
#define strncpy(d,s,n) __asm_strncpy(d,s,n)
|
||||
#define strcmp(s1,s2) __asm_strcmp(s1,s2)
|
||||
#define strncmp(s1,s2,n) __asm_strncmp(s1,s2,n)
|
||||
#define strcat(d,s) __asm_strcat(d,s)
|
||||
#define strncat(d,s,n) __asm_strncat(d,s,n)
|
||||
#define strrchr(s,n) __asm_strrchr(s,n)
|
||||
#endif /* __NOINLINE__ */
|
||||
|
||||
#endif /* __STRING_H */
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in a new issue