From 97e3d05f375927e608a963d4d498a7a647631c3a Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Wed, 9 Jan 2019 12:33:09 +0100 Subject: [PATCH] base-foc: fix placement of utcb area stack area This commit ensures that UTCB areas of PDs are positioned relative to the stack areas of regular components, not the one of core. Fixes #3108 --- repos/base-foc/src/core/include/platform_pd.h | 3 ++- .../base/internal/non_core_stack_area_addr.h | 23 +++++++++++++++++++ repos/base/src/lib/base/stack_area_addr.cc | 3 ++- 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 repos/base/src/include/base/internal/non_core_stack_area_addr.h diff --git a/repos/base-foc/src/core/include/platform_pd.h b/repos/base-foc/src/core/include/platform_pd.h index 67754eb082..e15496c4fc 100644 --- a/repos/base-foc/src/core/include/platform_pd.h +++ b/repos/base-foc/src/core/include/platform_pd.h @@ -31,6 +31,7 @@ /* base-internal includes */ #include +#include /* Fiasco.OC includes */ namespace Fiasco { @@ -57,7 +58,7 @@ namespace Genode { addr_t utcb_area_start() { - return stack_area_virtual_base() + + return NON_CORE_STACK_AREA_ADDR + THREAD_MAX*stack_virtual_size(); } diff --git a/repos/base/src/include/base/internal/non_core_stack_area_addr.h b/repos/base/src/include/base/internal/non_core_stack_area_addr.h new file mode 100644 index 0000000000..1cd52f6a3e --- /dev/null +++ b/repos/base/src/include/base/internal/non_core_stack_area_addr.h @@ -0,0 +1,23 @@ +/* + * \brief Definition of the stack area outside of core + * \author Norman Feske + * \date 2019-01-09 + */ + +/* + * Copyright (C) 2019 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 _INCLUDE__BASE__INTERNAL__NON_CORE_STACK_AREA_ADDR_H_ +#define _INCLUDE__BASE__INTERNAL__NON_CORE_STACK_AREA_ADDR_H_ + +namespace Genode +{ + static constexpr addr_t NON_CORE_STACK_AREA_ADDR = 0x40000000UL; +} + +#endif /* _INCLUDE__BASE__INTERNAL__NON_CORE_STACK_AREA_ADDR_H_ */ + diff --git a/repos/base/src/lib/base/stack_area_addr.cc b/repos/base/src/lib/base/stack_area_addr.cc index 11f7333e71..f919db92fb 100644 --- a/repos/base/src/lib/base/stack_area_addr.cc +++ b/repos/base/src/lib/base/stack_area_addr.cc @@ -13,5 +13,6 @@ /* base-internal includes */ #include +#include -Genode::addr_t Genode::stack_area_virtual_base() { return 0x40000000UL; } +Genode::addr_t Genode::stack_area_virtual_base() { return NON_CORE_STACK_AREA_ADDR; }