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

Reply via email to