1*4882a593SmuzhiyunFrom a54561be5588ac9b16d3c20760b9b554168bb8aa Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: Peter Seiderer <pseiderer@users.noreply.github.com> 3*4882a593SmuzhiyunDate: Thu, 31 Oct 2019 21:26:27 +0100 4*4882a593SmuzhiyunSubject: [PATCH] Pseiderer/add nios2 and xtensa 001 (#119) 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun* double-conversion: enable for nios2 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunNios2 supports double conversion, tested using qemu: 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun./main || echo "correct" 11*4882a593Smuzhiyuncorrect 12*4882a593Smuzhiyununame -a 13*4882a593SmuzhiyunLinux buildroot 4.19.16 #4 Sat Aug 3 14:46:48 CEST 2019 nios2 GNU/Linux 14*4882a593Smuzhiyun 15*4882a593SmuzhiyunSolves build error 16*4882a593Smuzhiyun 17*4882a593SmuzhiyunIn file included from double-conversion.h:42:0, 18*4882a593Smuzhiyun from number_decimalquantity.cpp:19: 19*4882a593Smuzhiyundouble-conversion-utils.h:119:2: error: #error Target architecture was not detected as supported by Double-Conversion. 20*4882a593Smuzhiyun #error Target architecture was not detected as supported by Double-Conversion. 21*4882a593Smuzhiyun 22*4882a593Smuzhiyundetected by buildroot autobuilders: 23*4882a593Smuzhiyunhttp://autobuild.buildroot.net/results/91e/91eaec34708d91f8a05af189243be0b7cabce31b/ 24*4882a593Smuzhiyun 25*4882a593SmuzhiyunPatch sent upstream: https://github.com/unicode-org/icu/pull/725 26*4882a593SmuzhiyunBug report: https://unicode-org.atlassian.net/browse/ICU-20751 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun[Bernd: Fixed path] 29*4882a593SmuzhiyunSigned-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> 30*4882a593Smuzhiyun[Added Changelog entry] 31*4882a593SmuzhiyunSigned-off-by: Peter Seiderer <ps.report@gmx.net> 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun* double-conversion: enable for xtensa 34*4882a593Smuzhiyun 35*4882a593SmuzhiyunSigned-off-by: Peter Seiderer <ps.report@gmx.net> 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun[Retrieved (dand backported) from: 38*4882a593Smuzhiyunhttps://github.com/google/double-conversion/commit/a54561be5588ac9b16d3c20760b9b554168bb8aa] 39*4882a593SmuzhiyunSigned-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> 40*4882a593Smuzhiyun--- 41*4882a593SmuzhiyunNote: 42*4882a593Smuzhiyun 43*4882a593SmuzhiyunDouble-conversion tested with: 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun $ cat div.c 46*4882a593Smuzhiyundouble Div_double(double x, double y) { return x / y; } 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun $ cat main.c 49*4882a593Smuzhiyundouble Div_double(double x, double y); 50*4882a593Smuzhiyun 51*4882a593Smuzhiyunint main(int argc, char** argv) { 52*4882a593Smuzhiyun double result = Div_double(89255.0, 1e22); 53*4882a593Smuzhiyun if (result == 89255e-22) { 54*4882a593Smuzhiyun printf("correct result %e\n", result); 55*4882a593Smuzhiyun return 1; 56*4882a593Smuzhiyun } else { 57*4882a593Smuzhiyun printf("wrong result %e\n", result); 58*4882a593Smuzhiyun return 0; 59*4882a593Smuzhiyun } 60*4882a593Smuzhiyun} 61*4882a593Smuzhiyun 62*4882a593SmuzhiyunTested for xtensa (using qemu_xtensa_lx60_defconfig plus BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE): 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun $ ./host/bin/xtensa-buildroot-linux-uclibc-gcc -c div.c 65*4882a593Smuzhiyun $ ./host/bin/xtensa-buildroot-linux-uclibc-gcc -c main.c 66*4882a593Smuzhiyun $ ./host/bin/xtensa-buildroot-linux-uclibc-gcc -o main main.o div.o 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun $ ./host/bin/qemu-xtensa -L staging main 69*4882a593Smuzhiyuncorrect result 8.925500e-18 70*4882a593Smuzhiyun--- 71*4882a593Smuzhiyun Changelog | 4 ++++ 72*4882a593Smuzhiyun double-conversion/utils.h | 3 ++- 73*4882a593Smuzhiyun 2 files changed, 6 insertions(+), 1 deletion(-) 74*4882a593Smuzhiyun 75*4882a593Smuzhiyundiff --git a/deps/double-conversion/double-conversion/utils.h b/deps/double-conversion/double-conversion/utils.h 76*4882a593Smuzhiyunindex 221467f..98ec28b 100644 77*4882a593Smuzhiyun--- a/deps/double-conversion/double-conversion/utils.h 78*4882a593Smuzhiyun+++ b/deps/double-conversion/double-conversion/utils.h 79*4882a593Smuzhiyun@@ -94,6 +94,7 @@ int main(int argc, char** argv) { 80*4882a593Smuzhiyun defined(__ARMEL__) || defined(__avr32__) || defined(_M_ARM) || defined(_M_ARM64) || \ 81*4882a593Smuzhiyun defined(__hppa__) || defined(__ia64__) || \ 82*4882a593Smuzhiyun defined(__mips__) || \ 83*4882a593Smuzhiyun+ defined(__nios2__) || \ 84*4882a593Smuzhiyun defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ 85*4882a593Smuzhiyun defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \ 86*4882a593Smuzhiyun defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ 87*4882a593Smuzhiyun@@ -102,7 +103,7 @@ int main(int argc, char** argv) { 88*4882a593Smuzhiyun defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \ 89*4882a593Smuzhiyun defined(__riscv) || defined(__e2k__) || \ 90*4882a593Smuzhiyun defined(__or1k__) || defined(__arc__) || \ 91*4882a593Smuzhiyun- defined(__microblaze__) 92*4882a593Smuzhiyun+ defined(__microblaze__) || defined(__XTENSA__) 93*4882a593Smuzhiyun #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 94*4882a593Smuzhiyun #elif defined(__mc68000__) 95*4882a593Smuzhiyun #undef DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 96