# -*- makefile -*-
-SUBSYSTEMS = JABI ABI DRIVERS KERNEL CRT0 BOOT LIBK LIBAMM \
+include $(srcdir)/Modules.generic
+
+SUBSYSTEMS = JABI ABI DRIVERS KERNEL CRT0 BOOT LIBK \
CHECKSUM CXXLIB MINILIBC LIBKERN TCBOFFSET SYMBOLS VERSION GBLCFG
ifeq ("$(CONFIG_GSTABS)","y")
$(CONFIG_XARCH) apic abs-timeout-hack \
i8259 pc i8254 fpu \
auto_map_kip
+
OBJ_SPACE-y = phys
OBJ_SPACE- = virt
OBJ_SPACE = $(OBJ_SPACE-$(CONFIG_DISABLE_VIRT_OBJ_SPACE))
PREPROCESS_PARTS-$(CONFIG_WATCHDOG) += watchdog
PREPROCESS_PARTS-$(CONFIG_PERF_CNT) += perf_cnt
PREPROCESS_PARTS-$(CONFIG_IO_PROT) += io
-PREPROCESS_PARTS-$(CONFIG_SVM) += 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 += $(PREPROCESS_PARTS-y)
-
#
# TYPES subsystem
#
#
# ABI Subsystem
#
-PRIVATE_INCDIR += abi
ABI := libabi.a
VPATH += abi/$(CONFIG_XARCH) abi
INTERFACES_ABI := l4_fpage l4_msg_item l4_buf_desc kip l4_types \
l4_error virt
-kip_IMPL := kip kip-amd64 kip-debug kip-amd64-debug
+kip_IMPL := kip kip-debug kip-amd64 kip-amd64-debug
l4_types_IMPL := l4_types l4_types-debug
virt_IMPL := virt-ia32-amd64
keyb_IMPL := keyb keyb-pc
io_IMPL := io io-amd64
-processor_IMPL := processor processor-amd64
mem_IMPL := mem mem-amd64
+processor_IMPL := processor processor-amd64
#
# KERNEL subsystem
#
KERNEL := fiasco.image
-VPATH += kern/$(CONFIG_XARCH) kern/shared kern/ia32/64 kern/ia32 kern
-VPATH += jdb/ia32/64 jdb/ia32 jdb
-PRIVATE_INCDIR += kern/$(CONFIG_XARCH) kern/shared kern/ia32/64 kern/ia32 kern
-
-INTERFACES_KERNEL := startup boot_info cmdline __main mapping mappable \
- mapping_tree mapdb region pic \
- queue_item queue l4_buf_iter cpu_mask rcupdate \
- bitmap acpi io_apic spin_lock mem_region mem_space \
- mem_space_sigma0 space factory lock irq_pin \
- obj_space ptab_base vlog pages kobject_mapdb \
- 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 ipc_sender \
- thread_state context mp_lock sender receiver \
- mem_unit kobject_dbg kobject ref_obj ref_ptr vcpu \
- thread kobject_helper icu_helper \
- syscalls kernel_thread map_util irq banner \
- warn per_cpu_data per_cpu_data_alloc \
- dirq globals apic watchdog kernel_uart pit \
- dirq_pic_pin dirq_io_apic irq_msi irq_controller \
- checksum main config mapped_alloc \
- vmem_alloc paging fpu fpu_state fpu_alloc cpu \
- entry_frame kernel_console boot_console profile \
- ipc_gate task irq_chip terminate \
- sched_context utcb_init continuation \
- perf_cnt x86desc gdt idt tss trap_state \
- buddy_alloc vkey kdb_ke kernel_task dbg_page_info \
- io_space io_space_sigma0 ram_quota scheduler \
- prio_list app_cpu_thread ipi timer_irq \
- clock svm vm ready_queue_wfq ready_queue_fp
+VPATH += kern/$(CONFIG_XARCH) kern/ia32/64 kern/ia32 kern
+PRIVATE_INCDIR += kern/$(CONFIG_XARCH) kern/ia32/64 kern/ia32 kern
+
+INTERFACES_KERNEL += __main acpi io_apic dirq_pic_pin dirq_io_apic \
+ io_space_sigma0 irq_msi io_space apic pit checksum \
+ boot_console profile 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
kip_init_IMPL := kip_init-ia32
kmem_IMPL := kmem-ia32 kmem-ia32-64
kmem_alloc_IMPL := kmem_alloc kmem_alloc-ia32
-
main_IMPL := main-ia32-64 main-ia32
mapping_IMPL := mapping-ia32-64 mapping
map_util_IMPL := map_util map_util-mem map_util-io map_util-objs
task_IMPL := task task-ia32-amd64
tb_entry_IMPL := tb_entry tb_entry-ia32-64
timer_IMPL := timer timer-ia32-amd64-ux
-thread_IMPL := thread thread-ia32-64 thread-ia32 \
- thread-ipc \
- thread-list \
- thread-pagefault thread-log \
+thread_IMPL := thread thread-ia32 thread-ia32-64 \
+ thread-ipc thread-pagefault thread-log \
thread-debug thread-dbf thread-ulock thread-vcpu
trap_state_IMPL := trap_state-amd64
tss_IMPL := tss-amd64
utcb_init_IMPL := utcb_init utcb_init-ia32
vmem_alloc_IMPL := vmem_alloc vmem_alloc-ia32
-vm_IMPL := vm-svm
+vm_factory_IMPL := vm_factory vm_factory-ia32
watchdog_IMPL := watchdog watchdog-ia32
-ifeq ("$(CONFIG_SERIAL)","y")
- INTERFACES_KERNEL += uart_console
-endif
+INTERFACES_KERNEL-$(CONFIG_SERIAL) += uart_console
ifeq ("$(CONFIG_PROFILE)","y")
cpu_lock_IMPL := cpu_lock cpu_lock-pic
endif
ifeq ("$(CONFIG_JDB)","y")
-INTERFACES_KERNEL += jdb_entry_frame jdb jdb_prompt_ext jdb_symbol \
- jdb_dbinfo jdb_bp jdb_thread_list jdb_lines \
- jdb_tbuf jdb_module jdb_core jdb_io_ports \
+JDB := jdb_compound.o
+SUBSYSTEMS += JDB
+VPATH += jdb/ia32/64 jdb/ia32 jdb
+INTERFACES_KERNEL += jdb_tbuf jdb_trace tb_entry jdb_tbuf_init
+INTERFACES_JDB += jdb jdb_util jdb_prompt_ext jdb_symbol jdb_lines \
+ jdb_dbinfo jdb_bp \
+ 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 \
- jdb_bt 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_util jdb_space \
- jdb_kobject jdb_kobject_names jdb_ipc_gate \
- jdb_obj_space jdb_log jdb_factory jdb_semaphore \
- jdb_io_apic jdb_trap_state jdb_ipi jdb_rcupdate \
+ loadcnt jdb_utcb jdb_thread_list \
+ jdb_entry_frame jdb_kobject jdb_space jdb_io_apic \
+ jdb_trap_state jdb_ipi jdb_kobject_names \
+ jdb_rcupdate jdb_bt jdb_ipc_gate jdb_obj_space \
+ jdb_log jdb_factory jdb_semaphore jdb_iomap \
jdb_thread jdb_scheduler jdb_sender_list \
- jdb_disasm jdb_regex
+ jdb_regex jdb_disasm
apic_IMPL += apic-debug
jdb_IMPL := jdb jdb-ia32-amd64 jdb-ansi jdb-ia32-ux jdb-thread \
jdb-int3-ia32-amd64 jdb-int3-ia32-ux
jdb_bp_IMPL := jdb_bp-ia32-ux jdb_bp-ia32-amd64 jdb_bp-amd64
jdb_bt_IMPL := jdb_bt-ia32-ux
+jdb_entry_frame_IMPL := jdb_entry_frame-ia32
jdb_kern_info_IMPL := jdb_kern_info jdb_kern_info-ia32-amd64 \
jdb_kern_info-ia32-ux jdb_kern_info-apic \
- jdb_kern_info-pci \
- jdb_kern_info-bench \
- jdb_kern_info-bench-ia32-64 jdb_kern_info-dr
+ jdb_kern_info-pci jdb_kern_info-bench \
+ jdb_kern_info-bench-ia32-64 \
+ jdb_kern_info-dr jdb_kern_info-mtrr
jdb_misc_IMPL := jdb_misc-ia32-amd64
-jdb_screen_IMPL := jdb_screen jdb_screen-ia32
jdb_ptab_IMPL := jdb_ptab jdb_ptab-amd64
+jdb_screen_IMPL := jdb_screen jdb_screen-ia32
jdb_tcb_IMPL := jdb_tcb jdb_tcb-amd64
-jdb_entry_frame_IMPL := jdb_entry_frame-ia32
jdb_trace_set_IMPL := jdb_trace_set jdb_trace_set-ia32-ux
-#jdb_utcb_IMPL := jdb_utcb-ia32-ux
-# ifeq ("$(CONFIG_JDB_MISC)","y")
- INTERFACES_KERNEL += jdb_tetris
-# endif
+INTERFACES_JDB-$(CONFIG_JDB_MISC) += jdb_tetris
endif
CXXSRC_KERNEL := kernel_panic.cc libc_backend_lock.cc
ASSRC_KERNEL := entry.S entry-native.S shortcut.S
-ifeq ($(CONFIG_KIP_SYSCALLS_ABS),y)
- ASSRC_KERNEL += sys_call_page-asm.S
-endif
-
-ifeq ($(CONFIG_MP),y)
- ASSRC_KERNEL += tramp-mp.S entry-mp.S
-endif
+ASSRC_KERNEL-$(CONFIG_KIP_SYSCALLS_ABS) += sys_call_page-asm.S
+ASSRC_KERNEL-$(CONFIG_MP) += tramp-mp.S entry-mp.S
+ASSRC_KERNEL-$(CONFIG_CPU_VIRT) += vm_svm_asm.S vm_vmx_asm.S
+ASSRC_KERNEL += $(ASSRC_KERNEL-y)
NOOPT += $(filter jdb%,\
$(foreach in,$(INTERFACES_KERNEL), \
$(if $($(in)_IMPL),$($(in)_IMPL),$(in))))
NOOPT += tb_entry_output $(tb_entry_IMPL) $(perf_cnt_IMPL) \
kern_cnt loadcnt $(apic_IMPL) $(watchdog_IMPL) kdb \
- $(kernel_uart_IMPL) push_console virq thread-dbf \
+ $(kernel_uart_IMPL) push_console thread-dbf \
trap_state
### 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)
#
ifneq ($(CONFIG_JDB_GZIP),)
LIBGZIP := libgzip.a
- VPATH += lib/gzip
+ VPATH += lib/gzip
PRIVATE_INCDIR += lib/gzip
- CSRC_LIBGZIP := adler32.c crc32.c gzip.c trees.c deflate.c zutil.c
- NOOPT += $(patsubst %.o, %, $(OBJ_LIBGZIP))
+ CSRC_LIBGZIP := adler32.c crc32.c gzip.c trees.c deflate.c zutil.c
+ NOOPT += $(patsubst %.o, %, $(OBJ_LIBGZIP))
endif
#
lib/disasm/libiberty lib/disasm/bfd
PRIVATE_INCDIR += lib/disasm
CSRC_LIBDISASM := disasm.c dis-init.c i386-dis.c dis-buf.c
- NOOPT += $(patsubst %.o, %, $(OBJ_LIBDISASM))
+ NOOPT += $(patsubst %.o, %, $(OBJ_LIBDISASM))
endif
#
endif
MODULES_FILES = $(MODULES_FILE) $(MODULES_FILE_BSP)
+
+INTERFACES_KERNEL += $(INTERFACES_KERNEL-y)