# -*- makefile -*-
-SUBSYSTEMS = JABI ABI DRIVERS KERNEL CRT0 BOOT LIBK LIBAMM \
- CHECKSUM CXXLIB MINILIBC LIBKERN TCBOFFSET SYMBOLS VERSION GBLCFG
+include $(srcdir)/Modules.generic
+
+SUBSYSTEMS = JABI ABI DRIVERS KERNEL CRT0 BOOT LIBK \
+ CHECKSUM CXXLIB MINILIBC LIBKERN TCBOFFSET VERSION GBLCFG
ifeq ("$(CONFIG_GSTABS)","y")
SUBSYSTEMS += LINES
PREPROCESS_PARTS-$(CONFIG_SERIAL) += serial 16550
PREPROCESS_PARTS-$(CONFIG_WATCHDOG) += watchdog
PREPROCESS_PARTS-$(CONFIG_PERF_CNT) += perf_cnt
-PREPROCESS_PARTS-$(CONFIG_HANDLE_SEGMENTS) += segments
PREPROCESS_PARTS-$(CONFIG_IO_PROT) += io
-PREPROCESS_PARTS-$(CONFIG_IO_PROT_IOPL_3) += iopl3
-PREPROCESS_PARTS-$(CONFIG_CPU_VIRT) += svm
+PREPROCESS_PARTS-$(CONFIG_CPU_VIRT) += svm vmx
PREPROCESS_PARTS-$(CONFIG_SCHED_FIXED_PRIO) += sched_fixed_prio
PREPROCESS_PARTS-$(CONFIG_SCHED_WFQ) += sched_wfq
PREPROCESS_PARTS-$(CONFIG_SCHED_FP_WFQ) += sched_fp_wfq
+PREPROCESS_PARTS-$(CONFIG_IO_PROT_IOPL_3) += iopl3
PREPROCESS_PARTS += $(PREPROCESS_PARTS-y)
INTERFACES_ABI := l4_fpage l4_msg_item l4_buf_desc kip l4_types \
l4_error virt
-kip_IMPL := kip kip-ia32 kip-debug kip-ia32-debug
+kip_IMPL := kip kip-debug kip-ia32 kip-ia32-debug
l4_types_IMPL := l4_types l4_types-debug
virt_IMPL := virt-ia32-amd64
# KERNEL subsystem
#
KERNEL := fiasco.image
-VPATH += kern/$(CONFIG_XARCH) kern/shared kern/ia32/32 kren/ia32 kern
-PRIVATE_INCDIR += kern/$(CONFIG_XARCH) kern/shared kern/ia32/32 kern/ia32 kern
-
-INTERFACES_KERNEL := cpu_mask rcupdate pages kobject_mapdb \
- mem_region per_cpu_data startup boot_info cmdline \
- __main queue queue_item l4_buf_iter irq_pin \
- bitmap acpi io_apic mapping spin_lock \
- mapping_tree mappable dbg_page_info \
- mapdb region pic dirq_pic_pin dirq_io_apic \
- kobject_dbg kobject ready_queue_wfq ready_queue_fp \
- obj_space ptab_base io_space_sigma0 irq_msi \
- io_space ram_quota ref_ptr ref_obj \
- mem_space mem_space_sigma0 space vlog \
- kmem kmem_alloc slab_cache_anon mem_layout \
- kmem_slab_simple kmem_slab switch_lock kip_init \
- thread_lock helping_lock cpu_lock timer timeout \
- ipc_timeout timeslice_timeout \
- per_cpu_data_alloc vcpu kobject_helper icu_helper \
- thread_state context mp_lock sender receiver \
- mem_unit factory lock ipc_sender \
- thread syscalls kernel_thread map_util irq banner \
- warn app_cpu_thread \
- dirq globals apic watchdog kernel_uart pit \
- checksum main config mapped_alloc \
- vmem_alloc paging fpu fpu_state fpu_alloc cpu \
- entry_frame kernel_console boot_console profile \
- ipc_gate task kernel_task irq_controller \
- irq_chip terminate continuation \
- sched_context utcb_init \
- perf_cnt x86desc gdt idt tss trap_state \
- buddy_alloc vkey kdb_ke prio_list ipi timer_irq \
- scheduler clock vm_factory \
- sys_call_page
-
-INTERFACES_KERNEL-$(CONFIG_CPU_VIRT) += svm vm vm_svm
+VPATH += kern/$(CONFIG_XARCH) kern/ia32/32 kern/ia32 kern
+PRIVATE_INCDIR += kern/$(CONFIG_XARCH) kern/ia32/32 kern/ia32 kern
+
+INTERFACES_KERNEL += __main acpi io_apic dirq_pic_pin dirq_io_apic \
+ io_space_sigma0 irq_msi boot_console profile \
+ io_space apic pit checksum x86desc gdt idt tss \
+ timer_irq
+
+INTERFACES_KERNEL-$(CONFIG_CPU_VIRT) += svm vmx vm vm_svm vm_vmx
PREPROCESS_PARTS += ulock
INTERFACES_KERNEL += u_semaphore
main_IMPL := main-ia32-32 main-ia32
mapping_IMPL := mapping-ia32-32 mapping
map_util_IMPL := map_util map_util-mem map_util-io map_util-objs
-mem_layout_IMPL := mem_layout mem_layout-ia32-32 mem_layout-ia32
+mem_layout_IMPL := mem_layout mem_layout-ia32 mem_layout-ia32-32
mem_space_IMPL := mem_space mem_space-user mem_space-ia32
mem_unit_IMPL := mem_unit-ia32
obj_space_IMPL := obj_space obj_space-$(OBJ_SPACE)
tb_entry_IMPL := tb_entry tb_entry-ia32-32
timer_IMPL := timer timer-ia32-amd64-ux
thread_IMPL := thread thread-ia32 thread-ia32-32 \
- thread-ipc \
- thread-list \
- thread-pagefault thread-log \
+ thread-ipc thread-pagefault thread-log \
thread-debug thread-dbf thread-ulock thread-vcpu
utcb_init_IMPL := utcb_init utcb_init-ia32
vmem_alloc_IMPL := vmem_alloc vmem_alloc-ia32
endif
ifeq ("$(CONFIG_JDB)","y")
+JDB := jdb_compound.o
+SUBSYSTEMS += JDB
VPATH += jdb/ia32/32 jdb/ia32 jdb
-INTERFACES_KERNEL += jdb jdb_util jdb_prompt_ext jdb_symbol jdb_lines \
+INTERFACES_KERNEL += jdb_tbuf jdb_tbuf_init jdb_trace tb_entry
+INTERFACES_JDB += jdb jdb_util jdb_prompt_ext jdb_symbol jdb_lines \
jdb_dbinfo jdb_bp \
- jdb_tbuf jdb_module jdb_core jdb_io_ports \
+ jdb_module jdb_core jdb_io_ports \
jdb_kern_info jdb_prompt_module jdb_tbuf_output \
jdb_input jdb_dump jdb_ptab jdb_misc jdb_mapdb \
- jdb_tcb jdb_attach_irq jdb_tbuf_init jdb_trace \
+ jdb_tcb jdb_attach_irq \
jdb_trace_set jdb_counters jdb_table kern_cnt \
- tb_entry tb_entry_output jdb_exit_module \
- jdb_tbuf_show jdb_console_buffer virq \
+ tb_entry_output jdb_exit_module \
+ jdb_tbuf_show jdb_console_buffer \
jdb_list jdb_screen push_console jdb_timeout \
jdb_handler_queue jdb_halt_thread \
- jdb_kern_info_kmem_alloc jdb_kern_info_region \
+ jdb_kern_info_kmem_alloc \
jdb_kern_info_kip jdb_kern_info_config \
loadcnt jdb_utcb jdb_thread_list \
jdb_entry_frame jdb_kobject jdb_space jdb_io_apic \
jdb_tcb_IMPL := jdb_tcb jdb_tcb-ia32-ux
jdb_trace_set_IMPL := jdb_trace_set jdb_trace_set-ia32-ux
-INTERFACES_KERNEL-$(CONFIG_JDB_MISC) += jdb_tetris
+INTERFACES_JDB-$(CONFIG_JDB_MISC) += jdb_tetris
+
+INTERFACES_JDB += $(INTERFACES_JDB-y)
endif
ASSRC_KERNEL := entry.S entry-native.S sys_call_page-asm.S
ASSRC_KERNEL-$(CONFIG_MP) += tramp-mp.S entry-mp.S
-ASSRC_KERNEL-$(CONFIG_CPU_VIRT) += vm_svm_asm.S
+ASSRC_KERNEL-$(CONFIG_CPU_VIRT) += vm_svm_asm.S vm_vmx_asm.S
ASSRC_KERNEL += $(ASSRC_KERNEL-y)
NOOPT += $(filter jdb%,\
kern_cnt loadcnt $(apic_IMPL) $(watchdog_IMPL) kdb \
$(kernel_uart_IMPL) push_console virq thread-dbf \
trap_state
+NOOPT += $(foreach in,$(INTERFACES_JDB), \
+ $(if $($(in)_IMPL),$($(in)_IMPL),$(in)))
+
### When testing with test threads, uncomment the following:
#
CSRC_LIBKERN :=
NOOPT += $(patsubst %.o, %, $(OBJ_LIBKERN))
-#
-# LIBAMM subsystem
-#
-LIBAMM := libamm.a
-VPATH += lib/amm
-PRIVATE_INCDIR += lib/amm
-CSRC_LIBAMM := amm_alloc_entry.c amm_allocate.c amm_deallocate.c \
- amm_destroy.c amm_dump.c amm_find_addr.c amm_find_gen.c \
- amm_free_entry.c amm_init.c amm_init_gen.c amm_iterate.c \
- amm_iterate_gen.c amm_join.c amm_modify.c amm_protect.c \
- amm_reserve.c amm_select.c amm_split.c
#
# LIBGZIP subsystem (only for Jdb)