public inbox for [email protected]
help / color / mirror / Atom feedFrom: Dave Cramer <[email protected]>
To: Andrew Dunstan <[email protected]>
Cc: Michael Paquier <[email protected]>
Cc: Anthony Roberts <[email protected]>
Cc: Peter Eisentraut <[email protected]>
Cc: Daniel Gustafsson <[email protected]>
Cc: Tom Lane <[email protected]>
Cc: Mike Holmes <[email protected]>
Cc: Andres Freund <[email protected]>
Cc: Thomas Munro <[email protected]>
Cc: PostgreSQL Hackers <[email protected]>
Cc: Lina Iyer <[email protected]>
Subject: Re: [PATCH] Add native windows on arm64 support
Date: Fri, 26 Jan 2024 09:18:50 -0500
Message-ID: <CADK3HHJgTqi7ZeKhBvegTk1=rzDYfGgEJqZN-hNMvQPAJ6R3PA@mail.gmail.com> (raw)
In-Reply-To: <[email protected]>
References: <CADK3HH+T0rQ58sYp0NnvkvopcEHA74Zmg=z7J5=skRrX+odnYw@mail.gmail.com>
<[email protected]>
<CADK3HHJ4uCsw0b5-c_HvYebHn1jQB-hV007Jf5c7FwGrCvDNSg@mail.gmail.com>
<[email protected]>
<[email protected]>
<CADK3HHK4RVz8oQXiQ_bYiUx1ZXWNbfF+=r5kJ8hhfU8+MD1DOQ@mail.gmail.com>
<CAC1bJ4-tu8Ea0+D6sHdC_HuOSGbw6upFkr5B=eq_m0-2yf_-cg@mail.gmail.com>
<CADK3HHJXwHLHk12m99TQ+cOF5BuJr2=C4xOhVFXmGEPLfC+7XA@mail.gmail.com>
<[email protected]>
<CADK3HHKs8PkPSU7vGKxcVq3qcHv95YDyOXz6DEGoS1o=tz7QRQ@mail.gmail.com>
<[email protected]>
<[email protected]>
On Fri, 26 Jan 2024 at 07:36, Andrew Dunstan <[email protected]> wrote:
>
> On 2024-01-25 Th 20:32, Michael Paquier wrote:
> > On Thu, Jan 25, 2024 at 04:52:30PM -0500, Dave Cramer wrote:
> >> On Thu, 25 Jan 2024 at 16:32, Andrew Dunstan <[email protected]>
> wrote:
> >>> On 2024-01-25 Th 16:17, Dave Cramer wrote:
> >>> Yeah, I think the default Developer Command Prompt for VS2022 is set up
> >>> for x86 builds. AIUI you should start by executing "vcvarsall
> x64_arm64".
> >> Yup, now I'm in the same state you are
> > Wait a minute here. Based on [1], x64_arm64 means you can use a x64
> > host and you'll be able to produce ARM64 builds, still these will not
> > be able to run on the host where they were built. How much of the
> > patch posted upthread is required to produce such builds? Basically
> > everything from it, I guess, so as build dependencies can be
> > satisfied?
> >
> > [1]:
> https://learn.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=msvc-170
>
>
> If you look at the table here x86 and x64 are the only supported host
> architectures. But that's OK, the x64 binaries will run on arm64 (W11
> ARM64 has x64 emulation builtin). If that didn't work Dave and I would
> not have got as far as we have. But you want the x64_arm64 argument to
> vcvarsall so you will get ARM64 output.
>
I've rebuilt it using x64_arm64 and with the attached (very naive patch)
and I still get an x64 binary :(
>
>
Attachments:
[application/octet-stream] lock.patch (1.6K, ../CADK3HHJgTqi7ZeKhBvegTk1=rzDYfGgEJqZN-hNMvQPAJ6R3PA@mail.gmail.com/3-lock.patch)
download | inline diff:
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index aa06e49da2..61f365d0f5 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -256,8 +256,8 @@ spin_delay(void)
* We use the int-width variant of the builtin because it works on more chips
* than other widths.
*/
-#if defined(__arm__) || defined(__arm) || defined(__aarch64__)
-#ifdef HAVE_GCC__SYNC_INT32_TAS
+#if defined(__arm__) || defined(__arm) || defined(__aarch64__) || defined(_M_ARM64)
+//#ifdef HAVE_GCC__SYNC_INT32_TAS
#define HAS_TEST_AND_SET
#define TAS(lock) tas(lock)
@@ -277,7 +277,7 @@ tas(volatile slock_t *lock)
* high-core-count ARM64 processors. It seems mostly a wash for smaller gear,
* and ISB doesn't exist at all on pre-v7 ARM chips.
*/
-#if defined(__aarch64__)
+#if defined(__aarch64__) || defined(_M_ARM64)
#define SPIN_DELAY() spin_delay()
@@ -288,9 +288,9 @@ spin_delay(void)
" isb; \n");
}
-#endif /* __aarch64__ */
-#endif /* HAVE_GCC__SYNC_INT32_TAS */
-#endif /* __arm__ || __arm || __aarch64__ */
+#endif /* __aarch64__ _M_ARM64 */
+//#endif /* HAVE_GCC__SYNC_INT32_TAS */
+#endif /* __arm__ || __arm || __aarch64__ _M_ARM64 */
/* S/390 and S/390x Linux (32- and 64-bit zSeries) */
@@ -710,6 +710,7 @@ typedef LONG slock_t;
/* If using Visual C++ on Win64, inline assembly is unavailable.
* Use a _mm_pause intrinsic instead of rep nop.
*/
+#if !defined(_M_ARM64)
#if defined(_WIN64)
static __forceinline void
spin_delay(void)
@@ -724,6 +725,7 @@ spin_delay(void)
__asm rep nop;
}
#endif
+#endif
#include <intrin.h>
#pragma intrinsic(_ReadWriteBarrier)
view thread (120+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]
Subject: Re: [PATCH] Add native windows on arm64 support
In-Reply-To: <CADK3HHJgTqi7ZeKhBvegTk1=rzDYfGgEJqZN-hNMvQPAJ6R3PA@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox