X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fbuild%2FMakefile;h=7a42b2280642b213d396fc28d81f4047e30c8326;hb=8cb3daaded0d8c80be801aa74493006b5a06999f;hp=a91719cab3a1c65d7c359442a7df274d43fec7d7;hpb=4d691866d964c028d2b2ca96c2d16489d45dd2b5;p=palacios.git diff --git a/palacios/build/Makefile b/palacios/build/Makefile index a91719c..7a42b22 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.8 $ +# $Revision: 1.20 $ # This is free software. You are permitted to use, # redistribute, and modify it as specified in the file "COPYING". @@ -20,19 +20,6 @@ # to speed the build process on 2 processor systems. - -# THESE MUST MATCH WHAT IS DEFINED IN defs.h and defs.asm exactly -# MUST BE INTEGRAL NUMBER OF PAGES -TOP_OF_MEM := 0x40000000 -VM_SIZE := 0x20000000 -VM_START := 0x0 - -# -# THE KERNEL, SETUP, BOOTPACKAGE MUST BE SMALLER THAN THIS -# MUST BE INTEGRAL NUMBER OF PAGES -# define -MAX_VMM := 0x160000 - # Base address of kernel # # Note: at top of memory minus three pages (GDT/TSS/IDT) @@ -43,7 +30,7 @@ MAX_VMM := 0x160000 # # The setup code needs to copy it up to this address and jump there # -KERNEL_BASE_ADDR := $(shell perl -e 'print sprintf("0x%x",$(TOP_OF_MEM)-4096*3-$(MAX_VMM));') +KERNEL_BASE_ADDR := 0x00010000 # Kernel entry point function KERNEL_ENTRY = $(SYM_PFX)Main @@ -59,7 +46,7 @@ JRLDEBUG= -DSERIAL_PRINT_DEBUG=1 -DSERIAL_PRINT_DEBUG_LEVEL=10 -DSERIAL_PRINT=1 # # #Peter's compile flags -PADFLAGS = -DMAX_VMM=$(MAX_VMM) +PADFLAGS = # Figure out if we're compiling with cygwin, http://cygwin.com SYSTEM_NAME := $(shell uname -s) @@ -71,7 +58,7 @@ NON_ELF_SYSTEM := yes EXTRA_CC_USER_OPTS := -Dmain=geekos_main endif -VMM_SIZES = ../include/geekos/vmm_sizes.h + # ---------------------------------------------------------------------- @@ -97,8 +84,11 @@ KERNEL_C_SRCS := idt.c int.c trap.c irq.c io.c \ bget.c malloc.c \ synch.c kthread.c \ serial.c reboot.c \ - paging.c vmx.c vmcs_gen.c vmcs.c\ - svm.c \ + paging.c vm_guest.c \ + svm.c svm_handler.c vmm.c vmm_util.c vmm_stubs.c svm_ctrl_regs.c \ + vmcb.c vmm_mem.c vmm_paging.c vmm_io.c vmm_debug.c \ + vmm_shadow_paging.c vm_guest_mem.c \ + debug.c vmx.c vmcs_gen.c vmcs.c\ main.c # Kernel object files built from C source files @@ -137,7 +127,8 @@ COMMON_C_OBJS := $(COMMON_C_SRCS:%.c=common/%.o) # ---------------------------------------------------------------------- # Uncomment if cross compiling -#TARGET_CC_PREFIX := i386-elf- +TARGET_CC_PREFIX := $(PROJECT_ROOT)/../devtools/i386/bin/i386-elf- +#TARGET_CC_PREFIX := i386-elf- # Target C compiler. gcc 2.95.2 or later should work. TARGET_CC := $(TARGET_CC_PREFIX)gcc @@ -192,7 +183,7 @@ NUMSECS := $(PERL) $(PROJECT_ROOT)/scripts/numsecs # ---------------------------------------------------------------------- # Flags used for all C source files -GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) $(JRLDEBUG) $(PADFLAGS) +GENERAL_OPTS := -O -Wall $(EXTRA_C_OPTS) $(JRLDEBUG) $(PADFLAGS) -fPIC CC_GENERAL_OPTS := $(GENERAL_OPTS) -Werror # Flags used for kernel C source files @@ -266,21 +257,6 @@ pxe: fd.img $(PAD) /tftpboot/vmm.img 1474560 -pxe-discovery-pdinda: fd.img - cp fd.img geekos.img - $(PAD) geekos.img 1474560 - /usr/local/vmm-util/pxe_cp geekos.img - /usr/local/vmm-util/tty_perm pdinda - echo "Copied file to PXE boot area and set serial permissions for pdinda" - - -pxe-discovery-bjp600: fd.img - cp fd.img geekos.img - $(PAD) geekos.img 1474560 - /usr/local/vmm-util/pxe_cp geekos.img - /usr/local/vmm-util/tty_perm bjp600 - echo "Copied file to PXE boot area and set serial permissions for pdinda" - # 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 @@ -293,12 +269,12 @@ geekos/fd_boot.bin : geekos/setup.bin geekos/kernel.bin $(PROJECT_ROOT)/src/geek -o $@ # Setup program (second stage boot loader). -geekos/setup.bin : geekos/kernel.exe $(PROJECT_ROOT)/src/geekos/setup.asm +geekos/setup.bin : geekos/kernel.bin $(PROJECT_ROOT)/src/geekos/setup.asm $(NASM) -f bin \ -I$(PROJECT_ROOT)/src/geekos/ \ -DENTRY_POINT=0x`egrep 'Main$$' geekos/kernel.syms |awk '{print $$1}'` \ - -DVMM_FINAL_ADDR=$(KERNEL_BASE_ADDR) \ - -DVMM_SIZE=$(MAX_VMM) \ + -DVMM_SIZE=`$(NUMSECS) geekos/kernel.bin` \ + -DGUEST_SIZE=`$(NUMSECS) vm_kernel` \ $(PROJECT_ROOT)/src/geekos/setup.asm \ -o $@ $(PAD) $@ 512 @@ -315,31 +291,6 @@ geekos/kernel.exe : $(KERNEL_OBJS) $(COMMON_C_OBJS) $(TARGET_NM) geekos/kernel.exe > geekos/kernel.syms -generate_sizes: force - echo "#ifndef __vmm_sizes" > $(VMM_SIZES) - echo "#define __vmm_sizes" >> $(VMM_SIZES) - echo "#define KERNEL_LOAD_ADDRESS " $(KERNEL_BASE_ADDR) >> $(VMM_SIZES) - - echo "#define KERNEL_START (KERNEL_LOAD_ADDRESS)" >> $(VMM_SIZES) - echo "#define KERNEL_CORE_LENGTH (" `$(NUMSECS) geekos/kernel.bin` "*512)" >> $(VMM_SIZES) - echo "#define KERNEL_END (KERNEL_LOAD_ADDRESS+KERNEL_CORE_LENGTH-1)" >> $(VMM_SIZES) - - echo "#define VM_KERNEL_LENGTH (" `$(NUMSECS) vm_kernel` "*512)" >> $(VMM_SIZES) - echo "#define VM_KERNEL_START (KERNEL_LOAD_ADDRESS + KERNEL_CORE_LENGTH)" >> $(VMM_SIZES) - echo "#define VM_BOOT_PACKAGE_START (VM_KERNEL_START) " >> $(VMM_SIZES) - echo "#define VM_BOOT_PACKAGE_END (VM_KERNEL_START+VM_KERNEL_LENGTH-1) " >> $(VMM_SIZES) - echo "#endif" >> $(VMM_SIZES) - -make_show_sizes: generate_sizes ../src/geekos/show_sizes.c - $(HOST_CC) -I../include/geekos ../src/geekos/show_sizes.c -o show_sizes - -show_sizes: make_show_sizes - ./show_sizes - - -get_kernel_size: make_show_sizes - ./show_sizes | grep - force: @@ -348,6 +299,11 @@ vm_kernel: force @echo "VM kernel lives at 0x100000 and is" `$(NUMSECS) vm_kernel` "sectors long" + +vmm_mem_test: geekos/vmm_mem.c + $(HOST_CC) -m32 -o mem_test -DVMM_MEM_TEST -I../include ../src/geekos/vmm_mem.c + + # Clean build directories of generated files clean : for d in geekos common libc user tools; do \