mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-12 05:41:36 +00:00
foc-arndale: use same context area location
Currently, on the Arndale platform, core uses a different thread context area base address than the other tasks (0x20000000 vs. 0x40000000). This is problematic, because core calculates the location of the UTCB area of a new thread relatively to core's own thread context area base. So, the UTCB area of non-core threads ends up in a virtual address range which is outside of the task's thread context area and not marked as used in the task's RM session. With this patch, the same thread context area base address gets used in core and in the other tasks. Fixes #779.
This commit is contained in:
parent
a4eb4bfa07
commit
cb01f75a9d
3
base-foc/lib/mk/arm/base.mk
Normal file
3
base-foc/lib/mk/arm/base.mk
Normal file
@ -0,0 +1,3 @@
|
||||
include $(REP_DIR)/lib/mk/base.inc
|
||||
|
||||
SRC_CC += thread/thread_context_area.cc
|
@ -9,7 +9,7 @@ LIBS += base-common
|
||||
SRC_CC += console/log_console.cc
|
||||
SRC_CC += env/env.cc env/context_area.cc env/reload_parent_cap.cc \
|
||||
env/cap_map_remove.cc env/cap_alloc.cc
|
||||
SRC_CC += thread/thread_start.cc thread/thread_context_area.cc
|
||||
SRC_CC += thread/thread_start.cc
|
||||
|
||||
INC_DIR += $(BASE_DIR)/src/base/env
|
||||
|
3
base-foc/lib/mk/exynos5/base.mk
Normal file
3
base-foc/lib/mk/exynos5/base.mk
Normal file
@ -0,0 +1,3 @@
|
||||
include $(REP_DIR)/lib/mk/base.inc
|
||||
|
||||
SRC_CC += thread/arndale/thread_context_area.cc
|
3
base-foc/lib/mk/x86/base.mk
Normal file
3
base-foc/lib/mk/x86/base.mk
Normal file
@ -0,0 +1,3 @@
|
||||
include $(REP_DIR)/lib/mk/base.inc
|
||||
|
||||
SRC_CC += thread/thread_context_area.cc
|
@ -6,6 +6,10 @@
|
||||
* We need to place the context area within core outside the physical memory.
|
||||
* Sigma0 maps physical to core-local memory always 1:1 when using
|
||||
* SIGMA0_REQ_FPAGE_ANY. Those mappings would interfere with the context area.
|
||||
*
|
||||
* Because the UTCB area of a task resides at the end of the context area and
|
||||
* its address gets calculated by core, the context area in other tasks needs
|
||||
* to be at the same address as in core.
|
||||
*/
|
||||
|
||||
#include <base/native_types.h>
|
@ -1,5 +1,5 @@
|
||||
# override default location of thread context area within core
|
||||
vpath thread_context_area.cc $(PRG_DIR)
|
||||
vpath thread_context_area.cc $(REP_DIR)/src/base/thread/arndale
|
||||
|
||||
include $(PRG_DIR)/../target.inc
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user