From ec0f4bdc22af71da6c69ddccc3445bc909c2ca6a Mon Sep 17 00:00:00 2001 From: "kaf24@scramble.cl.cam.ac.uk" Date: Fri, 11 Feb 2005 11:34:22 +0000 Subject: bitkeeper revision 1.1177.1.1 (420c983eSjbjDYGF-fYWrXw_L7qkLA) Mini-OS cleanups. Bug fixes in x86_64 assembly code. Signed-off-by: keir.fraser@cl.cam.ac.uk --- extras/mini-os/Makefile | 42 +++++++++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 15 deletions(-) (limited to 'extras/mini-os/Makefile') diff --git a/extras/mini-os/Makefile b/extras/mini-os/Makefile index 606454b6bb..56bc7f9e5f 100644 --- a/extras/mini-os/Makefile +++ b/extras/mini-os/Makefile @@ -2,31 +2,44 @@ CC := gcc LD := ld -# Linker should relocate monitor to this address -MONITOR_BASE := 0xE0100000 +TARGET_ARCH := $(shell uname -m | sed -e s/i.86/x86_32/) # NB. '-Wcast-qual' is nasty, so I omitted it. -CFLAGS := -fno-builtin -O3 -Wall -Ih/ -Wredundant-decls -CFLAGS += -Wstrict-prototypes -Wnested-externs -Wpointer-arith -Winline -ansi +CFLAGS := -fno-builtin -O3 -Wall -Ih/ -Wredundant-decls -Wno-format +CFLAGS += -Wstrict-prototypes -Wnested-externs -Wpointer-arith -Winline + +ifeq ($(TARGET_ARCH),x86_32) +CFLAGS += -m32 -march=i686 +LDFLAGS := -m elf_i386 +endif + +ifeq ($(TARGET_ARCH),x86_64) +CFLAGS += -m64 -mno-red-zone -fpic -fno-reorder-blocks +CFLAGS += -fno-asynchronous-unwind-tables +LDFLAGS := -m elf_x86_64 +endif TARGET := mini-os -LOBJS := lib/malloc.o lib/math.o lib/printf.o lib/string.o -OBJS := entry.o kernel.o traps.o hypervisor.o mm.o events.o time.o ${LOBJS} +OBJS := $(TARGET_ARCH).o +OBJS += $(patsubst %.c,%.o,$(wildcard *.c)) +OBJS += $(patsubst %.c,%.o,$(wildcard lib/*.c)) -HINTF := h/xen-public/xen.h -HDRS := h/os.h h/types.h h/hypervisor.h h/mm.h h/events.h h/time.h h/lib.h -HDRS += $(HINTF) +OBJS := $(subst events.o,,$(OBJS)) +OBJS := $(subst hypervisor.o,,$(OBJS)) +OBJS := $(subst time.o,,$(OBJS)) + +HDRS := $(wildcard h/*.h) +HDRS += $(wildcard h/xen-public/*.h) default: $(TARGET) xen-public: - [ -e h/xen-public] || ln -sf ../../../xen/include/public h/xen-public + [ -e h/xen-public ] || ln -sf ../../../xen/include/public h/xen-public -$(TARGET): xen-public head.o $(OBJS) - $(LD) -N -T minios.lds head.o $(OBJS) -o $@.elf - objcopy -R .note -R .comment $@.elf $@ - gzip -f -9 -c $@ >$@.gz +$(TARGET): xen-public $(OBJS) + $(LD) -N -T minios-$(TARGET_ARCH).lds $(OBJS) -o $@.elf + gzip -f -9 -c $@.elf >$@.gz clean: find . -type f -name '*.o' | xargs rm -f @@ -38,4 +51,3 @@ clean: %.o: %.S $(HDRS) Makefile $(CC) $(CFLAGS) -D__ASSEMBLY__ -c $< -o $@ - -- cgit v1.2.3