## ## Linux Loader for SPARC ## ## CC=gcc LD=ld AS=as RM=/bin/rm -f NM=nm DD=dd ELFTOAOUT=elftoaout STRIP=strip GZIP=gzip GDB=gdb ECHO=echo GREP=grep SED=sed CP=cp CFLAGS = -I../include -O -I. # Relocate to 2.5MB. The Hitchhiker's Guide to Open Boot Rev 3 claims # that 3MB are guaranteed to be mapped. LDFLAGS=-N -Ttext 0x280000 .c.o: $(CC) $(CFLAGS) -c $*.c .S.o: $(CC) $(CFLAGS) -c $*.S # The ordering here is very significant. Please add new object files to OBJS5 only. OBJS1 = crt0.o OBJS2 = decomp.o OBJS2N = decompnet.o OBJS3 = console.o printf.o malloc.o jmp.o OBJS4 = main.o OBJS4N = mainnet.o OBJS5 = cmdline.o disk.o file.o misc.o cfg.o strtol.o ranges.o tree.o timer.o memory.o ufs.o divdi3.o OBJS = $(OBJS1) $(OBJS2) $(OBJS3) bmark.o $(OBJS4) $(OBJS5) OBJSNET = $(OBJS1) $(OBJS2N) $(OBJS3) bmark.o $(OBJS4N) $(OBJS5) ifeq (Linux,$(shell uname)) ifeq (sparc,$(shell uname -m)) all: second.b silotftp.b else all: @$(ECHO) Second stage bootloader should be build under Linux/Sparc only endif else all: @$(ECHO) Second stage bootloader should be build under Linux/Sparc only endif second: $(OBJS) mark.o $(LD) $(LDFLAGS) -Bstatic -o second $(OBJS) -L../include -lext2fs mark.o -lc $(NM) second | grep -v '*ABS*' | sort > second.map silotftp: $(OBJSNET) mark.o $(LD) $(LDFLAGS) -Bstatic -o silotftp $(OBJSNET) -L../include -lext2fs mark.o -lc $(NM) silotftp | grep -v '*ABS*' | sort > silotftp.map second.l: second ( $(ECHO) 'disassemble 0x280000 '`$(GREP) '_etext' second.map | $(SED) 's/ .*$$//' | $(SED) 's/^00/0x/'`; $(ECHO) quit ) | $(GDB) second | $(SED) '1,/^(gdb)/d;/^End /,$$d' > second.l crt0.o: crt0.S main.o: main.c silo.h malloc.o: malloc.c silo.h printf.o: printf.c silo.h cmdline.o: cmdline.c silo.h console.o: console.c silo.h misc.o: misc.c silo.h disk.o: disk.c silo.h file.o: file.c silo.h ufs.h cfg.o: cfg.c silo.h ranges.o: ranges.c silo.h tree.o: tree.c silo.h timer.o: timer.c silo.h decomp.o: decomp.c inflate.c silo.h mark.o: mark.S bmark.o: bmark.S ufs.o: ufs.c silo.h ufs.h memory.o: memory.c silo.h jmp.o: jmp.S divdi3.o: divdi3.S decompnet.o: decomp.c inflate.c silo.h $(CC) $(CFLAGS) -DTFTP -c -o decompnet.o decomp.c mainnet.o: main.c silo.h $(CC) $(CFLAGS) -DTFTP -c -o mainnet.o main.c util: util.c $(CC) -o util util.c clean: $(RM) $(OBJS) *.o second second.b silotftp silotftp.b second.l *.map core *~ util second.b second.image.tmp second.b: second util $(CP) second second.tmp $(STRIP) second.tmp $(ELFTOAOUT) -o second.image.tmp second.tmp ./util -z second.map second.image.tmp second.b second.b2 $(GZIP) -9cfn second.b2 >> second.b $(RM) second.tmp second.image.tmp second.b2 ln -f second.b ../boot/second.b silotftp.b: silotftp util $(CP) silotftp silotftp.tmp $(STRIP) silotftp.tmp $(ELFTOAOUT) -o silotftp.image.tmp silotftp.tmp ./util -a silotftp.map silotftp.image.tmp silotftp.b silotftp.b2 $(GZIP) -9cfn silotftp.b2 >> silotftp.b $(RM) silotftp.tmp silotftp.image.tmp silotftp.b2 ln -f silotftp.b ../boot/silotftp.b