Instead of mapping all physical memory 1:1 into core/kernel's address space, this commit limits the 1:1 mapping to the binary image, and I/O memory regions used by the kernel only. All subsequent memory accesses of core are done by mapping the corresponding memory on demand, and not necessarily 1:1. This commit has several side effects: The page table code had to be revisited completely. The kernel inserts no longer anything into the page tables, apart from the initial translations to have the core/kernel image available when enabling the MMU. The page tables and higher level translation tables are no longer named Tlb, but Translation_table instead. There is no indirection class required to define the translation tables of a concrete SoC, the appropriated ARM specifier is sufficient. The ability to map core's memory the same way like it's done for all other protection domains, makes a special treatment of core's threads (no context area) obsolete. Ref #567 (partly solves it) Fix #723 Fix #1068
89 lines
2.8 KiB
PHP
89 lines
2.8 KiB
PHP
#
|
|
# \brief The core of Genode
|
|
# \author Martin Stein
|
|
# \date 2011-12-16
|
|
#
|
|
|
|
# set program name
|
|
TARGET = core
|
|
|
|
# set entry point of core's first thread
|
|
CC_OPT += -DCORE_MAIN=_main
|
|
|
|
# add library dependencies
|
|
LIBS += base-common perf_counter
|
|
|
|
# add include paths
|
|
INC_DIR += $(REP_DIR)/src/core \
|
|
$(REP_DIR)/src/core/include \
|
|
$(REP_DIR)/include \
|
|
$(REP_DIR)/src/platform \
|
|
$(REP_DIR)/src/base \
|
|
$(BASE_DIR)/src/core/include \
|
|
$(BASE_DIR)/include \
|
|
$(BASE_DIR)/src/platform \
|
|
$(BASE_DIR)/src/base/thread \
|
|
$(BASE_DIR)/src/base/include
|
|
|
|
# add C++ sources
|
|
SRC_CC += console.cc \
|
|
cpu_session_component.cc \
|
|
cpu_session_support.cc \
|
|
core_rm_session.cc \
|
|
core_mem_alloc.cc \
|
|
dataspace_component.cc \
|
|
dump_alloc.cc \
|
|
io_mem_session_component.cc \
|
|
io_mem_session_support.cc \
|
|
irq_session_component.cc \
|
|
main.cc \
|
|
pd_session_component.cc \
|
|
platform.cc \
|
|
platform_pd.cc \
|
|
platform_thread.cc \
|
|
context_area.cc \
|
|
ram_session_component.cc \
|
|
ram_session_support.cc \
|
|
rm_session_component.cc \
|
|
rom_session_component.cc \
|
|
signal_session_component.cc \
|
|
trace_session_component.cc \
|
|
thread.cc \
|
|
thread_support.cc \
|
|
kernel/kernel.cc \
|
|
kernel/thread.cc \
|
|
kernel/vm.cc \
|
|
kernel/signal_receiver.cc \
|
|
kernel/irq.cc \
|
|
kernel/processor.cc \
|
|
kernel/processor_pool.cc \
|
|
rm_session_support.cc \
|
|
trustzone.cc \
|
|
pager.cc \
|
|
_main.cc
|
|
|
|
# provide Genode version information
|
|
include $(BASE_DIR)/src/core/version.inc
|
|
|
|
# declare file locations
|
|
vpath _main.cc $(BASE_DIR)/src/platform
|
|
vpath cpu_session_component.cc $(BASE_DIR)/src/core
|
|
vpath dataspace_component.cc $(BASE_DIR)/src/core
|
|
vpath io_mem_session_component.cc $(BASE_DIR)/src/core
|
|
vpath io_mem_session_support.cc $(BASE_DIR)/src/core
|
|
vpath main.cc $(BASE_DIR)/src/core
|
|
vpath pd_session_component.cc $(BASE_DIR)/src/core
|
|
vpath ram_session_component.cc $(BASE_DIR)/src/core
|
|
vpath rm_session_component.cc $(BASE_DIR)/src/core
|
|
vpath rom_session_component.cc $(BASE_DIR)/src/core
|
|
vpath trace_session_component.cc $(BASE_DIR)/src/core
|
|
vpath dump_alloc.cc $(BASE_DIR)/src/core
|
|
vpath context_area.cc $(BASE_DIR)/src/core
|
|
vpath core_mem_alloc.cc $(BASE_DIR)/src/core
|
|
vpath console.cc $(REP_DIR)/src/base
|
|
vpath pager.cc $(REP_DIR)/src/base
|
|
vpath _main.cc $(BASE_DIR)/src/platform
|
|
vpath thread.cc $(BASE_DIR)/src/base/thread
|
|
vpath % $(REP_DIR)/src/core
|
|
|