diff --git a/repos/base-foc/config/rpi.kernel b/repos/base-foc/config/rpi.kernel new file mode 100644 index 000000000..3e8b639b6 --- /dev/null +++ b/repos/base-foc/config/rpi.kernel @@ -0,0 +1,77 @@ +# +# Automatically generated file; DO NOT EDIT. +# Fiasco configuration +# + +# +# Target configuration +# +# CONFIG_IA32 is not set +# CONFIG_AMD64 is not set +CONFIG_ARM=y +# CONFIG_PF_REALVIEW is not set +# CONFIG_PF_IMX is not set +# CONFIG_PF_S3C2410 is not set +# CONFIG_PF_TEGRA is not set +# CONFIG_PF_OMAP is not set +# CONFIG_PF_XSCALE is not set +# CONFIG_PF_SA1100 is not set +# CONFIG_PF_EXYNOS is not set +# CONFIG_PF_KIRKWOOD is not set +# CONFIG_PF_INTEGRATOR is not set +CONFIG_PF_BCM2835=y +CONFIG_BSP_NAME="bcm2835" +CONFIG_ABI_VF=y +CONFIG_CAN_ARM_CPU_1176=y +CONFIG_ARM_1176=y +# CONFIG_ARM_ALIGNMENT_CHECK is not set +CONFIG_ARM_EM_STD=y +# CONFIG_ARM_EM_NS is not set +# CONFIG_ARM_EM_TZ is not set +# CONFIG_FPU is not set +# CONFIG_ARM_1176_CACHE_ALIAS_FIX is not set +# CONFIG_ARM_CPU_ERRATA is not set + +# +# Kernel options +# +CONFIG_CONTEXT_4K=y +# CONFIG_FINE_GRAINED_CPUTIME is not set +CONFIG_SCHED_FIXED_PRIO=y + +# +# Debugging +# +CONFIG_INLINE=y +# CONFIG_NDEBUG is not set +CONFIG_NO_FRAME_PTR=y +# CONFIG_STACK_DEPTH is not set +# CONFIG_LIST_ALLOC_SANITY is not set +CONFIG_SERIAL=y +CONFIG_JDB=y +# CONFIG_JDB_LOGGING is not set +# CONFIG_JDB_DISASM is not set +# CONFIG_JDB_GZIP is not set +# CONFIG_VMEM_ALLOC_TEST is not set +# CONFIG_DEBUG_KERNEL_PAGE_FAULTS is not set +# CONFIG_WARN_NONE is not set +CONFIG_WARN_WARNING=y +# CONFIG_WARN_ANY is not set + +# +# Compiling +# +CONFIG_CC="gcc" +CONFIG_CXX="g++" +CONFIG_HOST_CC="gcc" +CONFIG_HOST_CXX="g++" +# CONFIG_MAINTAINER_MODE is not set +CONFIG_LABEL="" +# CONFIG_EXPERIMENTAL is not set +CONFIG_PERF_CNT=y +CONFIG_BIT32=y +CONFIG_ARM_V6=y +CONFIG_ARM_V6PLUS=y +CONFIG_WARN_LEVEL=1 +CONFIG_XARCH="arm" +CONFIG_ABI="vf" \ No newline at end of file diff --git a/repos/base-foc/config/rpi.user b/repos/base-foc/config/rpi.user new file mode 100644 index 000000000..1e34ef21a --- /dev/null +++ b/repos/base-foc/config/rpi.user @@ -0,0 +1,69 @@ +# +# Automatically generated file; DO NOT EDIT. +# L4Re Configuration +# +# CONFIG_BUILD_ARCH_x86 is not set +# CONFIG_BUILD_ARCH_amd64 is not set +CONFIG_BUILD_ARCH_arm=y +# CONFIG_BUILD_ARCH_ppc32 is not set +# CONFIG_BUILD_ARCH_sparc is not set +CONFIG_BUILD_ARCH="arm" +CONFIG_BUILD_ABI_l4f=y +CONFIG_BUILD_ABI="l4f" +CONFIG_CPU="armv6" +# CONFIG_CPU_ARM_ARMV4 is not set +# CONFIG_CPU_ARM_ARMV4T is not set +# CONFIG_CPU_ARM_ARMV5 is not set +# CONFIG_CPU_ARM_ARMV5T is not set +# CONFIG_CPU_ARM_ARMV5TE is not set +CONFIG_CPU_ARM_ARMV6=y +# CONFIG_CPU_ARM_ARMV6T2 is not set +# CONFIG_CPU_ARM_ARMV6ZK is not set +# CONFIG_CPU_ARM_ARMV7A is not set +# CONFIG_CPU_ARM_ARMV7R is not set +CONFIG_CPU_ARMV6PLUS=y +# CONFIG_PLATFORM_TYPE_beagleboard is not set +# CONFIG_PLATFORM_TYPE_exynos4 is not set +# CONFIG_PLATFORM_TYPE_exynos5 is not set +# CONFIG_PLATFORM_TYPE_imx21 is not set +# CONFIG_PLATFORM_TYPE_imx35 is not set +# CONFIG_PLATFORM_TYPE_imx51 is not set +# CONFIG_PLATFORM_TYPE_imx53 is not set +# CONFIG_PLATFORM_TYPE_imx6 is not set +# CONFIG_PLATFORM_TYPE_integrator is not set +# CONFIG_PLATFORM_TYPE_kirkwood is not set +# CONFIG_PLATFORM_TYPE_omap3_am33xx is not set +# CONFIG_PLATFORM_TYPE_omap3evm is not set +# CONFIG_PLATFORM_TYPE_pandaboard is not set +# CONFIG_PLATFORM_TYPE_rpi_a is not set +CONFIG_PLATFORM_TYPE_rpi_b=y +# CONFIG_PLATFORM_TYPE_rv is not set +# CONFIG_PLATFORM_TYPE_rv_pbx is not set +# CONFIG_PLATFORM_TYPE_rv_vexpress_a15 is not set +# CONFIG_PLATFORM_TYPE_rv_vexpress is not set +# CONFIG_PLATFORM_TYPE_tegra2 is not set +# CONFIG_PLATFORM_TYPE_tegra3 is not set +# CONFIG_PLATFORM_TYPE_custom is not set +CONFIG_PLATFORM_TYPE="rpi_b" +# CONFIG_USE_DROPS_STDDIR is not set +# CONFIG_USE_DICE is not set +CONFIG_DROPS_STDDIR="/path/to/l4re" +CONFIG_DROPS_INSTDIR="/path/to/l4re" +CONFIG_BID_COLORED_PHASES=y + +# +# Building +# +CONFIG_YACC="yacc" +CONFIG_LEX="flex" +CONFIG_CTAGS="ctags" +CONFIG_ETAGS="etags" +CONFIG_HAVE_LDSO=y +CONFIG_INT_CPP_NAME_SWITCH=y +CONFIG_INT_LD_NAME_SWITCH=y +# CONFIG_BID_STRIP_PROGS is not set +# CONFIG_BID_GCC_OMIT_FP is not set +# CONFIG_BID_GENERATE_MAPFILE is not set +# CONFIG_BID_BUILD_DOC is not set +# CONFIG_RELEASE_MODE is not set +CONFIG_MAKECONFS_ADD="" diff --git a/repos/base-foc/lib/mk/platform_rpi/platform.mk b/repos/base-foc/lib/mk/platform_rpi/platform.mk new file mode 100644 index 000000000..f3b83ae2a --- /dev/null +++ b/repos/base-foc/lib/mk/platform_rpi/platform.mk @@ -0,0 +1,6 @@ +# +# Configuration for L4 build system (for kernel-bindings, sigma0, bootstrap). +# +L4_CONFIG = $(call select_from_repositories,config/rpi.user) + +include $(REP_DIR)/lib/mk/arm/platform.inc \ No newline at end of file diff --git a/repos/base-foc/mk/l4_pkg.mk b/repos/base-foc/mk/l4_pkg.mk index 7979db774..54e4ca66a 100644 --- a/repos/base-foc/mk/l4_pkg.mk +++ b/repos/base-foc/mk/l4_pkg.mk @@ -22,6 +22,10 @@ ifeq ($(filter-out $(SPECS),arm_v7a),) L4_BUILD_ARCH := arm_armv7a endif +ifeq ($(filter-out $(SPECS),arm_v6),) + L4_BUILD_ARCH := arm_armv6 +endif + ifeq ($(L4_BUILD_ARCH),) all: l4_build_arch_undefined $(VERBOSE)$(ECHO) "Error: L4_BUILD_ARCH undefined, architecture not supported" diff --git a/repos/base-foc/mk/spec-foc_rpi.mk b/repos/base-foc/mk/spec-foc_rpi.mk new file mode 100644 index 000000000..77a372673 --- /dev/null +++ b/repos/base-foc/mk/spec-foc_rpi.mk @@ -0,0 +1,4 @@ +SPECS += foc_arm platform_rpi + +include $(call select_from_repositories,mk/spec-platform_rpi.mk) +include $(call select_from_repositories,mk/spec-foc_arm.mk) diff --git a/repos/base-foc/src/core/rpi/target.mk b/repos/base-foc/src/core/rpi/target.mk new file mode 100644 index 000000000..6b42bad71 --- /dev/null +++ b/repos/base-foc/src/core/rpi/target.mk @@ -0,0 +1,5 @@ +REQUIRES += foc_rpi +LD_TEXT_ADDR ?= 0x800000 + +include $(REP_DIR)/src/core/arm/target.inc + diff --git a/repos/base-foc/src/kernel/rpi/target.mk b/repos/base-foc/src/kernel/rpi/target.mk new file mode 100644 index 000000000..b93f26a9b --- /dev/null +++ b/repos/base-foc/src/kernel/rpi/target.mk @@ -0,0 +1,5 @@ +REQUIRES = platform_rpi +FIASCO_DIR := $(call select_from_ports,foc)/src/kernel/foc/kernel/fiasco +KERNEL_CONFIG = $(REP_DIR)/config/rpi.kernel + +-include $(PRG_DIR)/../target.inc diff --git a/tool/builddir/etc/build.conf.foc_rpi b/tool/builddir/etc/build.conf.foc_rpi new file mode 100644 index 000000000..c4cdaaadc --- /dev/null +++ b/tool/builddir/etc/build.conf.foc_rpi @@ -0,0 +1,8 @@ +REPOSITORIES = $(GENODE_DIR)/repos/base-foc + +## +## Kernel-specific run tool configuration +## + +RUN_OPT = --include boot_dir/foc \ + --include power_on/qemu --include log/qemu diff --git a/tool/create_builddir b/tool/create_builddir index 69b88d326..e795f712f 100755 --- a/tool/create_builddir +++ b/tool/create_builddir @@ -45,6 +45,7 @@ usage: @echo " 'foc_vea9x4'" @echo " 'foc_panda'" @echo " 'foc_arndale'" + @echo " 'foc_rpi'" @echo " 'sel4_x86_32'" @echo " 'lx_hybrid_x86'" @echo @@ -144,7 +145,7 @@ $(BUILD_DIR)/Makefile: # # Add 'ports-foc' repository to Fiasco.OC build directory # -ifeq ($(filter-out foc_x86_32 foc_imx53 foc_pbxa9 foc_vea9x4 foc_panda foc_arndale,$(PLATFORM)),) +ifeq ($(filter-out foc_x86_32 foc_imx53 foc_pbxa9 foc_vea9x4 foc_panda foc_arndale foc_rpi,$(PLATFORM)),) $(BUILD_DIR)/etc/build.conf:: @cat $(BUILD_CONF).ports-foc >> $@ endif @@ -160,7 +161,7 @@ endif # # Add ARM drivers repositories to ARM build directories # -ifeq ($(filter-out foc_panda foc_arndale hw_panda hw_arndale hw_odroid_xu foc_imx53,$(PLATFORM)),) +ifeq ($(filter-out foc_panda foc_arndale hw_panda hw_arndale hw_odroid_xu foc_imx53 foc_rpi,$(PLATFORM)),) $(BUILD_DIR)/etc/build.conf:: @cat $(BUILD_CONF).drivers_arm >> $@ endif @@ -213,6 +214,9 @@ foc_imx53:: foc_arndale:: @echo "SPECS = genode foc_arndale" > $(BUILD_DIR)/etc/specs.conf +foc_rpi:: + @echo "SPECS = genode foc_rpi" > $(BUILD_DIR)/etc/specs.conf + # # On all other platforms, the performance counter is assumed to be active by # default. On HW, its activation is done by an optional core lib. To be diff --git a/tool/run/boot_dir/foc b/tool/run/boot_dir/foc index a0808c037..bc3a70ec1 100644 --- a/tool/run/boot_dir/foc +++ b/tool/run/boot_dir/foc @@ -93,6 +93,7 @@ proc bin_dir { } { if {[have_spec x86_32]} { return "[l4_dir]/bin/x86_586" } if {[have_spec x86_64]} { return "[l4_dir]/bin/amd64_K8" } if {[have_spec arm_v7a]} { return "[l4_dir]/bin/arm_armv7a" } + if {[have_spec arm_v6]} { return "[l4_dir]/bin/arm_armv6" } puts stderr "Error: Cannot determine bin directory" exit 1