X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fbuild%2FMakefile;h=e8b2b783c0bb7f53514a2374192e1487de3e4706;hb=f7cc83b3bae64c853f5b7b63e2830b1ea92dfed9;hp=afbbafcffdcb1341ace1aca87e83f38721c90c64;hpb=2fb8b9a851cf1af89c476c933a2ba80ddf474379;p=palacios.git diff --git a/palacios/build/Makefile b/palacios/build/Makefile index afbbafc..e8b2b78 100644 --- a/palacios/build/Makefile +++ b/palacios/build/Makefile @@ -1,6 +1,6 @@ # Makefile for GeekOS kernel, userspace, and tools # Copyright (c) 2004,2005 David H. Hovemeyer -# $Revision: 1.43 $ +# $Revision: 1.46 $ # This is free software. You are permitted to use, # redistribute, and modify it as specified in the file "COPYING". @@ -30,7 +30,7 @@ # # The setup code needs to copy it up to this address and jump there # -KERNEL_BASE_ADDR := 0x00010000 +KERNEL_BASE_ADDR := 0x00100000 # Kernel entry point function KERNEL_ENTRY = $(SYM_PFX)Main @@ -42,14 +42,34 @@ VPATH := $(PROJECT_ROOT)/src #when -DNDEBUG is set the kassert functions are disabled #JRLDEBUG=-DNDEBUG +# DEBUG=1 means VMM_DEBUG, VMM_INFO, and VMM_TRACE are enabled +# as are SERIAL_PRINT_DEBUG +# DEBUG=1 +# +# XED=1 means that libxed will be included +# +# and VMM_XED is one +# +# and make world will build an empty boot package +# +XED=0 + ifeq ($(DEBUG),1) JRLDEBUG= -DSERIAL_PRINT_DEBUG=1 -DSERIAL_PRINT_DEBUG_LEVEL=10 -DSERIAL_PRINT=1 -DVMM_DEBUG=1 -DVMM_INFO=1 -DVMM_TRACE=1 else JRLDEBUG= -DSERIAL_PRINT_DEBUG=0 -DSERIAL_PRINT_DEBUG_LEVEL=999999 -DSERIAL_PRINT=0 -DVMM_DEBUG=0 -DVMM_INFO=0 -DVMM_TRACE=0 endif +ifeq ($(XED),1) + LEIXED = -DVMM_XED=1 +else + LEIXED = -DVMM_XED=0 +endif + +LEIFLAGS = $(LEIXED) + # # #Peter's compile flags @@ -106,7 +126,7 @@ KERNEL_C_OBJS := $(KERNEL_C_SRCS:%.c=geekos/%.o) # Kernel assembly files KERNEL_ASM_SRCS := lowlevel.asm -KERNEL_GAS_SRCS := testvm.s +KERNEL_GAS_SRCS := testvm.s udivdi3.s # Kernel object files build from assembler source files KERNEL_ASM_OBJS := $(KERNEL_ASM_SRCS:%.asm=geekos/%.o) @@ -139,7 +159,7 @@ VMM_C_SRCS := vm_guest.c \ vmm_intr.c vmm_time.c\ vmm_shadow_paging.c vm_guest_mem.c \ vm_dev.c vmm_dev_mgr.c vmm_decoder.c \ - svm_halt.c + svm_halt.c svm_pause.c #\ # vmx.c vmcs_gen.c vmcs.c @@ -153,6 +173,11 @@ DEVICE_C_OBJS := $(DEVICE_C_SRCS:%.c=devices/%.o) DEVICE_OBJS := $(DEVICE_C_OBJS) +V3LIBS := + +ifeq ($(XED),1) + V3LIBS := $(V3LIBS) -L../lib/xed -lxed +endif # ---------------------------------------------------------------------- @@ -211,13 +236,16 @@ ZEROFILE := $(PERL) $(PROJECT_ROOT)/scripts/zerofile NUMSECS := $(PERL) $(PROJECT_ROOT)/scripts/numsecs +#Round a value up to a certain factor (hex values) +ROUND_UP_HEX := $(PERL) $(PROJECT_ROOT)/scripts/round_up_hex.pl + # ---------------------------------------------------------------------- # Definitions - # Options passed to the tools. # ---------------------------------------------------------------------- # Flags used for all C source files -GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) $(JRLDEBUG) $(PADFLAGS) -fPIC +GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) $(JRLDEBUG) $(PADFLAGS) $(LEIFLAGS) -fPIC CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror # Flags used for kernel C source files @@ -298,10 +326,10 @@ all : $(ALL_TARGETS) # $(CC) geekos/test.o geekos/vmcs.o geekos/vmx_lowlevel.o -o geekos/test # Standard floppy image - just boots the kernel -fd.img : geekos/fd_boot.bin geekos/setup.bin geekos/kernel.bin vm_kernel +fd.img : geekos/fd_boot.bin geekos/setup.bin geekos/kernel.bin cat geekos/fd_boot.bin geekos/setup.bin geekos/kernel.bin > _temp $(PAD) _temp 512 - cat _temp vm_kernel > $@ + cp _temp fd.img vmm.img : fd.img cp fd.img vmm.img @@ -314,7 +342,11 @@ force_vgabios: (cd ../src/vmboot/vgabios; make clean; make) force_payload: force_rombios force_vgabios +ifeq ($(XED),1) + ../scripts/make_payload.pl payload_none.txt vm_kernel +else ../scripts/make_payload.pl payload_layout.txt vm_kernel +endif inter1: force_payload -make clean @@ -332,12 +364,11 @@ run: vmm.img # Floppy boot sector (first stage boot loader). -geekos/fd_boot.bin : geekos/setup.bin geekos/kernel.bin $(PROJECT_ROOT)/src/geekos/fd_boot.asm vm_kernel +geekos/fd_boot.bin : geekos/setup.bin geekos/kernel.bin $(PROJECT_ROOT)/src/geekos/fd_boot.asm $(NASM) -f bin \ -I$(PROJECT_ROOT)/src/geekos/ \ -DNUM_SETUP_SECTORS=`$(NUMSECS) geekos/setup.bin` \ -DNUM_KERN_SECTORS=`$(NUMSECS) geekos/kernel.bin` \ - -DNUM_VM_KERNEL_SECTORS=`$(NUMSECS) vm_kernel` \ $(PROJECT_ROOT)/src/geekos/fd_boot.asm \ -o $@ @@ -347,7 +378,6 @@ geekos/setup.bin : geekos/kernel.bin $(PROJECT_ROOT)/src/geekos/setup.asm -I$(PROJECT_ROOT)/src/geekos/ \ -DENTRY_POINT=0x`egrep 'Main$$' geekos/kernel.syms |awk '{print $$1}'` \ -DVMM_SIZE=`$(NUMSECS) geekos/kernel.bin` \ - -DGUEST_SIZE=`$(NUMSECS) vm_kernel` \ $(PROJECT_ROOT)/src/geekos/setup.asm \ -o $@ $(PAD) $@ 512 @@ -358,18 +388,18 @@ geekos/kernel.bin : geekos/kernel.exe $(PAD) $@ 512 # The kernel executable and symbol map. -geekos/kernel.exe : $(KERNEL_OBJS) $(COMMON_C_OBJS) $(VMM_OBJS) $(DEVICE_OBJS) +geekos/kernel.exe : $(KERNEL_OBJS) $(COMMON_C_OBJS) $(VMM_OBJS) $(DEVICE_OBJS) vm_kernel $(TARGET_LD) -o geekos/kernel.exe -Ttext $(KERNEL_BASE_ADDR) -e $(KERNEL_ENTRY) \ - $(KERNEL_OBJS) $(COMMON_C_OBJS) $(VMM_OBJS) $(DEVICE_OBJS) + $(KERNEL_OBJS) $(COMMON_C_OBJS) $(VMM_OBJS) $(DEVICE_OBJS) $(V3LIBS) -b binary vm_kernel $(TARGET_NM) geekos/kernel.exe > geekos/kernel.syms force: -vm_kernel: force - $(PAD) vm_kernel 512 - @echo "VM kernel lives at 0x100000 and is" `$(NUMSECS) vm_kernel` "sectors long" +#vm_kernel: force +# $(PAD) vm_kernel 512 +# @echo "VM kernel lives at 0x100000 and is" `$(NUMSECS) vm_kernel` "sectors long"