From 1e8e7858db84750a77006d307bf28e9686f9414e Mon Sep 17 00:00:00 2001 From: AlexPeshkoff Date: Wed, 21 Mar 2018 15:19:20 +0300 Subject: [PATCH] Patch for CORE-5779: support for riscv64, also some code fixes related with prior ports --- configure.ac | 12 ++++++++++ src/common/classes/DbImplementation.cpp | 29 ++++++++++++++----------- src/common/common.h | 4 ++++ src/include/gen/msgs.h | 2 +- src/jrd/inf_pub.h | 2 +- 5 files changed, 34 insertions(+), 15 deletions(-) diff --git a/configure.ac b/configure.ac index ee114415b6..235dc373d4 100644 --- a/configure.ac +++ b/configure.ac @@ -249,6 +249,18 @@ dnl CPU_TYPE=ppc64 libdir=/usr/lib64 ;; + riscv64*-*-linux*) + MAKEFILE_PREFIX=linux_riscv64 + 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 + libdir=/usr/lib64 + ;; + powerpc64le-*-linux*) MAKEFILE_PREFIX=linux_powerpc64el INSTALL_PREFIX=linux diff --git a/src/common/classes/DbImplementation.cpp b/src/common/classes/DbImplementation.cpp index f948bddbc3..95b1e33299 100644 --- a/src/common/classes/DbImplementation.cpp +++ b/src/common/classes/DbImplementation.cpp @@ -49,6 +49,7 @@ static const UCHAR CpuAlpha = 14; static const UCHAR CpuArm64 = 15; static const UCHAR CpuPowerPc64el = 16; static const UCHAR CpuM68k = 17; +static const UCHAR CpuRiscV64 = 18; static const UCHAR OsWindows = 0; static const UCHAR OsLinux = 1; @@ -89,7 +90,8 @@ const char* hardware[] = { "Alpha", "ARM64", "PowerPC64el", - "M68k" + "M68k", + "RiscV64" }; const char* operatingSystem[] = { @@ -116,22 +118,23 @@ const char* compiler[] = { // This table lists pre-fb3 implementation codes const UCHAR backwardTable[FB_NELEM(hardware) * FB_NELEM(operatingSystem)] = { -// Intel AMD Sparc PPC PPC64 MIPSEL MIPS ARM IA64 s390 s390x SH SHEB HPPA Alpha ARM64 PowerPC64el -/* Windows */ 50, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* Linux */ 60, 66, 65, 69, 86, 71, 72, 75, 76, 79, 78, 80, 81, 82, 83, 84, 85, -/* Darwin */ 70, 73, 0, 63, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* Solaris */ 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* HPUX */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -/* AIX */ 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* MVS */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* FreeBSD */ 61, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* NetBSD */ 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +// Intel AMD Sparc PPC PPC64 MIPSEL MIPS ARM IA64 s390 s390x SH SHEB HPPA Alpha ARM64 PPC64el M68k RiscV64 +/* Windows */ 50, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* Linux */ 60, 66, 65, 69, 86, 71, 72, 75, 76, 79, 78, 80, 81, 82, 83, 84, 85, 87, 88, +/* Darwin */ 70, 73, 0, 63, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* Solaris */ 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* HPUX */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, +/* AIX */ 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* MVS */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* FreeBSD */ 61, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* NetBSD */ 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + const UCHAR backEndianess[FB_NELEM(hardware)] = { -// Intel AMD Sparc PPC PPC64 MIPSEL MIPS ARM IA64 s390 s390x SH SHEB HPPA Alpha ARM64 PowerPC64el M68k - 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1 +// Intel AMD Sparc PPC PPC64 MIPSEL MIPS ARM IA64 s390 s390x SH SHEB HPPA Alpha ARM64 PPC64el M68k RiscV64 + 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, }; } // anonymous namespace diff --git a/src/common/common.h b/src/common/common.h index 9f2c8c067f..7d67bf5845 100644 --- a/src/common/common.h +++ b/src/common/common.h @@ -139,6 +139,10 @@ #define FB_CPU CpuArm64 #endif /* ARM64 */ +#ifdef RISCV64 +#define FB_CPU CpuRiscV64 +#endif /* RISCV64 */ + #ifdef sparc #define FB_CPU CpuUltraSparc #define RISC_ALIGNMENT diff --git a/src/include/gen/msgs.h b/src/include/gen/msgs.h index 001cceacb9..eef9a446f5 100644 --- a/src/include/gen/msgs.h +++ b/src/include/gen/msgs.h @@ -813,7 +813,7 @@ Data source : @4"}, /* eds_statement */ {335545106, "Error occurred during login, please check server firebird.log for details"}, /* login_error */ {335545107, "Database already opened with engine instance, incompatible with current"}, /* already_opened */ {335545108, "Invalid crypt key @1"}, /* bad_crypt_key */ - {335545109, "Page requires encyption but crypt plugin is missing"}, /* encrypt_error */ + {335545109, "Page requires encryption but crypt plugin is missing"}, /* encrypt_error */ {335545110, "Maximum index depth (@1 levels) is reached"}, /* max_idx_depth */ {335545111, "System privilege @1 does not exist"}, /* wrong_prvlg */ {335545112, "System privilege @1 is missing"}, /* miss_prvlg */ diff --git a/src/jrd/inf_pub.h b/src/jrd/inf_pub.h index a3513f98be..df61e9c498 100644 --- a/src/jrd/inf_pub.h +++ b/src/jrd/inf_pub.h @@ -256,7 +256,7 @@ enum info_db_implementations isc_info_db_impl_linux_ppc64el = 85, isc_info_db_impl_linux_ppc64 = 86, isc_info_db_impl_linux_m68k = 87, - + isc_info_db_impl_linux_riscv64 = 88, isc_info_db_impl_last_value // Leave this LAST! };