diff --git a/repos/base-hw/lib/mk/spec/arm_v8/core-hw-imx8q_evk.mk b/repos/base-hw/lib/mk/spec/arm_v8/core-hw-imx8q_evk.mk index fcf26f292d..16f28bc74f 100644 --- a/repos/base-hw/lib/mk/spec/arm_v8/core-hw-imx8q_evk.mk +++ b/repos/base-hw/lib/mk/spec/arm_v8/core-hw-imx8q_evk.mk @@ -1,18 +1,9 @@ INC_DIR += $(REP_DIR)/src/core/spec/imx8q_evk -INC_DIR += $(REP_DIR)/src/core/spec/arm_v8 INC_DIR += $(REP_DIR)/src/core/spec/arm/virtualization # add C++ sources -SRC_CC += kernel/cpu_mp.cc SRC_CC += kernel/vm_thread_on.cc -SRC_CC += spec/64bit/memory_map.cc -SRC_CC += spec/arm/generic_timer.cc SRC_CC += spec/arm/gicv3.cc -SRC_CC += spec/arm/kernel/lock.cc -SRC_CC += spec/arm/platform_support.cc -SRC_CC += spec/arm_v8/cpu.cc -SRC_CC += spec/arm_v8/kernel/cpu.cc -SRC_CC += spec/arm_v8/kernel/thread.cc SRC_CC += spec/arm_v8/virtualization/kernel/vm.cc SRC_CC += spec/arm/virtualization/platform_services.cc SRC_CC += spec/arm/virtualization/vm_session_component.cc @@ -20,13 +11,9 @@ SRC_CC += vm_session_common.cc SRC_CC += vm_session_component.cc #add assembly sources -SRC_S += spec/arm_v8/exception_vector.s -SRC_S += spec/arm_v8/crt0.s SRC_S += spec/arm_v8/virtualization/exception_vector.s -vpath spec/64bit/memory_map.cc $(REP_DIR)/src/lib/hw - NR_OF_CPUS = 4 # include less specific configuration -include $(REP_DIR)/lib/mk/core-hw.inc +include $(REP_DIR)/lib/mk/spec/arm_v8/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/arm_v8/core-hw-rpi3.mk b/repos/base-hw/lib/mk/spec/arm_v8/core-hw-rpi3.mk index 6784722b8a..b1f5e9b67d 100644 --- a/repos/base-hw/lib/mk/spec/arm_v8/core-hw-rpi3.mk +++ b/repos/base-hw/lib/mk/spec/arm_v8/core-hw-rpi3.mk @@ -1,26 +1,11 @@ INC_DIR += $(REP_DIR)/src/core/spec/rpi3 -INC_DIR += $(REP_DIR)/src/core/spec/arm_v8 # add C++ sources -SRC_CC += kernel/cpu_mp.cc SRC_CC += kernel/vm_thread_off.cc SRC_CC += platform_services.cc -SRC_CC += spec/64bit/memory_map.cc SRC_CC += spec/arm/bcm2837_pic.cc -SRC_CC += spec/arm/generic_timer.cc -SRC_CC += spec/arm/kernel/lock.cc -SRC_CC += spec/arm/platform_support.cc -SRC_CC += spec/arm_v8/cpu.cc -SRC_CC += spec/arm_v8/kernel/cpu.cc -SRC_CC += spec/arm_v8/kernel/thread.cc - -#add assembly sources -SRC_S += spec/arm_v8/exception_vector.s -SRC_S += spec/arm_v8/crt0.s - -vpath spec/64bit/memory_map.cc $(REP_DIR)/src/lib/hw NR_OF_CPUS = 4 # include less specific configuration -include $(REP_DIR)/lib/mk/core-hw.inc +include $(REP_DIR)/lib/mk/spec/arm_v8/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/arm_v8/core-hw-virt_qemu.mk b/repos/base-hw/lib/mk/spec/arm_v8/core-hw-virt_qemu.mk index dcabe1dd5f..6340c6329d 100644 --- a/repos/base-hw/lib/mk/spec/arm_v8/core-hw-virt_qemu.mk +++ b/repos/base-hw/lib/mk/spec/arm_v8/core-hw-virt_qemu.mk @@ -1,18 +1,9 @@ INC_DIR += $(REP_DIR)/src/core/spec/virt_qemu_64 -INC_DIR += $(REP_DIR)/src/core/spec/arm_v8 INC_DIR += $(REP_DIR)/src/core/spec/arm/virtualization # add C++ sources -SRC_CC += kernel/cpu_mp.cc SRC_CC += kernel/vm_thread_on.cc -SRC_CC += spec/64bit/memory_map.cc -SRC_CC += spec/arm/generic_timer.cc SRC_CC += spec/arm/gicv3.cc -SRC_CC += spec/arm/kernel/lock.cc -SRC_CC += spec/arm/platform_support.cc -SRC_CC += spec/arm_v8/cpu.cc -SRC_CC += spec/arm_v8/kernel/cpu.cc -SRC_CC += spec/arm_v8/kernel/thread.cc SRC_CC += spec/arm_v8/virtualization/kernel/vm.cc SRC_CC += spec/arm/virtualization/platform_services.cc SRC_CC += spec/arm/virtualization/vm_session_component.cc @@ -20,13 +11,9 @@ SRC_CC += vm_session_common.cc SRC_CC += vm_session_component.cc #add assembly sources -SRC_S += spec/arm_v8/exception_vector.s -SRC_S += spec/arm_v8/crt0.s SRC_S += spec/arm_v8/virtualization/exception_vector.s -vpath spec/64bit/memory_map.cc $(REP_DIR)/src/lib/hw - NR_OF_CPUS = 4 # include less specific configuration -include $(REP_DIR)/lib/mk/core-hw.inc +include $(REP_DIR)/lib/mk/spec/arm_v8/core-hw.inc diff --git a/repos/base-hw/lib/mk/spec/arm_v8/core-hw.inc b/repos/base-hw/lib/mk/spec/arm_v8/core-hw.inc new file mode 100644 index 0000000000..15a4563ce7 --- /dev/null +++ b/repos/base-hw/lib/mk/spec/arm_v8/core-hw.inc @@ -0,0 +1,22 @@ +INC_DIR += $(REP_DIR)/src/core/spec/arm_v8 + +# add C++ sources +SRC_CC += kernel/cpu_mp.cc +SRC_CC += spec/64bit/memory_map.cc +SRC_CC += spec/arm/generic_timer.cc +SRC_CC += spec/arm/kernel/lock.cc +SRC_CC += spec/arm/platform_support.cc +SRC_CC += spec/arm_v8/cpu.cc +SRC_CC += spec/arm_v8/kernel/cpu.cc +SRC_CC += spec/arm_v8/kernel/thread.cc + +#add assembly sources +SRC_S += spec/arm_v8/exception_vector.s +SRC_S += spec/arm_v8/crt0.s + +vpath pd_session_support.cc $(REP_DIR)/src/core/spec/arm_v8 +vpath spec/64bit/memory_map.cc $(REP_DIR)/src/lib/hw + +# include less specific configuration +include $(REP_DIR)/lib/mk/core-hw.inc + diff --git a/repos/base-hw/src/core/spec/arm_v8/pd_session_support.cc b/repos/base-hw/src/core/spec/arm_v8/pd_session_support.cc new file mode 100644 index 0000000000..6341934027 --- /dev/null +++ b/repos/base-hw/src/core/spec/arm_v8/pd_session_support.cc @@ -0,0 +1,36 @@ +/* + * \brief Core implementation of the PD session interface + * \author Stefan Kalkowski + * \date 2020-07-10 + */ + +/* + * Copyright (C) 2020 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. + */ + +#include +#include +#include + +using namespace Genode; +using State = Genode::Pd_session::Managing_system_state; + +State Pd_session_component::managing_system(State const & s) +{ + State ret; + ret.r[0] = Hw::Psci_smc_functor::call(s.r[0], s.r[1], s.r[2], s.r[3]); + return ret; +} + + +/*************************** + ** Dummy implementations ** + ***************************/ + +bool Pd_session_component::assign_pci(addr_t, uint16_t) { return true; } + +void Pd_session_component::map(addr_t, addr_t) { } +