diff --git a/repos/base-fiasco/lib/mk/base-fiasco-common.mk b/repos/base-fiasco/lib/mk/base-fiasco-common.mk
index 27d54dd5a2..851758c6f4 100644
--- a/repos/base-fiasco/lib/mk/base-fiasco-common.mk
+++ b/repos/base-fiasco/lib/mk/base-fiasco-common.mk
@@ -11,3 +11,4 @@ LIBS += startup-fiasco syscall-fiasco
SRC_CC += capability.cc capability_raw.cc
SRC_CC += rpc_dispatch_loop.cc
SRC_CC += thread.cc thread_bootstrap.cc thread_myself.cc
+SRC_CC += stack_area_addr.cc
diff --git a/repos/base-foc/lib/mk/base-foc-common.inc b/repos/base-foc/lib/mk/base-foc-common.mk
similarity index 100%
rename from repos/base-foc/lib/mk/base-foc-common.inc
rename to repos/base-foc/lib/mk/base-foc-common.mk
diff --git a/repos/base-foc/lib/mk/base-foc.inc b/repos/base-foc/lib/mk/base-foc.inc
index 4b78fbf6bb..5d6c425734 100644
--- a/repos/base-foc/lib/mk/base-foc.inc
+++ b/repos/base-foc/lib/mk/base-foc.inc
@@ -5,3 +5,4 @@ LIBS += base-foc-common syscall-foc cxx
SRC_CC += cap_map_remove.cc cap_alloc.cc
SRC_CC += thread_start.cc
SRC_CC += signal_transmitter.cc signal.cc
+SRC_CC += stack_area_addr.cc
diff --git a/repos/base-foc/lib/mk/core-foc.inc b/repos/base-foc/lib/mk/core-foc.inc
index 93370c5bcb..e24f98f6ab 100644
--- a/repos/base-foc/lib/mk/core-foc.inc
+++ b/repos/base-foc/lib/mk/core-foc.inc
@@ -3,6 +3,7 @@ GEN_CORE_DIR = $(BASE_DIR)/src/core
LIBS += base-foc-common syscall-foc cxx
SRC_CC += stack_area.cc \
+ stack_area_addr.cc \
core_log.cc \
core_region_map.cc \
core_rpc_cap_alloc.cc \
diff --git a/repos/base-foc/lib/mk/spec/arm/base-foc-common.mk b/repos/base-foc/lib/mk/spec/arm/base-foc-common.mk
deleted file mode 100644
index d8c63d4200..0000000000
--- a/repos/base-foc/lib/mk/spec/arm/base-foc-common.mk
+++ /dev/null
@@ -1,4 +0,0 @@
-# override default stack-area location
-INC_DIR += $(REP_DIR)/src/include/spec/arm
-
-include $(REP_DIR)/lib/mk/base-foc-common.inc
diff --git a/repos/base-foc/lib/mk/spec/x86/base-foc-common.mk b/repos/base-foc/lib/mk/spec/x86/base-foc-common.mk
deleted file mode 100644
index f3a625c676..0000000000
--- a/repos/base-foc/lib/mk/spec/x86/base-foc-common.mk
+++ /dev/null
@@ -1 +0,0 @@
-include $(REP_DIR)/lib/mk/base-foc-common.inc
diff --git a/repos/base-foc/src/core/stack_area_addr.cc b/repos/base-foc/src/core/stack_area_addr.cc
new file mode 100644
index 0000000000..594b01d0f6
--- /dev/null
+++ b/repos/base-foc/src/core/stack_area_addr.cc
@@ -0,0 +1,24 @@
+/*
+ * \brief Component-local stack area base address for core on Fiasco.OC
+ * \author Stefan Kalkowski
+ * \date 2017-06-02
+ */
+
+/*
+ * Copyright (C) 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-internal includes */
+#include
+
+/*
+ * The base address of the context area differs for core, because
+ * roottask on Fiasco.OC uses identity mappings. The virtual address range
+ * of the stack area must not overlap with physical memory. We pick an
+ * address range that lies outside of the RAM of the currently supported
+ * platforms.
+ */
+Genode::addr_t Genode::stack_area_virtual_base() { return 0x20000000UL; }
diff --git a/repos/base-foc/src/include/spec/arm/base/internal/stack_area.h b/repos/base-foc/src/include/spec/arm/base/internal/stack_area.h
deleted file mode 100644
index 9e3e2af428..0000000000
--- a/repos/base-foc/src/include/spec/arm/base/internal/stack_area.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * \brief Stack area layout parameters
- * \author Norman Feske
- * \date 2016-03-03
- */
-
-/*
- * Copyright (C) 2016-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 _INCLUDE__BASE__INTERNAL__STACK_AREA_H_
-#define _INCLUDE__BASE__INTERNAL__STACK_AREA_H_
-
-#include
-
-namespace Genode {
-
- /*
- * The base address of the context area differs between ARM and x86 because
- * roottask on Fiasco.OC uses identity mappings. The virtual address range
- * of the stack area must not overlap with physical memory. We pick an
- * address range that lies outside of the RAM of the currently supported
- * ARM platforms.
- */
- static constexpr addr_t stack_area_virtual_base() { return 0x20000000UL; }
- static constexpr addr_t stack_area_virtual_size() { return 0x10000000UL; }
- static constexpr addr_t stack_virtual_size() { return 0x00100000UL; }
-}
-
-#endif /* _INCLUDE__BASE__INTERNAL__STACK_AREA_H_ */
diff --git a/repos/base-hw/lib/mk/base-hw.mk b/repos/base-hw/lib/mk/base-hw.mk
index c18d3a8ed2..53ba241b48 100644
--- a/repos/base-hw/lib/mk/base-hw.mk
+++ b/repos/base-hw/lib/mk/base-hw.mk
@@ -5,5 +5,6 @@ SRC_CC += capability.cc
SRC_CC += cache.cc
SRC_CC += raw_write_string.cc
SRC_CC += signal_receiver.cc
+SRC_CC += stack_area_addr.cc
LIBS += startup-hw base-hw-common cxx timeout-hw
diff --git a/repos/base-hw/lib/mk/core-hw.inc b/repos/base-hw/lib/mk/core-hw.inc
index be88204843..c21b2cd4a4 100644
--- a/repos/base-hw/lib/mk/core-hw.inc
+++ b/repos/base-hw/lib/mk/core-hw.inc
@@ -62,6 +62,7 @@ SRC_CC += kernel/timer.cc
SRC_CC += kernel/object.cc
SRC_CC += init_main_thread.cc
SRC_CC += capability.cc
+SRC_CC += stack_area_addr.cc
# provide Genode version information
include $(BASE_DIR)/src/core/version.inc
diff --git a/repos/base-hw/src/core/stack_area_addr.cc b/repos/base-hw/src/core/stack_area_addr.cc
new file mode 100644
index 0000000000..9fca7d46fe
--- /dev/null
+++ b/repos/base-hw/src/core/stack_area_addr.cc
@@ -0,0 +1,17 @@
+/*
+ * \brief Component-local stack area base address for HW core
+ * \author Stefan Kalkowski
+ * \date 2017-06-02
+ */
+
+/*
+ * Copyright (C) 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-internal includes */
+#include
+
+Genode::addr_t Genode::stack_area_virtual_base() { return 0xd0000000UL; }
diff --git a/repos/base-hw/src/include/base/internal/stack_area.h b/repos/base-hw/src/include/base/internal/stack_area.h
deleted file mode 100644
index b59eca7665..0000000000
--- a/repos/base-hw/src/include/base/internal/stack_area.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * \brief Stack area layout parameters
- * \author Norman Feske
- * \date 2016-03-03
- */
-
-/*
- * Copyright (C) 2016-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 _INCLUDE__BASE__INTERNAL__STACK_AREA_H_
-#define _INCLUDE__BASE__INTERNAL__STACK_AREA_H_
-
-#include
-
-namespace Genode {
-
- static constexpr addr_t stack_area_virtual_base() { return 0xe0000000UL; }
- static constexpr addr_t stack_area_virtual_size() { return 0x10000000UL; }
- static constexpr addr_t stack_virtual_size() { return 0x00100000UL; }
-}
-
-#endif /* _INCLUDE__BASE__INTERNAL__STACK_AREA_H_ */
diff --git a/repos/base-nova/lib/mk/base-nova-common.mk b/repos/base-nova/lib/mk/base-nova-common.mk
index 5ff6fa4ad3..81ebc9f3d3 100644
--- a/repos/base-nova/lib/mk/base-nova-common.mk
+++ b/repos/base-nova/lib/mk/base-nova-common.mk
@@ -10,6 +10,7 @@ LIBS += startup-nova
SRC_CC += thread.cc thread_myself.cc
SRC_CC += stack.cc
+SRC_CC += stack_area_addr.cc
SRC_CC += cap_map.cc
SRC_CC += capability.cc
SRC_CC += signal_transmitter.cc
diff --git a/repos/base-nova/src/include/base/internal/stack_area.h b/repos/base-nova/src/include/base/internal/stack_area.h
deleted file mode 100644
index 4f8d953416..0000000000
--- a/repos/base-nova/src/include/base/internal/stack_area.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * \brief Stack area layout parameters
- * \author Norman Feske
- * \date 2016-03-03
- */
-
-/*
- * Copyright (C) 2016-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 _INCLUDE__BASE__INTERNAL__STACK_AREA_H_
-#define _INCLUDE__BASE__INTERNAL__STACK_AREA_H_
-
-#include
-
-namespace Genode {
-
- static constexpr addr_t stack_area_virtual_base() { return 0xa0000000UL; }
- static constexpr addr_t stack_area_virtual_size() { return 0x10000000UL; }
- static constexpr addr_t stack_virtual_size() { return 0x00100000UL; }
-}
-
-#endif /* _INCLUDE__BASE__INTERNAL__STACK_AREA_H_ */
diff --git a/repos/base-nova/src/lib/base/stack_area_addr.cc b/repos/base-nova/src/lib/base/stack_area_addr.cc
new file mode 100644
index 0000000000..0ac9033d83
--- /dev/null
+++ b/repos/base-nova/src/lib/base/stack_area_addr.cc
@@ -0,0 +1,17 @@
+/*
+ * \brief Component-local stack area base address for NOVA
+ * \author Stefan Kalkowski
+ * \date 2017-06-02
+ */
+
+/*
+ * Copyright (C) 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-internal includes */
+#include
+
+Genode::addr_t Genode::stack_area_virtual_base() { return 0xa0000000UL; }
diff --git a/repos/base-okl4/lib/mk/base-okl4-common.mk b/repos/base-okl4/lib/mk/base-okl4-common.mk
index 590b579918..fcde126c9d 100644
--- a/repos/base-okl4/lib/mk/base-okl4-common.mk
+++ b/repos/base-okl4/lib/mk/base-okl4-common.mk
@@ -11,3 +11,4 @@ LIBS += startup-okl4 syscall-okl4
SRC_CC += capability.cc capability_raw.cc
SRC_CC += rpc_dispatch_loop.cc
SRC_CC += thread.cc thread_bootstrap.cc thread_myself.cc
+SRC_CC += stack_area_addr.cc
diff --git a/repos/base-pistachio/lib/mk/base-pistachio-common.mk b/repos/base-pistachio/lib/mk/base-pistachio-common.mk
index 833e729cbb..3ec2a587fd 100644
--- a/repos/base-pistachio/lib/mk/base-pistachio-common.mk
+++ b/repos/base-pistachio/lib/mk/base-pistachio-common.mk
@@ -11,6 +11,7 @@ LIBS += startup-pistachio syscall-pistachio
SRC_CC += capability.cc capability_raw.cc
SRC_CC += rpc_dispatch_loop.cc
SRC_CC += thread.cc thread_bootstrap.cc thread_myself.cc
+SRC_CC += stack_area_addr.cc
# suppress warning caused by Pistachio's 'l4/message.h'
CC_WARN += -Wno-array-bounds
diff --git a/repos/base-sel4/lib/mk/base-sel4-common.mk b/repos/base-sel4/lib/mk/base-sel4-common.mk
index b173938e5e..a6606a746f 100644
--- a/repos/base-sel4/lib/mk/base-sel4-common.mk
+++ b/repos/base-sel4/lib/mk/base-sel4-common.mk
@@ -11,3 +11,4 @@ LIBS += startup-sel4 syscall-sel4
SRC_CC += rpc_dispatch_loop.cc
SRC_CC += thread.cc thread_myself.cc thread_bootstrap.cc
SRC_CC += capability.cc capability_raw.cc
+SRC_CC += stack_area_addr.cc
diff --git a/repos/base/src/include/base/internal/stack_area.h b/repos/base/src/include/base/internal/stack_area.h
index a43b376d61..b593634fc9 100644
--- a/repos/base/src/include/base/internal/stack_area.h
+++ b/repos/base/src/include/base/internal/stack_area.h
@@ -18,7 +18,7 @@
namespace Genode {
- static constexpr addr_t stack_area_virtual_base() { return 0x40000000UL; }
+ addr_t stack_area_virtual_base();
static constexpr addr_t stack_area_virtual_size() { return 0x10000000UL; }
static constexpr addr_t stack_virtual_size() { return 0x00100000UL; }
}
diff --git a/repos/base/src/lib/base/stack_area_addr.cc b/repos/base/src/lib/base/stack_area_addr.cc
new file mode 100644
index 0000000000..11f7333e71
--- /dev/null
+++ b/repos/base/src/lib/base/stack_area_addr.cc
@@ -0,0 +1,17 @@
+/*
+ * \brief Component-local stack area base address
+ * \author Stefan Kalkowski
+ * \date 2017-06-02
+ */
+
+/*
+ * Copyright (C) 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-internal includes */
+#include
+
+Genode::addr_t Genode::stack_area_virtual_base() { return 0x40000000UL; }