virt_linux: add arm_v6

also split into arm_v(6|7|8)

issue #5095
This commit is contained in:
Sebastian Sumpf 2024-01-19 12:47:12 +01:00 committed by Christian Helmuth
parent bb06e8451a
commit a67bc59686
12 changed files with 256 additions and 12 deletions

View File

@ -17,11 +17,14 @@ endif
ifeq ($(filter-out $(SPECS),x86_64),)
INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/x86_64
endif
ifeq ($(filter-out $(SPECS),arm),)
INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm
ifeq ($(filter-out $(SPECS),arm_v6),)
INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm_v6
endif
ifeq ($(filter-out $(SPECS),arm_64),)
INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm_64
ifeq ($(filter-out $(SPECS),arm_v7),)
INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm_v7
endif
ifeq ($(filter-out $(SPECS),arm_v8),)
INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm_v8
endif
-include $(call select_from_repositories,lib/import/import-lx_emul_common.inc)
@ -41,9 +44,12 @@ ifeq ($(filter-out $(SPECS),x86),)
#
CC_DEF += -DARCH_DMA_MINALIGN=16 -DARCH_SLAB_MINALIGN=1
endif
ifeq ($(filter-out $(SPECS),arm_64),)
SRC_C += lx_emul/virt/spec/arm_64/dummies_arch.c
endif
ifeq ($(filter-out $(SPECS),arm),)
ifeq ($(filter-out $(SPECS),arm_v6),)
SRC_C += lx_emul/virt/spec/arm/dummies_arch.c
endif
ifeq ($(filter-out $(SPECS),arm_v7),)
SRC_C += lx_emul/virt/spec/arm/dummies_arch.c
endif
ifeq ($(filter-out $(SPECS),arm_v8),)
SRC_C += lx_emul/virt/spec/arm_v8/dummies_arch.c
endif

View File

@ -1,3 +1,6 @@
LINUX_ARCH=arm
# arm_v7 specific kernel configuration
include $(REP_DIR)/src/virt_linux/arm_v7/target.inc
include $(REP_DIR)/lib/mk/virt_linux_generated.inc

View File

@ -4,8 +4,9 @@
MIRRORED_FROM_REP_DIR := lib/import/import-lx_emul_common.inc \
lib/import/import-virt_lx_emul.mk \
lib/mk/spec/arm/virt_linux_generated.mk \
lib/mk/spec/arm_64/virt_linux_generated.mk \
lib/mk/spec/arm_v6/virt_linux_generated.mk \
lib/mk/spec/arm_v7/virt_linux_generated.mk \
lib/mk/spec/arm_v8/virt_linux_generated.mk \
lib/mk/spec/x86_32/virt_linux_generated.mk \
lib/mk/spec/x86_64/virt_linux_generated.mk \
lib/mk/virt_linux_generated.inc \
@ -20,6 +21,8 @@ MIRRORED_FROM_REP_DIR := lib/import/import-lx_emul_common.inc \
src/lib/lx_emul \
src/lib/lx_kit \
src/virt_linux/target.inc \
src/virt_linux/arm_v6/target.inc \
src/virt_linux/arm_v7/target.inc \
src/include/lx_user
content: $(MIRRORED_FROM_REP_DIR)

View File

@ -0,0 +1,175 @@
/*
* \brief Array defining order of Linux Kernel initcalls
* \author Automatically generated file - do no edit
* \date 2024-01-16
*/
#pragma once
static const char * lx_emul_initcall_order[] = {
"__initcall_allocate_overflow_stacksearly",
"__initcall_start",
"__initcall_init_static_idmapearly",
"__initcall_spawn_ksoftirqdearly",
"__initcall_migration_initearly",
"__initcall_srcu_bootup_announceearly",
"__initcall_rcu_sysrq_initearly",
"__initcall_check_cpu_stall_initearly",
"__initcall_rcu_spawn_gp_kthreadearly",
"__initcall_cpu_stop_initearly",
"__initcall_irq_work_init_threadsearly",
"__initcall_init_zero_pfnearly",
"__initcall_dummy_timer_registerearly",
"__initcall_init_mmap_min_addr0",
"__initcall_pci_realloc_setup_params0",
"__initcall_inet_frag_wq_init0",
"__initcall_ptrace_break_init1",
"__initcall_v6_userpage_init1",
"__initcall_ksysfs_init1",
"__initcall_rcu_set_runtime_mode1",
"__initcall_init_jiffies_clocksource1",
"__initcall_init_elf_binfmt1",
"__initcall_virtio_init1",
"__initcall_free_raw_capacity1",
"__initcall_sock_init1",
"__initcall_net_defaults_init1",
"__initcall_init_default_flow_dissectors1",
"__initcall_netlink_proto_init1",
"__initcall_genl_init1",
"__initcall_atomic_pool_init2",
"__initcall_bdi_class_init2",
"__initcall_mm_sysfs_init2",
"__initcall_init_per_zone_wmark_min2",
"__initcall_pcibus_class_init2",
"__initcall_pci_driver_init2",
"__initcall_tty_class_init2",
"__initcall_vtconsole_class_init2",
"__initcall_devlink_class_init2",
"__initcall_software_node_init2",
"__initcall_kobject_uevent_init2",
"__initcall_gate_vma_init3",
"__initcall_customize_machine3",
"__initcall_exceptions_init3",
"__initcall_of_platform_default_populate_init3s",
"__initcall_topology_init4",
"__initcall_uid_cache_init4",
"__initcall_user_namespace_sysctl_init4",
"__initcall_oom_init4",
"__initcall_default_bdi_init4",
"__initcall_percpu_enable_async4",
"__initcall_kcompactd_init4",
"__initcall_init_reserve_notifier4",
"__initcall_init_admin_reserve4",
"__initcall_init_user_reserve4",
"__initcall_aes_init4",
"__initcall_prng_mod_init4",
"__initcall_misc_init4",
"__initcall_register_cpu_capacity_sysctl4",
"__initcall_phy_init4",
"__initcall_usb_common_init4",
"__initcall_usb_init4",
"__initcall_input_init4",
"__initcall_leds_init4",
"__initcall_net_dev_init4",
"__initcall_neigh_init4",
"__initcall_fib_notifier_init4",
"__initcall_ethnl_init4",
"__initcall_nexthop_init4",
"__initcall_vsprintf_init_hashval4",
"__initcall_alignment_init5",
"__initcall_iomem_init_inode5",
"__initcall_clocksource_done_booting5",
"__initcall_init_pipe_fs5",
"__initcall_anon_inode_init5",
"__initcall_init_ramfs_fs5",
"__initcall_chr_dev_init5",
"__initcall_hwrng_modinit5",
"__initcall_eth_offload_init5",
"__initcall_inet_init5",
"__initcall_ipv4_offload_init5",
"__initcall_ipv6_offload_init5",
"__initcall_pci_apply_final_quirks5s",
"__initcall_populate_rootfsrootfs",
"__initcall_chacha_simd_mod_init6",
"__initcall_arm_poly1305_mod_init6",
"__initcall_timekeeping_init_ops6",
"__initcall_alarmtimer_init6",
"__initcall_sched_clock_syscore_init6",
"__initcall_kswapd_init6",
"__initcall_mm_compute_batch_init6",
"__initcall_workingset_init6",
"__initcall_fcntl_init6",
"__initcall_start_dirtytime_writeback6",
"__initcall_init_devpts_fs6",
"__initcall_jent_mod_init6",
"__initcall_blake2s_mod_init6",
"__initcall_chacha20poly1305_init6",
"__initcall_curve25519_init6",
"__initcall_percpu_counter_startup6",
"__initcall_simple_pm_bus_driver_init6",
"__initcall_of_fixed_factor_clk_driver_init6",
"__initcall_of_fixed_clk_driver_init6",
"__initcall_gpio_clk_driver_init6",
"__initcall_virtio_pci_driver_init6",
"__initcall_n_null_init6",
"__initcall_pty_init6",
"__initcall_virtio_console_init6",
"__initcall_timeriomem_rng_driver_init6",
"__initcall_topology_sysfs_init6",
"__initcall_cacheinfo_sysfs_init6",
"__initcall_wg_mod_init6",
"__initcall_blackhole_netdev_init6",
"__initcall_phylink_init6",
"__initcall_phy_module_init6",
"__initcall_fixed_mdio_bus_init6",
"__initcall_phy_module_init6",
"__initcall_virtio_net_driver_init6",
"__initcall_asix_driver_init6",
"__initcall_ax88179_178a_driver_init6",
"__initcall_cdc_driver_init6",
"__initcall_smsc95xx_driver_init6",
"__initcall_usbnet_init6",
"__initcall_cdc_ncm_driver_init6",
"__initcall_cdc_mbim_driver_init6",
"__initcall_r8153_ecm_driver_init6",
"__initcall_net_failover_init6",
"__initcall_wdm_driver_init6",
"__initcall_input_leds_init6",
"__initcall_evdev_init6",
"__initcall_hid_init6",
"__initcall_hid_generic_init6",
"__initcall_apple_driver_init6",
"__initcall_ch_driver_init6",
"__initcall_holtek_kbd_driver_init6",
"__initcall_holtek_mouse_driver_init6",
"__initcall_holtek_driver_init6",
"__initcall_ms_driver_init6",
"__initcall_hid_init6",
"__initcall_sock_diag_init6",
"__initcall_failover_init6",
"__initcall_gre_offload_init6",
"__initcall_tunnel4_init6",
"__initcall_inet_diag_init6",
"__initcall_tcp_diag_init6",
"__initcall_cubictcp_register6",
"__initcall_inet6_init6",
"__initcall_sit_init6",
"__initcall_init_machine_late7",
"__initcall_swp_emulation_init7",
"__initcall_printk_late_init7",
"__initcall_check_early_ioremap_leak7",
"__initcall_crypto_algapi_init7",
"__initcall_pci_resource_alignment_sysfs_init7",
"__initcall_pci_sysfs_init7",
"__initcall_sync_state_resume_initcall7",
"__initcall_deferred_probe_initcall7",
"__initcall_tcp_congestion_default7",
"__initcall_udp_tunnel_nic_init_module7",
"__initcall_ip_auto_config7",
"__initcall_clk_disable_unused7s",
"__initcall_of_platform_sync_state_init7s",
"__initcall_con_initcon",
"__initcall_end",
"__initcall_hvc_console_initcon",
"END_OF_INITCALL_ORDER_ARRAY_DUMMY_ENTRY"
};

View File

@ -0,0 +1,8 @@
#
# Linux architecture specific kernel configuration
#
LX_ENABLE += ARCH_MULTI_V6
# do not generate thumb instructions
LX_DISABLE += THUMB2_KERNEL DEBUG_PREEMPT

View File

@ -1,5 +1,5 @@
TARGET := arm_virt_linux
REQUIRES := arm
REQUIRES := arm_v6
CUSTOM_TARGET_DEPS := kernel_build.phony
@ -18,6 +18,7 @@ LX_MK_ARGS = ARCH=arm CROSS_COMPILE=$(CROSS_DEV_PREFIX) CC=$(CC) $(LX_MK_REPRODU
#
# define 'LX_ENABLE' and 'LX_DISABLE'
include $(REP_DIR)/src/virt_linux/arm_v6/target.inc
include $(REP_DIR)/src/virt_linux/target.inc
# filter for make output of kernel build system

View File

@ -0,0 +1,7 @@
#
# Linux architecture specific kernel configuration
#
# do not generate thumb instructions on ARMv7 platforms
LX_DISABLE += THUMB2_KERNEL ARM_VIRT_EXT DEBUG_PREEMPT

View File

@ -0,0 +1,41 @@
TARGET := arm_virt_linux
REQUIRES := arm_v7
CUSTOM_TARGET_DEPS := kernel_build.phony
LX_DIR := $(call select_from_ports,linux)/src/linux
PWD := $(shell pwd)
# options for Linux kernel build to not depend on current time, user and host
LX_MK_REPRODUCIBLE = KBUILD_BUILD_TIMESTAMP=no_timestamp KBUILD_BUILD_USER=genode KBUILD_BUILD_HOST=genode
LX_MK_ARGS = ARCH=arm CROSS_COMPILE=$(CROSS_DEV_PREFIX) CC=$(CC) $(LX_MK_REPRODUCIBLE)
#
# Linux kernel configuration
#
# Start with 'make tinyconfig', enable/disable options via 'scripts/config',
# and resolve config dependencies via 'make olddefconfig'.
#
# define 'LX_ENABLE' and 'LX_DISABLE'
include $(REP_DIR)/src/virt_linux/arm_v7/target.inc
include $(REP_DIR)/src/virt_linux/target.inc
# filter for make output of kernel build system
BUILD_OUTPUT_FILTER = 2>&1 | sed "s/^/ [Linux] /"
kernel_config.tag:
$(MSG_CONFIG)Linux
$(VERBOSE)$(MAKE) -C $(LX_DIR) O=$(PWD) $(LX_MK_ARGS) tinyconfig $(BUILD_OUTPUT_FILTER)
$(VERBOSE)$(LX_DIR)/scripts/config --file $(PWD)/.config $(addprefix --enable ,$(LX_ENABLE))
$(VERBOSE)$(LX_DIR)/scripts/config --file $(PWD)/.config $(addprefix --disable ,$(LX_DISABLE))
$(VERBOSE)$(MAKE) $(LX_MK_ARGS) olddefconfig $(BUILD_OUTPUT_FILTER)
$(VERBOSE)$(MAKE) $(LX_MK_ARGS) prepare $(BUILD_OUTPUT_FILTER)
$(VERBOSE)touch $@
# update Linux kernel config on makefile changes
kernel_config.tag: $(MAKEFILE_LIST)
kernel_build.phony: kernel_config.tag
$(MSG_BUILD)Linux
$(VERBOSE)$(MAKE) $(LX_MK_ARGS) $(BUILD_OUTPUT_FILTER)

View File

@ -1,5 +1,5 @@
TARGET := arm_64_virt_linux
REQUIRES := arm_64
REQUIRES := arm_v8
CUSTOM_TARGET_DEPS := kernel_build.phony