base-linux: add ARM support

This patch introduces a new platform 'linux_arm' for building and running
Genode/Linux on an ARM device.

Known limitations:

- libc 'setjmp()'/'longjmp()' doesn't currently save/restore floating
  point registers

Fixes #746.
This commit is contained in:
Christian Prochaska
2013-05-24 11:04:42 +02:00
committed by Norman Feske
parent 314d5c0975
commit 4a9b1c6aab
20 changed files with 350 additions and 11 deletions

View File

@ -97,8 +97,12 @@ USE_HOST_LD_SCRIPT = yes
ifeq (x86_64,$(findstring x86_64,$(SPECS)))
CXX_LINK_OPT += -Wl,--dynamic-linker=/lib64/ld-linux-x86-64.so.2
else
ifeq (arm,$(findstring arm,$(SPECS)))
CXX_LINK_OPT += -Wl,--dynamic-linker=/lib/ld-linux.so.3
else
CXX_LINK_OPT += -Wl,--dynamic-linker=/lib/ld-linux.so.2
endif
endif
# because we use the host compiler's libgcc, omit the Genode toolchain's version
LD_LIBGCC =

View File

@ -1,9 +1,9 @@
HOST_INC_DIR += $(dir $(call select_from_repositories,src/platform/linux_syscalls.h))
HOST_INC_DIR += /usr/include
# needed for Ubuntu 11.04
# needed for Ubuntu >= 11.04
HOST_INC_DIR += /usr/include/$(shell gcc -dumpmachine)
HOST_INC_DIR += /usr/include/i386-linux-gnu
HOST_INC_DIR += /usr/include/x86_64-linux-gnu
#
# Some header files installed on GNU/Linux test for the GNU compiler. For

View File

@ -0,0 +1,8 @@
include $(REP_DIR)/lib/mk/base.inc
LIBS += startup cxx
SRC_CC += thread.cc thread_linux.cc
vpath thread.cc $(BASE_DIR)/src/base/thread
vpath thread_linux.cc $(REP_DIR)/src/base/thread

View File

@ -0,0 +1,5 @@
LIBS += syscall
include $(BASE_DIR)/lib/mk/startup.inc
vpath crt0.s $(REP_DIR)/src/platform/arm

View File

@ -0,0 +1,5 @@
REQUIRES = linux arm
SRC_S += lx_clone.S lx_syscall.S
vpath lx_clone.S $(REP_DIR)/../base-linux/src/platform/arm
vpath lx_syscall.S $(REP_DIR)/../base-linux/src/platform/arm