From b6ba3989c3ecff8edf1d40540415eecb6a54c267 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduard=20Vintil=C4=83?= Date: Mon, 13 Mar 2023 16:10:44 +0200 Subject: [PATCH] Add riscv64 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Eduard Vintilă --- Makefile.uk.musl.fenv | 3 + Makefile.uk.musl.ldso | 2 + Makefile.uk.musl.math | 249 ++++++++++++++++++ Makefile.uk.musl.setjmp | 3 + Makefile.uk.musl.thread | 4 + __uk_init_tls.c | 3 +- .../0020-Modify-riscv64-clone-wrapper.patch | 66 +++++ ...d-reserved-__unused-in-riscv64-files.patch | 39 +++ 8 files changed, 368 insertions(+), 1 deletion(-) create mode 100644 patches/0020-Modify-riscv64-clone-wrapper.patch create mode 100644 patches/0021-Avoid-reserved-__unused-in-riscv64-files.patch diff --git a/Makefile.uk.musl.fenv b/Makefile.uk.musl.fenv index 71b7c91..890f147 100644 --- a/Makefile.uk.musl.fenv +++ b/Makefile.uk.musl.fenv @@ -17,6 +17,9 @@ else ifeq (x86_32,$(CONFIG_UK_ARCH)) LIBMUSL_FENV_SRCS-y += $(LIBMUSL)/src/fenv/i386/fenv.s|x86_32 else ifeq (x86_64,$(CONFIG_UK_ARCH)) LIBMUSL_FENV_SRCS-y += $(LIBMUSL)/src/fenv/x86_64/fenv.s|x86_64 +else ifeq (riscv64,$(CONFIG_UK_ARCH)) +LIBMUSL_FENV_SRCS-y += $(LIBMUSL)/src/fenv/riscv64/fenv.S|riscv64 +LIBMUSL_FENV_SRCS-y += $(LIBMUSL)/src/fenv/riscv64/fenv-sf.c|riscv64 else LIBMUSL_FENV_SRCS-y += $(LIBMUSL)/src/fenv/fenv.c endif diff --git a/Makefile.uk.musl.ldso b/Makefile.uk.musl.ldso index 7390bf2..192f905 100644 --- a/Makefile.uk.musl.ldso +++ b/Makefile.uk.musl.ldso @@ -30,6 +30,8 @@ LIBMUSL_LDSO_SRCS-y += $(LIBMUSL)/src/ldso/i386/tlsdesc.s|x86_32 else ifeq (x86_64,$(CONFIG_UK_ARCH)) LIBMUSL_LDSO_SRCS-y += $(LIBMUSL)/src/ldso/x86_64/dlsym.s|x86_64 LIBMUSL_LDSO_SRCS-y += $(LIBMUSL)/src/ldso/x86_64/tlsdesc.s|x86_64 +else ifeq (riscv64,$(CONFIG_UK_ARCH)) +LIBMUSL_LDSO_SRCS-y += $(LIBMUSL)/src/ldso/riscv64/dlsym.s|riscv64 else LIBMUSL_LDSO_SRCS-y += $(LIBMUSL)/src/ldso/tlsdesc.c LIBMUSL_LDSO_SRCS-y += $(LIBMUSL)/src/ldso/dlsym.c diff --git a/Makefile.uk.musl.math b/Makefile.uk.musl.math index 0a189e8..adf41b8 100644 --- a/Makefile.uk.musl.math +++ b/Makefile.uk.musl.math @@ -778,6 +778,255 @@ LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/arm/fabs.c|arm LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/arm/fabsf.c|arm LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/arm/sqrt.c|arm LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/arm/sqrtf.c|arm +else ifeq (riscv64,$(CONFIG_UK_ARCH)) +# reset sources proviously added +LIBMUSL_MATH_SRCS-y = +# base sources (skips the ones replaced by riscv64) +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/acos.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/acosf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/acosh.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/acoshf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/acoshl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/acosl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/asin.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/asinf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/asinh.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/asinhf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/asinhl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/asinl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/atan2.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/atan2f.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/atan2l.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/atan.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/atanf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/atanh.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/atanhf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/atanhl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/atanl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/cbrt.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/cbrtf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/cbrtl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/ceil.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/ceilf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/ceill.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/copysign.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/copysignf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/copysignl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__cos.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/cos.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__cosdf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/cosf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/cosh.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/coshf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/coshl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__cosl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/cosl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/erf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/erff.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/erfl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/exp10.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/exp10f.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/exp10l.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/exp2.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/exp2f.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/exp2f_data.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/exp2l.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/exp.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/exp_data.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/expf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/expl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/expm1.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/expm1f.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/expm1l.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__expo2.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__expo2f.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fabs.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fabsf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fabsl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fdim.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fdimf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fdiml.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/finite.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/finitef.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/floor.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/floorf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/floorl.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fma.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fmaf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fmal.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fmax.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fmaxf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fmaxl.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fmin.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fminf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fminl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fmod.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fmodf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/fmodl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__fpclassify.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__fpclassifyf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__fpclassifyl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/frexp.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/frexpf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/frexpl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/hypot.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/hypotf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/hypotl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/ilogb.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/ilogbf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/ilogbl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__invtrigl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/j0.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/j0f.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/j1.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/j1f.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/jn.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/jnf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/ldexp.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/ldexpf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/ldexpl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lgamma.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lgammaf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lgammaf_r.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lgammal.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lgamma_r.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/llrint.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/llrintf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/llrintl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/llround.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/llroundf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/llroundl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log10.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log10f.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log10l.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log1p.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log1pf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log1pl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log2.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log2_data.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log2f.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log2f_data.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log2l.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/logb.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/logbf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/logbl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/log_data.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/logf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/logf_data.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/logl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lrint.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lrintf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lrintl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lround.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lroundf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/lroundl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_divzero.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_divzerof.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_invalid.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_invalidf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_invalidl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_oflow.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_oflowf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_uflow.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_uflowf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_xflow.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__math_xflowf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/modf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/modff.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/modfl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nan.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nanf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nanl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nearbyint.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nearbyintf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nearbyintl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nextafter.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nextafterf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nextafterl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nexttoward.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nexttowardf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/nexttowardl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__polevll.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/pow.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/pow_data.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/powf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/powf_data.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/powl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/remainder.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/remainderf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/remainderl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__rem_pio2.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__rem_pio2f.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__rem_pio2_large.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__rem_pio2l.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/remquo.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/remquof.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/remquol.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/rint.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/rintf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/rintl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/round.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/roundf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/roundl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/scalb.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/scalbf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/scalbln.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/scalblnf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/scalblnl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/scalbn.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/scalbnf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/scalbnl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__signbit.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__signbitf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__signbitl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/signgam.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/significand.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/significandf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__sin.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sin.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sincos.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sincosf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sincosl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__sindf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sinf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sinh.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sinhf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sinhl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__sinl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sinl.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sqrt.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sqrt_data.c +#LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sqrtf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/sqrtl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__tan.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/tan.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__tandf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/tanf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/tanh.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/tanhf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/tanhl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/__tanl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/tanl.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/tgamma.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/tgammaf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/tgammal.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/trunc.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/truncf.c +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/truncl.c +# riscv64 specific sources +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/copysign.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/copysignf.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/fabs.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/fabsf.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/fma.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/fmaf.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/fmax.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/fmaxf.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/fmin.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/fminf.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/sqrt.c|riscv64 +LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/riscv64/sqrtf.c|riscv64 else LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/acosl.c LIBMUSL_MATH_SRCS-y += $(LIBMUSL)/src/math/asinl.c diff --git a/Makefile.uk.musl.setjmp b/Makefile.uk.musl.setjmp index 9a45050..d3bc2b1 100644 --- a/Makefile.uk.musl.setjmp +++ b/Makefile.uk.musl.setjmp @@ -13,6 +13,9 @@ LIBMUSL_SETJMP_SRCS-y += $(LIBMUSL)/src/setjmp/i386/setjmp.s|i386 else ifeq (x86_64,$(CONFIG_UK_ARCH)) LIBMUSL_SETJMP_SRCS-y += $(LIBMUSL)/src/setjmp/x86_64/longjmp.s|x86_64 LIBMUSL_SETJMP_SRCS-y += $(LIBMUSL)/src/setjmp/x86_64/setjmp.s|x86_64 +else ifeq (riscv64,$(CONFIG_UK_ARCH)) +LIBMUSL_SETJMP_SRCS-y += $(LIBMUSL)/src/setjmp/riscv64/longjmp.S|riscv64 +LIBMUSL_SETJMP_SRCS-y += $(LIBMUSL)/src/setjmp/riscv64/setjmp.S|riscv64 endif diff --git a/Makefile.uk.musl.thread b/Makefile.uk.musl.thread index b43ae98..427ad6a 100644 --- a/Makefile.uk.musl.thread +++ b/Makefile.uk.musl.thread @@ -173,6 +173,10 @@ else ifeq (arm64,$(CONFIG_UK_ARCH)) LIBMUSL_THREAD_SRCS-y += $(LIBMUSL)/src/thread/aarch64/__unmapself.s|aarch64 LIBMUSL_THREAD_SRCS-y += $(LIBMUSL)/src/thread/aarch64/clone.s|aarch64 LIBMUSL_THREAD_SRCS-y += $(LIBMUSL)/src/thread/aarch64/syscall_cp.s|aarch64 +else ifeq (riscv64,$(CONFIG_UK_ARCH)) +LIBMUSL_THREAD_SRCS-y += $(LIBMUSL)/src/thread/riscv64/clone.s|riscv64 +LIBMUSL_THREAD_SRCS-y += $(LIBMUSL)/src/thread/riscv64/syscall_cp.s|riscv64 +LIBMUSL_THREAD_SRCS-y += $(LIBMUSL)/src/thread/riscv64/__unmapself.s|riscv64 else LIBMUSL_THREAD_SRCS-y += $(LIBMUSL)/src/thread/clone.c|thread endif diff --git a/__uk_init_tls.c b/__uk_init_tls.c index 48963d0..0d5a78a 100644 --- a/__uk_init_tls.c +++ b/__uk_init_tls.c @@ -96,6 +96,7 @@ void *__uk_copy_tls(unsigned char *mem) td = (pthread_t) ukarch_tls_tcb_get(ukarch_tls_tlsp(tls_area)); td->dtv = tls_area; + td->self = td->next = td->prev = td; return td; } @@ -182,7 +183,7 @@ int uk_thread_uktcb_init(struct uk_thread *thread, void *tcb) td->stack = thread->_mem.stack; td->stack_size = __STACK_SIZE; - td->self = td; + td->self = td->next = td->prev = td; td->tsd = (void *)uk_memalign( uk_alloc_get_default(), __PAGE_SIZE, diff --git a/patches/0020-Modify-riscv64-clone-wrapper.patch b/patches/0020-Modify-riscv64-clone-wrapper.patch new file mode 100644 index 0000000..c764bce --- /dev/null +++ b/patches/0020-Modify-riscv64-clone-wrapper.patch @@ -0,0 +1,66 @@ +From 48a182ac6fc609298b946fcf1232f330e3691d49 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eduard=20Vintil=C4=83?= +Date: Wed, 15 Mar 2023 16:43:47 +0200 +Subject: [PATCH] Modify riscv64 `clone` wrapper +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Eduard Vintilă +--- + src/thread/riscv64/clone.s | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +diff --git a/src/thread/riscv64/clone.s b/src/thread/riscv64/clone.s +index db908248..068458b9 100644 +--- a/src/thread/riscv64/clone.s ++++ b/src/thread/riscv64/clone.s +@@ -1,8 +1,13 @@ + # __clone(func, stack, flags, arg, ptid, tls, ctid) + # a0, a1, a2, a3, a4, a5, a6 + +-# syscall(SYS_clone, flags, stack, ptid, tls, ctid) +-# a7 a0, a1, a2, a3, a4 ++# see: lib/posix-process/clone.c ++# uk_syscall_r_clone(flags, stack, ptid, tlsp, ctid) ++# a0, a1, a2, a3, a4 ++ ++# see: lib/posix-process/process.c ++# uk_syscall_r_exit(status) ++# a0 + + .global __clone + .type __clone, %function +@@ -12,16 +17,17 @@ __clone: + sd a0, 0(a1) + sd a3, 8(a1) + +- # Call SYS_clone ++ # Call uk_syscall_r_clone + mv a0, a2 + mv a2, a4 + mv a3, a5 + mv a4, a6 +- li a7, 220 # SYS_clone +- ecall ++ mv s1, ra # Save parent return address ++ call uk_syscall_r_clone + + beqz a0, 1f + # Parent ++ mv ra, s1 + ret + + # Child +@@ -30,5 +36,6 @@ __clone: + jalr a1 + + # Exit +- li a7, 93 # SYS_exit +- ecall ++ mv a0, x0 ++ call uk_syscall_r_exit ++ wfi +-- +2.39.1 + diff --git a/patches/0021-Avoid-reserved-__unused-in-riscv64-files.patch b/patches/0021-Avoid-reserved-__unused-in-riscv64-files.patch new file mode 100644 index 0000000..7f86fb7 --- /dev/null +++ b/patches/0021-Avoid-reserved-__unused-in-riscv64-files.patch @@ -0,0 +1,39 @@ +From 96d27048330729c8e82c75efd82536982a31f7dc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eduard=20Vintil=C4=83?= +Date: Tue, 14 Mar 2023 10:38:20 +0200 +Subject: [PATCH] Avoid reserved __unused in riscv64 files +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Eduard Vintilă +--- + arch/riscv64/bits/stat.h | 2 +- + arch/riscv64/kstat.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/riscv64/bits/stat.h b/arch/riscv64/bits/stat.h +index b7f4221..d1778f7 100644 +--- a/arch/riscv64/bits/stat.h ++++ b/arch/riscv64/bits/stat.h +@@ -14,5 +14,5 @@ struct stat { + struct timespec st_atim; + struct timespec st_mtim; + struct timespec st_ctim; +- unsigned __unused[2]; ++ unsigned _pad[2]; + }; +diff --git a/arch/riscv64/kstat.h b/arch/riscv64/kstat.h +index 92625f3..fb1087b 100644 +--- a/arch/riscv64/kstat.h ++++ b/arch/riscv64/kstat.h +@@ -17,5 +17,5 @@ struct kstat { + long st_mtime_nsec; + long st_ctime_sec; + long st_ctime_nsec; +- unsigned __unused[2]; ++ unsigned _pad[2]; + }; +-- +2.39.1 +