diff --git a/repos/base-sel4/lib/mk/spec/arm/kernel-sel4-imx7d_sabre.mk b/repos/base-sel4/lib/mk/spec/arm/kernel-sel4-imx7d_sabre.mk deleted file mode 100644 index e708620e4f..0000000000 --- a/repos/base-sel4/lib/mk/spec/arm/kernel-sel4-imx7d_sabre.mk +++ /dev/null @@ -1,5 +0,0 @@ -PLAT := imx7 -CPU := cortex-a7 -override BOARD := imx7d_sabre - --include $(REP_DIR)/lib/mk/spec/arm/kernel-sel4.inc diff --git a/repos/base-sel4/lib/mk/spec/arm/syscall-sel4-imx7d_sabre.mk b/repos/base-sel4/lib/mk/spec/arm/syscall-sel4-imx7d_sabre.mk deleted file mode 100644 index 675bd0d742..0000000000 --- a/repos/base-sel4/lib/mk/spec/arm/syscall-sel4-imx7d_sabre.mk +++ /dev/null @@ -1,8 +0,0 @@ -PLAT := imx7 -ARCH := arm - -SEL4_ARCH := aarch32 -PLAT_BOARD := /imx7d_sabre -SEL4_WORDBITS := 32 - -include $(REP_DIR)/lib/mk/syscall-sel4.inc diff --git a/repos/base-sel4/lib/mk/spec/x86_32/core-sel4.mk b/repos/base-sel4/lib/mk/spec/x86_32/core-sel4.mk deleted file mode 100644 index 732de2cbdf..0000000000 --- a/repos/base-sel4/lib/mk/spec/x86_32/core-sel4.mk +++ /dev/null @@ -1,21 +0,0 @@ -GEN_SRC_CC = \ - spec/x86/io_port_session_component.cc \ - vm_session_common.cc - -REP_SRC_CC = \ - spec/x86/io_port_session_support.cc \ - spec/x86/irq.cc \ - spec/x86/platform_services.cc \ - spec/x86/platform_thread.cc \ - spec/x86/vm_space.cc \ - spec/x86/vm_session_component.cc \ - spec/x86_32/boot_info.cc \ - spec/x86_32/platform.cc \ - spec/x86_32/platform_pd.cc \ - spec/x86_32/thread.cc \ - spec/x86_32/vm_space.cc - -INC_DIR += $(REP_DIR)/src/core/spec/x86_32 -INC_DIR += $(REP_DIR)/src/core/spec/x86 - -include $(REP_DIR)/lib/mk/core-sel4.inc diff --git a/repos/base-sel4/lib/mk/spec/x86_32/kernel-sel4-pc.mk b/repos/base-sel4/lib/mk/spec/x86_32/kernel-sel4-pc.mk deleted file mode 100644 index 5ecbe6aecd..0000000000 --- a/repos/base-sel4/lib/mk/spec/x86_32/kernel-sel4-pc.mk +++ /dev/null @@ -1,19 +0,0 @@ -SEL4_DIR := $(call select_from_ports,sel4)/src/kernel/sel4 - -# -# Execute the kernel build only at the second build stage when we know -# about the complete build settings (e.g., the 'CROSS_DEV_PREFIX') and the -# current working directory is the library location. -# -ifeq ($(called_from_lib_mk),yes) -all: build_kernel -else -all: -endif - -build_kernel: - $(VERBOSE)$(MAKE) \ - TOOLPREFIX=$(CROSS_DEV_PREFIX) \ - BOARD=ia32 ARCH=x86 SEL4_ARCH=ia32 PLAT=pc99 DEBUG=1 \ - SOURCE_ROOT=$(SEL4_DIR) -f$(SEL4_DIR)/Makefile - diff --git a/repos/base-sel4/lib/mk/spec/x86_32/ld-sel4.mk b/repos/base-sel4/lib/mk/spec/x86_32/ld-sel4.mk deleted file mode 100644 index 090b9884dc..0000000000 --- a/repos/base-sel4/lib/mk/spec/x86_32/ld-sel4.mk +++ /dev/null @@ -1,3 +0,0 @@ -BASE_LIBS += base-sel4-common base-sel4 - -include $(BASE_DIR)/lib/mk/spec/x86_32/ld-platform.inc diff --git a/repos/base-sel4/lib/mk/spec/x86_32/startup-sel4.mk b/repos/base-sel4/lib/mk/spec/x86_32/startup-sel4.mk deleted file mode 100644 index 7042fbc7a1..0000000000 --- a/repos/base-sel4/lib/mk/spec/x86_32/startup-sel4.mk +++ /dev/null @@ -1,10 +0,0 @@ -# -# Make the includes of src/base/include/ available to the startup lib. This is -# needed because the seL4-specific src/platform/_main_parent_cap.h as included -# by the startup lib depends on base/internal/capability_space_sel4.h. -# -INC_DIR += $(REP_DIR)/src/include $(BASE_DIR)/src/include - -LIBS += syscall-sel4 - -include $(BASE_DIR)/lib/mk/spec/x86_32/startup.inc diff --git a/repos/base-sel4/lib/mk/spec/x86_32/syscall-sel4-pc.mk b/repos/base-sel4/lib/mk/spec/x86_32/syscall-sel4-pc.mk deleted file mode 100644 index 9f49056d07..0000000000 --- a/repos/base-sel4/lib/mk/spec/x86_32/syscall-sel4-pc.mk +++ /dev/null @@ -1,10 +0,0 @@ -PLAT := pc99 -ARCH := x86 - -SEL4_ARCH := ia32 -PLAT_BOARD := /$(SEL4_ARCH) -SEL4_WORDBITS := 32 - -ARCH_INCLUDES := exIPC.h vmenter.h - -include $(REP_DIR)/lib/mk/syscall-sel4.inc diff --git a/repos/base-sel4/mk/spec/sel4_x86_32.mk b/repos/base-sel4/mk/spec/sel4_x86_32.mk deleted file mode 100644 index 17b2b520b5..0000000000 --- a/repos/base-sel4/mk/spec/sel4_x86_32.mk +++ /dev/null @@ -1,4 +0,0 @@ -# \deprecated - -SPECS += x86_32 -include $(call select_from_repositories,mk/spec/x86_32.mk) diff --git a/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/README b/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/README deleted file mode 100644 index fac8785ba6..0000000000 --- a/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/README +++ /dev/null @@ -1,7 +0,0 @@ -This archive contains the seL4-specific part of Genode. - -It also contains the source code of the seL4 kernel in the -'src/kernel/sel4' directory. - -Please note that seL4 has a license distinct from Genode. seL4's -license can be found at 'src/kernel/sel4/LICENSE_GPLv2.txt'. diff --git a/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/content.mk b/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/content.mk deleted file mode 100644 index d339aec070..0000000000 --- a/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/content.mk +++ /dev/null @@ -1,41 +0,0 @@ -include $(GENODE_DIR)/repos/base/recipes/src/base_content.inc - -content: include/os/attached_mmio.h - -include/%.h: - mkdir -p $(dir $@) - cp $(GENODE_DIR)/repos/os/$@ $@ - -content: README -README: - cp $(REP_DIR)/recipes/src/base-sel4-imx7d_sabre/README $@ - -content: lib/import etc include/sel4 -lib/import etc include/sel4: - $(mirror_from_rep_dir) - -content: src/tool/sel4_tools -src/kernel: - $(mirror_from_rep_dir) - -KERNEL_PORT_DIR := $(call port_dir,$(REP_DIR)/ports/sel4) - -src/kernel/sel4: src/kernel - cp -r $(KERNEL_PORT_DIR)/src/kernel/sel4/* $@ - -ELFLOADER_PORT_DIR := $(call port_dir,$(REP_DIR)/ports/sel4_tools) -src/tool/sel4_tools: src/kernel/sel4 - mkdir -p $@ - cp -r $(ELFLOADER_PORT_DIR)/src/tool/sel4_tools/* $@ - -content: etc/board.conf - -etc/board.conf: - echo "BOARD = imx7d_sabre" > etc/board.conf - -content: - mv lib/mk/spec/arm/ld-sel4.mk lib/mk/spec/arm/ld.mk; - sed -i "s/imx7_timer_drv/timer/" src/timer/gpt/imx7/target.inc - find lib/mk/spec -name kernel-sel4-*.mk -o -name syscall-sel4-*.mk |\ - grep -v "sel4-imx7d_sabre.mk" | xargs rm -rf - diff --git a/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/hash b/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/hash deleted file mode 100644 index b91237c380..0000000000 --- a/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/hash +++ /dev/null @@ -1 +0,0 @@ -2023-04-25 2ea2eeff7d241d57aee30e6a4178198d1ddedc1a diff --git a/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/used_apis b/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/used_apis deleted file mode 100644 index df967b96a5..0000000000 --- a/repos/base-sel4/recipes/src/base-sel4-imx7d_sabre/used_apis +++ /dev/null @@ -1 +0,0 @@ -base diff --git a/repos/base-sel4/src/core/spec/x86_32/arch_kernel_object.h b/repos/base-sel4/src/core/spec/x86_32/arch_kernel_object.h deleted file mode 100644 index 2a8a7ba7c3..0000000000 --- a/repos/base-sel4/src/core/spec/x86_32/arch_kernel_object.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * \brief Utilities for creating seL4 kernel objects - * \author Norman Feske - * \date 2015-05-08 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#ifndef _CORE__X86_32_ARCH_KERNEL_OBJECT_H_ -#define _CORE__X86_32_ARCH_KERNEL_OBJECT_H_ - -#include -#include - -namespace Core { - - Phys_allocator &phys_alloc_16k(Allocator * core_mem_alloc = nullptr); - - enum { - PAGE_TABLE_LOG2_SIZE = 22 /* 4M region */ - }; - - struct Page_table_kobj - { - enum { SEL4_TYPE = seL4_X86_PageTableObject, SIZE_LOG2 = 12 }; - static char const *name() { return "page table"; } - }; - - - struct Page_directory_kobj - { - enum { SEL4_TYPE = seL4_X86_PageDirectoryObject, SIZE_LOG2 = 12 }; - static char const *name() { return "page directory"; } - }; - - struct Vcpu_kobj - { - enum { SEL4_TYPE = seL4_X86_VCPUObject, SIZE_LOG2 = 14 }; - static char const *name() { return "vcpu"; } - }; - - struct Ept_kobj - { - enum { SEL4_TYPE = seL4_X86_EPTPML4Object, SIZE_LOG = 12 }; - static char const *name() { return "ept pml4"; } - }; -}; - -#endif /* _CORE__X86_32_ARCH_KERNEL_OBJECT_H_ */ diff --git a/repos/base-sel4/src/core/spec/x86_32/boot_info.cc b/repos/base-sel4/src/core/spec/x86_32/boot_info.cc deleted file mode 100644 index 5444b55904..0000000000 --- a/repos/base-sel4/src/core/spec/x86_32/boot_info.cc +++ /dev/null @@ -1,33 +0,0 @@ -/* - * \brief Access to seL4 boot info - * \author Norman Feske - * \date 2015-05-04 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* Genode includes */ -#include - -/* core includes */ -#include - -using namespace Core; - - -/* provided by the assembly startup code */ -extern addr_t __initial_bx; - - -/** - * Obtain seL4 boot info structure - */ -seL4_BootInfo const &Core::sel4_boot_info() -{ - return *(seL4_BootInfo const *)__initial_bx; -} diff --git a/repos/base-sel4/src/core/spec/x86_32/platform.cc b/repos/base-sel4/src/core/spec/x86_32/platform.cc deleted file mode 100644 index c88365509a..0000000000 --- a/repos/base-sel4/src/core/spec/x86_32/platform.cc +++ /dev/null @@ -1,94 +0,0 @@ -/* - * \brief Platform interface implementation - x86_32 specific - * \author Norman Feske - * \date 2015-05-01 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* base includes */ -#include - -/* core includes */ -#include -#include - -#include -#include "arch_kernel_object.h" - -using namespace Core; - - -seL4_Word Untyped_memory::smallest_page_type() { return seL4_X86_4K; } - - -void Platform::init_sel4_ipc_buffer() -{ - asm volatile ("movl %0, %%fs" :: "r"(IPCBUF_GDT_SELECTOR) : "memory"); -} - - -long Platform::_unmap_page_frame(Cap_sel const &sel) { - return seL4_X86_Page_Unmap(sel.value()); } - - -void Platform::_init_core_page_table_registry() -{ - seL4_BootInfo const &bi = sel4_boot_info(); - - addr_t virt_addr = (addr_t)(&_prog_img_beg); - unsigned sel = bi.userImagePaging.start; - - /* we don't know the physical location of some objects XXX */ - enum { XXX_PHYS_UNKNOWN = ~0UL }; - - /* - * Register initial page tables - */ - for (; sel < bi.userImagePaging.end; sel++) { - _core_page_table_registry.insert_page_table(virt_addr, Cap_sel(sel), - XXX_PHYS_UNKNOWN, - PAGE_TABLE_LOG2_SIZE); - virt_addr += 1024 * get_page_size(); - } - - /* initialize 16k memory allocator */ - phys_alloc_16k(&core_mem_alloc()); - - /* reserve some memory for VCPUs - must be 16k */ - enum { MAX_VCPU_COUNT = 16 }; - addr_t const max_pd_mem = MAX_VCPU_COUNT * (1UL << Vcpu_kobj::SIZE_LOG2); - - _initial_untyped_pool.turn_into_untyped_object(Core_cspace::TOP_CNODE_UNTYPED_16K, - [&] (addr_t const phys, addr_t const size, bool) { - phys_alloc_16k().add_range(phys, size); - _unused_phys_alloc.remove_range(phys, size); - }, - Vcpu_kobj::SIZE_LOG2, max_pd_mem); - - log(":phys_mem_16k: ", phys_alloc_16k()); - /* - * Register initial page frames - * - actually we don't use them in core -> skip - */ -#if 0 - addr_t const modules_start = reinterpret_cast(&_boot_modules_binaries_begin); - addr_t const modules_end = reinterpret_cast(&_boot_modules_binaries_end); - - virt_addr = (addr_t)(&_prog_img_beg); - for (unsigned sel = bi.userImageFrames.start; - sel < bi.userImageFrames.end; - sel++, virt_addr += get_page_size()) { - /* skip boot modules */ - if (modules_start <= virt_addr && virt_addr <= modules_end) - continue; - - _core_page_table_registry.insert_page_table_entry(virt_addr, sel); - } -#endif -} diff --git a/repos/base-sel4/src/core/spec/x86_32/platform_pd.cc b/repos/base-sel4/src/core/spec/x86_32/platform_pd.cc deleted file mode 100644 index 9745a08ac6..0000000000 --- a/repos/base-sel4/src/core/spec/x86_32/platform_pd.cc +++ /dev/null @@ -1,52 +0,0 @@ -/* - * \brief Protection-domain facility - * \author Norman Feske - * \date 2015-05-01 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* core includes */ -#include - -#include "arch_kernel_object.h" - -using namespace Core; - - -addr_t Platform_pd::_init_page_directory() const -{ - addr_t const phys_addr = Untyped_memory::alloc_page(platform().ram_alloc()); - seL4_Untyped const service = Untyped_memory::untyped_sel(phys_addr).value(); - - create(service, - platform_specific().core_cnode().sel(), - _page_directory_sel); - - long ret = seL4_X86_ASIDPool_Assign(platform_specific().asid_pool().value(), - _page_directory_sel.value()); - - if (ret != seL4_NoError) - error("seL4_X86_ASIDPool_Assign returned ", ret); - - return phys_addr; -} - - -void Platform_pd::_deinit_page_directory(addr_t phys_addr) const -{ - int ret = seL4_CNode_Delete(seL4_CapInitThreadCNode, - _page_directory_sel.value(), 32); - if (ret != seL4_NoError) { - error(__FUNCTION__, ": could not free ASID entry, " - "leaking physical memory ", ret); - return; - } - - Untyped_memory::free_page(platform().ram_alloc(), phys_addr); -} diff --git a/repos/base-sel4/src/core/spec/x86_32/thread.cc b/repos/base-sel4/src/core/spec/x86_32/thread.cc deleted file mode 100644 index 79c419faef..0000000000 --- a/repos/base-sel4/src/core/spec/x86_32/thread.cc +++ /dev/null @@ -1,88 +0,0 @@ -/* - * \brief Utilities for thread creation on seL4 - * \author Norman Feske - * \date 2015-05-12 - * - * This file is used by both the core-specific implementation of the Thread API - * and the platform-thread implementation for managing threads outside of core. - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* base includes */ -#include - -/* core includes */ -#include -#include - -using namespace Genode; - - -void Core::start_sel4_thread(Cap_sel tcb_sel, addr_t ip, addr_t sp, unsigned cpu) -{ - /* set register values for the instruction pointer and stack pointer */ - seL4_UserContext regs; - memset(®s, 0, sizeof(regs)); - size_t const num_regs = sizeof(regs)/sizeof(seL4_Word); - - regs.eip = ip; - regs.esp = sp; - regs.fs = IPCBUF_GDT_SELECTOR; - - long const ret = seL4_TCB_WriteRegisters(tcb_sel.value(), false, 0, - num_regs, ®s); - ASSERT(ret == 0); - - affinity_sel4_thread(tcb_sel, cpu); - - seL4_TCB_Resume(tcb_sel.value()); -} - - -void Core::affinity_sel4_thread(Cap_sel const &tcb_sel, unsigned cpu) -{ - seL4_TCB_SetAffinity(tcb_sel.value(), cpu); -} - - -Thread_state Core::Platform_thread::state() -{ - seL4_TCB const thread = _info.tcb_sel.value(); - seL4_Bool const suspend_source = false; - seL4_Uint8 const arch_flags = 0; - seL4_UserContext registers; - seL4_Word const register_count = sizeof(registers) / sizeof(registers.eip); - - long const ret = seL4_TCB_ReadRegisters(thread, suspend_source, arch_flags, - register_count, ®isters); - if (ret != seL4_NoError) { - error("reading thread state ", ret); - throw Cpu_thread::State_access_failed(); - } - - Thread_state state; - memset(&state, 0, sizeof(state)); - - state.ip = registers.eip; - state.sp = registers.esp; - state.edi = registers.edi; - state.esi = registers.esi; - state.ebp = registers.ebp; - state.ebx = registers.ebx; - state.edx = registers.edx; - state.ecx = registers.ecx; - state.eax = registers.eax; - state.gs = registers.gs; - state.fs = registers.fs; - state.eflags = registers.eflags; - state.trapno = 0; /* XXX detect/track if in exception and report here */ - /* registers.tls_base unused */ - - return state; -} diff --git a/repos/base-sel4/src/core/spec/x86_32/vm_space.cc b/repos/base-sel4/src/core/spec/x86_32/vm_space.cc deleted file mode 100644 index 9fe2abfe4a..0000000000 --- a/repos/base-sel4/src/core/spec/x86_32/vm_space.cc +++ /dev/null @@ -1,47 +0,0 @@ -/* - * \brief Virtual-memory space - * \author Norman Feske - * \date 2015-05-04 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* core includes */ -#include - -#include "arch_kernel_object.h" - -using namespace Core; - - -static long map_page_table(Cap_sel const pagetable, - Cap_sel const vroot, - addr_t const virt) -{ - return seL4_X86_PageTable_Map(pagetable.value(), vroot.value(), virt, - seL4_X86_Default_VMAttributes); -} - -void Vm_space::unsynchronized_alloc_page_tables(addr_t const start, - addr_t const size) -{ - addr_t constexpr PAGE_TABLE_AREA = 1UL << PAGE_TABLE_LOG2_SIZE; - addr_t virt = start & ~(PAGE_TABLE_AREA - 1); - for (; virt < start + size; virt += PAGE_TABLE_AREA) { - - if (_page_table_registry.page_table_at(virt, PAGE_TABLE_LOG2_SIZE)) - continue; - - addr_t phys = 0; - - /* 4 MB range - page table */ - Cap_sel const pt = _alloc_and_map(virt, map_page_table, phys); - _page_table_registry.insert_page_table(virt, pt, phys, - PAGE_TABLE_LOG2_SIZE); - } -} diff --git a/repos/base-sel4/src/timer/gpt/imx7d_sabre/target.mk b/repos/base-sel4/src/timer/gpt/imx7d_sabre/target.mk deleted file mode 100644 index 9964666a42..0000000000 --- a/repos/base-sel4/src/timer/gpt/imx7d_sabre/target.mk +++ /dev/null @@ -1 +0,0 @@ -include $(call select_from_repositories,src/timer/gpt/imx7/target.inc)