From 8f71c90ca83f286fb7cde1c31744944490782009 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Thu, 28 Nov 2019 16:02:52 +0100 Subject: [PATCH] dde_rump: backport aarch64 (Fix #3565) --- repos/dde_rump/lib/import/import-rump.mk | 6 +++++ repos/dde_rump/lib/mk/spec/arm_64/rump.mk | 23 +++++++++++++++++++ .../lib/mk/spec/arm_64/rump_include.mk | 23 +++++++++++++++++++ repos/dde_rump/patches/aarch64.patch | 20 ++++++++++++++++ repos/dde_rump/ports/dde_rump.hash | 2 +- repos/dde_rump/ports/dde_rump.port | 13 +++++++++-- repos/dde_rump/recipes/src/rump/content.mk | 6 +++-- .../src/lib/rump/spec/arm_64/arm/pic/picvar.h | 2 ++ 8 files changed, 90 insertions(+), 5 deletions(-) create mode 100644 repos/dde_rump/lib/mk/spec/arm_64/rump.mk create mode 100644 repos/dde_rump/lib/mk/spec/arm_64/rump_include.mk create mode 100644 repos/dde_rump/patches/aarch64.patch create mode 100644 repos/dde_rump/src/lib/rump/spec/arm_64/arm/pic/picvar.h diff --git a/repos/dde_rump/lib/import/import-rump.mk b/repos/dde_rump/lib/import/import-rump.mk index a5061d765e..7f779d7df6 100644 --- a/repos/dde_rump/lib/import/import-rump.mk +++ b/repos/dde_rump/lib/import/import-rump.mk @@ -16,6 +16,12 @@ ifeq ($(filter-out $(SPECS),x86_64),) INC_DIR += $(RUMP_PORT_DIR)/src/sys/arch/amd64/include endif +ifeq ($(filter-out $(SPECS),arm_64),) + INC_DIR := $(RUMP_PORT_DIR)/src/sys/rump/include $(INC_DIR) + INC_DIR += $(REP_DIR)/src/lib/rump/spec/arm_64 + INC_DIR += $(RUMP_PORT_DIR)/../dde_rump_aarch64_backport/aarch64/include +endif + INC_DIR += $(LIBGCC_INC_DIR) \ $(RUMP_PORT_DIR)/src/sys \ $(RUMP_PORT_DIR)/src/sys/rump/include \ diff --git a/repos/dde_rump/lib/mk/spec/arm_64/rump.mk b/repos/dde_rump/lib/mk/spec/arm_64/rump.mk new file mode 100644 index 0000000000..317e16da8c --- /dev/null +++ b/repos/dde_rump/lib/mk/spec/arm_64/rump.mk @@ -0,0 +1,23 @@ +SRC_NOLINK += atomic_add_16.S atomic_add_8.S atomic_and_64.S atomic_cas_32.S atomic_dec_32.S \ + atomic_inc_64.S atomic_nand_64.S atomic_or_32.S atomic_sub_16.S atomic_sub_8.S \ + atomic_swap_64.S atomic_xor_32.S membar_ops.S atomic_add_32.S atomic_and_16.S \ + atomic_and_8.S atomic_cas_64.S atomic_dec_64.S atomic_nand_16.S atomic_nand_8.S \ + atomic_or_64.S atomic_sub_32.S atomic_swap_16.S atomic_swap_8.S atomic_xor_64.S \ + atomic_add_64.S atomic_and_32.S atomic_cas_16.S atomic_cas_8.S atomic_inc_32.S \ + atomic_nand_32.S atomic_or_16.S atomic_or_8.S atomic_sub_64.S atomic_swap_32.S \ + atomic_xor_16.S atomic_xor_8.S bswap64.c + +SRC_NOLINK += rump_generic_cpu.c rump_generic_pmap.c + +INC_DIR += $(RUMP_PORT_DIR)/src/sys/rump/include +INC_DIR += $(REP_DIR)/src/lib/rump/spec/arm_64 + +include $(REP_DIR)/lib/mk/rump.inc + +vpath %.S $(RUMP_PORT_DIR)/../libc +vpath %.c $(RUMP_PORT_DIR)/src/common/lib/libc/gen +vpath %.c $(RUMP_PORT_DIR)/../dde_rump_aarch64_backport/aarch64/aarch64 +vpath %.c $(RUMP_PORT_DIR)/../dde_rump_aarch64_backport/arm/arm32 +vpath %.c $(RUMP_PORT_DIR)/src/sys/rump/librump/rumpkern/arch/generic + +CC_CXX_WARN_STRICT = diff --git a/repos/dde_rump/lib/mk/spec/arm_64/rump_include.mk b/repos/dde_rump/lib/mk/spec/arm_64/rump_include.mk new file mode 100644 index 0000000000..5f36b5a5ca --- /dev/null +++ b/repos/dde_rump/lib/mk/spec/arm_64/rump_include.mk @@ -0,0 +1,23 @@ +ifeq ($(called_from_lib_mk),yes) + +include $(REP_DIR)/lib/mk/rump_common.inc + +BACKPORT := $(call select_from_ports,dde_rump)/src/lib/dde_rump_aarch64_backport + +$(RUMP_BASE): + mkdir -p $@ + +$(RUMP_BASE)/include/machine: $(RUMP_BASE) + $(VERBOSE_MK)mkdir -p $(RUMP_BASE)/include + $(VERBOSE_MK)ln -sf $(BACKPORT)/arm/include $(RUMP_BASE)/include/arm + $(VERBOSE_MK)ln -sf $(BACKPORT)/aarch64/include $(RUMP_BASE)/include/aarch64 + $(VERBOSE_MK)ln -sf $(BACKPORT)/evbarm64/include $(RUMP_BASE)/include/machine + $(VERBOSE_MK)touch -a $(RUMP_BASE)/include/pthread_types.h + +all: $(RUMP_BASE)/include/machine + +endif + +# vi:set ft=make : + +CC_CXX_WARN_STRICT = diff --git a/repos/dde_rump/patches/aarch64.patch b/repos/dde_rump/patches/aarch64.patch new file mode 100644 index 0000000000..b515e1c71b --- /dev/null +++ b/repos/dde_rump/patches/aarch64.patch @@ -0,0 +1,20 @@ +diff --git a/arm/arm32/kobj_machdep.c b/arm/arm32/kobj_machdep.c +index 6fc772f..146f580 100644 +--- src/lib/dde_rump_aarch64_backport/arm/arm32/kobj_machdep.c ++++ src/lib/dde_rump_aarch64_backport/arm/arm32/kobj_machdep.c +@@ -66,6 +66,7 @@ __KERNEL_RCSID(0, "$NetBSD: kobj_machdep.c,v 1.10 2014/11/07 21:28:32 martin Exp + #include + + #include ++#ifndef _RUMPKERNEL + #include + + int +@@ -206,6 +207,7 @@ kobj_reloc(kobj_t ko, uintptr_t relocbase, const void *data, + rtype, where, symidx); + return -1; + } ++#endif + + #if __ARMEB__ + diff --git a/repos/dde_rump/ports/dde_rump.hash b/repos/dde_rump/ports/dde_rump.hash index b0473edb89..44adadcff9 100644 --- a/repos/dde_rump/ports/dde_rump.hash +++ b/repos/dde_rump/ports/dde_rump.hash @@ -1 +1 @@ -b81e1b234bf98a6b0a35dec429e8a826b735bc08 +9afe5679a00a8df0f3c5a9a5838956dc993f1b0a diff --git a/repos/dde_rump/ports/dde_rump.port b/repos/dde_rump/ports/dde_rump.port index 2ba10f713e..842dcdc604 100644 --- a/repos/dde_rump/ports/dde_rump.port +++ b/repos/dde_rump/ports/dde_rump.port @@ -1,8 +1,17 @@ LICENSE := BSD VERSION := git -DOWNLOADS := rump.git +DOWNLOADS := rump.git aarch64.svn libc.svn + URL(rump) := https://github.com/ssumpf/rump.git DIR(rump) := src/lib/dde_rump REV(rump) := 206ffa06cedd0779af0043997fd182b00ff4688c -PATCHES := patches/rump.patch +URL(aarch64) := https://github.com/justincormack/netbsd-src/trunk/src/sys/arch +REV(aarch64) := HEAD +DIR(aarch64) := src/lib/dde_rump_aarch64_backport + +URL(libc) := https://github.com/justincormack/netbsd-src/trunk/src/common/lib/libc/arch/aarch64/atomic +REV(libc) := HEAD +DIR(libc) := src/lib/libc + +PATCHES := patches/rump.patch patches/aarch64.patch diff --git a/repos/dde_rump/recipes/src/rump/content.mk b/repos/dde_rump/recipes/src/rump/content.mk index 6c51c63f21..71862d309c 100644 --- a/repos/dde_rump/recipes/src/rump/content.mk +++ b/repos/dde_rump/recipes/src/rump/content.mk @@ -6,7 +6,7 @@ LIB_MK := $(addprefix lib/mk/, \ rump_prefix.inc \ rump_tools.mk \ vfs_rump.mk) \ - $(foreach SPEC,x86_32 x86_64 arm, \ + $(foreach SPEC,x86_32 x86_64 arm arm_64, \ lib/mk/spec/$(SPEC)/rump.mk \ lib/mk/spec/$(SPEC)/rump_include.mk) @@ -18,7 +18,9 @@ MIRROR_FROM_REP_DIR := $(LIB_MK) \ include/rump include/rump_fs \ include/util -MIRROR_FROM_PORT_DIR := src/lib/dde_rump/src +MIRROR_FROM_PORT_DIR := src/lib/dde_rump/src \ + src/lib/libc \ + src/lib/dde_rump_aarch64_backport content: $(MIRROR_FROM_REP_DIR) $(MIRROR_FROM_PORT_DIR) diff --git a/repos/dde_rump/src/lib/rump/spec/arm_64/arm/pic/picvar.h b/repos/dde_rump/src/lib/rump/spec/arm_64/arm/pic/picvar.h new file mode 100644 index 0000000000..69c56f2df7 --- /dev/null +++ b/repos/dde_rump/src/lib/rump/spec/arm_64/arm/pic/picvar.h @@ -0,0 +1,2 @@ +int _splraise(int); +int _spllower(int);