diff --git a/builds/posix/prefix.linux_aarch64 b/builds/posix/prefix.linux_aarch64
new file mode 100644
index 0000000..5c9aac7
--- /dev/null
+++ b/builds/posix/prefix.linux_aarch64
@@ -0,0 +1,31 @@
+# The contents of this file are subject to the Interbase Public
+# License Version 1.0 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy
+# of the License at http://www.Inprise.com/IPL.html
+#
+# Software distributed under the License is distributed on an
+# "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
+# or implied. See the License for the specific language governing
+# rights and limitations under the License.
+#
+# The Original Code was created by Inprise Corporation
+# and its predecessors. Portions created by Inprise Corporation are
+# Copyright (C) Inprise Corporation.
+#
+# All Rights Reserved.
+# Contributor(s): ______________________________________.
+# Start of file prefix.linux: $(VERSION) $(PLATFORM)
+#
+# 2 Oct 2002, Nickolay Samofatov - Major cleanup
+
+COMMON_FLAGS=-DLINUX -DAARCH64 -pipe -MMD -fPIC -DFB_SEND_FLAGS=MSG_NOSIGNAL -fsigned-char -fmessage-length=0
+
+PROD_FLAGS=-O3 -DNDEBUG $(COMMON_FLAGS)
+DEV_FLAGS=-ggdb -p -Wall $(COMMON_FLAGS)
+
+OS_ServerFiles=inet_server.cpp
+
+EMBED_UTIL_TARGETS=gstat gsec nbackup fb_lock_print fbguard fbsvcmgr fbtracemgr
+CLIENT_UTIL_TARGETS=gstat gsec nbackup fb_lock_print fbguard fbmgr_bin fbsvcmgr fbtracemgr
+
+Physical_IO_Module=os/posix/unix.cpp
diff --git a/configure.in b/configure.in
index afa27f5..67a6f25 100644
--- a/configure.in
+++ b/configure.in
@@ -213,6 +213,17 @@ dnl CPU_TYPE=ppc64
STD_ICU=true
;;
+ aarch64*-*-linux*)
+ MAKEFILE_PREFIX=linux_aarch64
+ INSTALL_PREFIX=linux
+ PLATFORM=LINUX
+ AC_DEFINE(LINUX, 1, [Define this if OS is Linux])
+ EDITLINE_FLG=Y
+ SHRLIB_EXT=so
+ STD_EDITLINE=true
+ STD_ICU=true
+ ;;
+
sparc*-*-linux* | sparc*-*-gnu* | sparc*-*-k*bsd*-gnu)
MAKEFILE_PREFIX=linux_sparc32
INSTALL_PREFIX=linux
diff --git a/src/jrd/common.h b/src/jrd/common.h
index fb2c57f..69e9090 100644
--- a/src/jrd/common.h
+++ b/src/jrd/common.h
@@ -192,6 +192,10 @@
#define RISC_ALIGNMENT
#endif /* alpha */
+#ifdef __aarch64__
+#define IMPLEMENTATION isc_info_db_impl_linux_aarch64 /* 84 */
+#endif /* alpha */
+
#endif /* LINUX */
diff --git a/src/jrd/inf_pub.h b/src/jrd/inf_pub.h
index 32ba5b3..4cab797 100644
--- a/src/jrd/inf_pub.h
+++ b/src/jrd/inf_pub.h
@@ -215,6 +215,7 @@ enum info_db_implementations
isc_info_db_impl_linux_sheb = 81,
isc_info_db_impl_linux_hppa = 82,
isc_info_db_impl_linux_alpha = 83,
+ isc_info_db_impl_linux_aarch64 = 84,
isc_info_db_impl_last_value // Leave this LAST!
};
diff --git a/src/jrd/pag.cpp b/src/jrd/pag.cpp
index e3a75f7..5d9ba36 100644
--- a/src/jrd/pag.cpp
+++ b/src/jrd/pag.cpp
@@ -162,9 +162,10 @@ static const int CLASS_LINUX_SH = 38; // LINUX/SH (little-endian)
static const int CLASS_LINUX_SHEB = 39; // LINUX/SH (big-endian)
static const int CLASS_LINUX_HPPA = 40; // LINUX/HPPA
static const int CLASS_LINUX_ALPHA = 41; // LINUX/ALPHA
+static const int CLASS_LINUX_AARCH64 = 42; // LINUX/AARCH64
static const int CLASS_MAX10 = CLASS_LINUX_AMD64; // This should not be changed, no new ports with ODS10
-static const int CLASS_MAX = CLASS_LINUX_ALPHA;
+static const int CLASS_MAX = CLASS_LINUX_AARCH64;
// ARCHITECTURE COMPATIBILITY CLASSES
@@ -263,7 +264,8 @@ static const ArchitectureType archMatrix[CLASS_MAX + 1] =
archLittleEndian, // CLASS_LINUX_SH
archBigEndian, // CLASS_LINUX_SHEB
archBigEndian, // CLASS_LINUX_HPPA
- archLittleEndian // CLASS_LINUX_ALPHA
+ archLittleEndian, // CLASS_LINUX_ALPHA
+ archLittleEndian // CLASS_LINUX_AARCH64
};
#ifdef __sun
@@ -327,6 +329,8 @@ const SSHORT CLASS = CLASS_LINUX_SHEB;
const SSHORT CLASS = CLASS_LINUX_HPPA;
#elif defined(ALPHA)
const SSHORT CLASS = CLASS_LINUX_ALPHA;
+#elif defined(__aarch64__)
+const SSHORT CLASS = CLASS_LINUX_AARCH64;
#else
#error no support on other hardware for Linux
#endif
diff --git a/src/jrd/utl.cpp b/src/jrd/utl.cpp
index fabc027..d8b7ae8 100644
--- a/src/jrd/utl.cpp
+++ b/src/jrd/utl.cpp
@@ -228,6 +228,7 @@ static const TEXT* const impl_implementation[] =
"Firebird/linux SHEB", // 81
"Firebird/linux HPPA", // 82
"Firebird/linux ALPHA" // 83
+ "Firebird/linux AArch64" // 84
};