Fixes for Windows ARM64 (#251)

* aarch64_fpmath.h: deal with LLP64 (Windows ARM64)

use uint64_t instead of unsigned long, as unsigned long is only 32 bits on Windows

* Make.inc: WINNT aarch64 long double is double

Add to list along with Darwin
This commit is contained in:
jeremyd2019 2021-09-09 21:09:04 -07:00 committed by GitHub
parent a9568fbd22
commit 3d4a902f31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 5 deletions

View File

@ -151,7 +151,7 @@ ifneq ($(filter $(ARCH),i387 amd64),)
# `long double` is the same as `double`.
LONG_DOUBLE_NOT_DOUBLE := 1
else ifeq ($(ARCH), aarch64)
ifneq ($(OS),Darwin)
ifeq ($(filter $(OS),Darwin WINNT),)
LONG_DOUBLE_NOT_DOUBLE := 1
endif
endif

View File

@ -30,15 +30,15 @@
union IEEEl2bits {
long double e;
struct {
unsigned long manl :64;
unsigned long manh :48;
uint64_t manl :64;
uint64_t manh :48;
unsigned int exp :15;
unsigned int sign :1;
} bits;
/* TODO andrew: Check the packing here */
struct {
unsigned long manl :64;
unsigned long manh :48;
uint64_t manl :64;
uint64_t manh :48;
unsigned int expsign :16;
} xbits;
};