This is the third round of patches adding initial support for ARM64. Since the previous round, some def files have been cleaned up and shared, and this architecture now only uses def files from lib-common so far.
Many of the patches were previously reviewed by J-B and got approvals, those patches have got that annotated. This obviously isn't complete support, but some sort of minimal initial effort, where nontrivial C applications can be built and seem to work (in wine). Martin Storsjö (17): setjmp.h: Add a fallback definition for unsupported architectures crt: Add initial support for buiding for arm64 in mingw-w64-crt headers: Detection of arm64 in some main locations headers: Skip the inline interlocked functions for arm64 (as on all other non-i386 archs) fenv: Add arm64 specific codepaths in fenv functions, add arm64 fenv.h header section math: Use the same generic codepaths for arm64 as for arm math: Add arm64 specific implementations of math functions math: Implement the exp2() wrappers using assembly on arm64 stdio: Add arm64 assembly wrappers for the v*scanf functions intrin-impl.h: Include compiler builtins based parts on arm64 as well intrin-impl.h: Add arm64 functions corresponding to the arm ones crtexe: Skip __initenv on arm64 just as on arm crt: Change a check for _WIN64 into __x86_64__ in an assembly file crt: Change checks for _WIN64 into __x86_64__ around exception handling winnt.h: Add arm64 specific handling of TEB winnt.h: Add empty definition of arch specific structs for arm64 crt: Disable win64 unwinding on arm64 mingw-w64-crt/Makefile.am | 268 +++++++++++++++++++++ mingw-w64-crt/configure.ac | 21 ++ mingw-w64-crt/crt/CRT_fp10.c | 3 + mingw-w64-crt/crt/crt_handler.c | 2 +- mingw-w64-crt/crt/crtdll.c | 2 +- mingw-w64-crt/crt/crtexe.c | 6 +- mingw-w64-crt/crt/gs_support.c | 2 +- mingw-w64-crt/def-include/func.def.in | 9 + mingw-w64-crt/libarm64/Makefile.am | 289 +++++++++++++++++++++++ mingw-w64-crt/math/arm64/_chgsignl.S | 16 ++ mingw-w64-crt/math/arm64/ceil.S | 16 ++ mingw-w64-crt/math/arm64/ceilf.S | 16 ++ mingw-w64-crt/math/arm64/ceill.S | 15 ++ mingw-w64-crt/math/arm64/copysignl.c | 11 + mingw-w64-crt/math/arm64/exp2.S | 19 ++ mingw-w64-crt/math/arm64/exp2f.S | 16 ++ mingw-w64-crt/math/arm64/floor.S | 15 ++ mingw-w64-crt/math/arm64/floorf.S | 15 ++ mingw-w64-crt/math/arm64/floorl.S | 15 ++ mingw-w64-crt/math/arm64/log2.c | 26 ++ mingw-w64-crt/math/arm64/nearbyint.S | 17 ++ mingw-w64-crt/math/arm64/nearbyintf.S | 17 ++ mingw-w64-crt/math/arm64/nearbyintl.S | 17 ++ mingw-w64-crt/math/arm64/scalbn.c | 26 ++ mingw-w64-crt/math/arm64/sincos.c | 29 +++ mingw-w64-crt/math/arm64/trunc.S | 16 ++ mingw-w64-crt/math/arm64/truncf.S | 16 ++ mingw-w64-crt/math/cephes_mconf.h | 4 +- mingw-w64-crt/math/fabs.c | 4 +- mingw-w64-crt/math/fabsf.c | 4 +- mingw-w64-crt/math/fabsl.c | 2 +- mingw-w64-crt/math/fma.c | 12 + mingw-w64-crt/math/fmaf.c | 12 + mingw-w64-crt/math/fmal.c | 2 +- mingw-w64-crt/math/fpclassifyf.c | 2 +- mingw-w64-crt/math/fpclassifyl.c | 2 +- mingw-w64-crt/math/isnan.c | 2 +- mingw-w64-crt/math/isnanf.c | 2 +- mingw-w64-crt/math/isnanl.c | 2 +- mingw-w64-crt/math/lgammal.c | 4 +- mingw-w64-crt/math/lrint.c | 5 + mingw-w64-crt/math/lrintf.c | 5 + mingw-w64-crt/math/lrintl.c | 2 +- mingw-w64-crt/math/rint.c | 2 + mingw-w64-crt/math/rintf.c | 2 + mingw-w64-crt/math/rintl.c | 2 +- mingw-w64-crt/math/signbit.c | 2 +- mingw-w64-crt/math/signbitf.c | 2 +- mingw-w64-crt/math/signbitl.c | 2 +- mingw-w64-crt/math/sqrt.def.h | 6 + mingw-w64-crt/math/truncl.c | 4 +- mingw-w64-crt/misc/feclearexcept.c | 12 +- mingw-w64-crt/misc/fegetenv.c | 10 +- mingw-w64-crt/misc/fegetexceptflag.c | 10 +- mingw-w64-crt/misc/fegetround.c | 6 +- mingw-w64-crt/misc/feholdexcept.c | 8 +- mingw-w64-crt/misc/feraiseexcept.c | 8 +- mingw-w64-crt/misc/fesetenv.c | 14 +- mingw-w64-crt/misc/fesetexceptflag.c | 13 +- mingw-w64-crt/misc/fesetround.c | 14 +- mingw-w64-crt/misc/fetestexcept.c | 10 +- mingw-w64-crt/stdio/scanf.S | 32 +++ mingw-w64-crt/stdio/scanf2-template.S | 8 +- mingw-w64-crt/stdio/vfscanf.c | 3 +- mingw-w64-crt/stdio/vfwscanf.c | 3 +- mingw-w64-crt/stdio/vsscanf.c | 3 +- mingw-w64-crt/stdio/vswscanf.c | 3 +- mingw-w64-headers/crt/fenv.h | 16 +- mingw-w64-headers/crt/malloc.h | 2 +- mingw-w64-headers/crt/math.h | 30 +-- mingw-w64-headers/crt/setjmp.h | 5 + mingw-w64-headers/include/interlockedapi.h | 2 +- mingw-w64-headers/include/psdk_inc/intrin-impl.h | 149 +++++++++++- mingw-w64-headers/include/winnt.h | 129 +++++++++- 74 files changed, 1412 insertions(+), 86 deletions(-) create mode 100644 mingw-w64-crt/libarm64/Makefile.am create mode 100644 mingw-w64-crt/math/arm64/_chgsignl.S create mode 100644 mingw-w64-crt/math/arm64/ceil.S create mode 100644 mingw-w64-crt/math/arm64/ceilf.S create mode 100644 mingw-w64-crt/math/arm64/ceill.S create mode 100644 mingw-w64-crt/math/arm64/copysignl.c create mode 100644 mingw-w64-crt/math/arm64/exp2.S create mode 100644 mingw-w64-crt/math/arm64/exp2f.S create mode 100644 mingw-w64-crt/math/arm64/floor.S create mode 100644 mingw-w64-crt/math/arm64/floorf.S create mode 100644 mingw-w64-crt/math/arm64/floorl.S create mode 100644 mingw-w64-crt/math/arm64/log2.c create mode 100644 mingw-w64-crt/math/arm64/nearbyint.S create mode 100644 mingw-w64-crt/math/arm64/nearbyintf.S create mode 100644 mingw-w64-crt/math/arm64/nearbyintl.S create mode 100644 mingw-w64-crt/math/arm64/scalbn.c create mode 100644 mingw-w64-crt/math/arm64/sincos.c create mode 100644 mingw-w64-crt/math/arm64/trunc.S create mode 100644 mingw-w64-crt/math/arm64/truncf.S -- 2.7.4 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public