timer works in bochs and on physical machine. need global definition for bochs...
[akaros.git] / kern / Makefrag
index f0f675d..a34a580 100644 (file)
@@ -1,19 +1,21 @@
 #
-# Makefile fragment for JOS kernel.
+# Makefile fragment for ROS kernel.
 # This is NOT a complete makefile;
 # you must run GNU make in the top-level directory
 # where the GNUmakefile is located.
 #
 
 OBJDIRS += kern
+CC=ivycc --deputy
 
-KERN_LDFLAGS := $(LDFLAGS) -T kern/kernel.ld -nostdlib
+KERN_LDFLAGS := $(LDFLAGS) -Lobj/ivylib -T kern/kernel.ld -nostdlib
 
 # entry.S must be first, so that it's the first code in the text segment!!!
 #
 # We also snatch the use of a couple handy source files
 # from the lib directory, to avoid gratuitous code duplication.
 KERN_SRCFILES :=       kern/entry.S \
+                       kern/smp_entry.S \
                        kern/init.c \
                        kern/console.c \
                        kern/monitor.c \
@@ -27,6 +29,10 @@ KERN_SRCFILES :=     kern/entry.S \
                        kern/sched.c \
                        kern/syscall.c \
                        kern/kdebug.c \
+                       kern/apic.c \
+                       kern/testing.c \
+                       kern/atomic.c \
+                       kern/smp.c \
                        lib/printfmt.c \
                        lib/readline.c \
                        lib/string.c
@@ -34,7 +40,18 @@ KERN_SRCFILES :=     kern/entry.S \
 # Only build files if they exist.
 KERN_SRCFILES := $(wildcard $(KERN_SRCFILES))
 
-KERN_BINFILES := 
+KERN_BINFILES :=       user/hello \
+                       user/buggyhello \
+                       user/evilhello \
+                       user/testbss \
+                       user/divzero \
+                       user/breakpoint \
+                       user/softint \
+                       user/badsegment \
+                       user/faultread \
+                       user/faultreadkernel \
+                       user/faultwrite \
+                       user/faultwritekernel
 
 KERN_OBJFILES := $(patsubst %.c, $(OBJDIR)/%.o, $(KERN_SRCFILES))
 KERN_OBJFILES := $(patsubst %.S, $(OBJDIR)/%.o, $(KERN_OBJFILES))
@@ -59,9 +76,9 @@ $(OBJDIR)/kern/%.o: lib/%.c
        $(V)$(CC) -nostdinc $(KERN_CFLAGS) -c -o $@ $<
 
 # How to build the kernel itself
-$(OBJDIR)/kern/kernel: $(KERN_OBJFILES) $(KERN_BINFILES) kern/kernel.ld
+$(OBJDIR)/kern/kernel: $(KERN_OBJFILES) $(KERN_BINFILES) kern/kernel.ld $(OBJDIR)/ivylib/libivykern.a
        @echo + ld $@
-       $(V)$(LD) -o $@ $(KERN_LDFLAGS) $(KERN_OBJFILES) $(GCC_LIB) -b binary $(KERN_BINFILES)
+       $(V)$(LD) -o $@ $(KERN_LDFLAGS) $(KERN_OBJFILES) -livykern $(GCC_LIB) -b binary $(KERN_BINFILES)
        $(V)$(OBJDUMP) -S $@ > $@.asm
        $(V)$(NM) -n $@ > $@.sym
 
@@ -72,10 +89,19 @@ $(OBJDIR)/kern/bochs.img: $(OBJDIR)/kern/kernel $(OBJDIR)/boot/boot
        $(V)dd if=$(OBJDIR)/boot/boot of=$(OBJDIR)/kern/bochs.img~ conv=notrunc 2>/dev/null
        $(V)dd if=$(OBJDIR)/kern/kernel of=$(OBJDIR)/kern/bochs.img~ seek=1 conv=notrunc 2>/dev/null
        $(V)mv $(OBJDIR)/kern/bochs.img~ $(OBJDIR)/kern/bochs.img
+
+all: $(OBJDIR)/kern/bochs.img
+
+kvm: $(OBJDIR)/kern/kernel
+       $(V)echo "+ (KVM) Copying to mnt/hdd"
        $(V)cp $(OBJDIR)/kern/kernel mnt/hdd/texas
        $(V)sync
 
-all: $(OBJDIR)/kern/bochs.img
+usb: $(OBJDIR)/kern/kernel
+       $(V)echo "+ (USB) Copying to /dev/sdb4"
+       $(V)cp $(OBJDIR)/kern/kernel /media/disk/texas
+       $(V)sync
+       $(V)umount /media/disk
 
 grub: $(OBJDIR)/jos-grub