ARCH = $(shell uname -m) ifneq ("$(ARCH)", "ppc64") ifneq ("$(ARCH)", "ppc64le") CROSS_COMPILE ?= powerpc64le-linux-gnu- endif endif # a multiplier factor on sleep loops. this allows simulations to run # at much shorter intervals LONG_TIMER_MULT = 10000 SHORT_TIMER_MULT = 100 #LONG_TIMER_MULT = 1 #SHORT_TIMER_MULT = 1 # SPI boot address 0x1000_0000, main SRAM boot would be 0x0000_0000 # but remember to recompile external_core_top.v with a matching # --pc_reset=0xNNNNNNNN BOOT_INIT_BASE ?= 0x10000000 # BOOT_INIT_BASE ?= 0x0 LIBGRAMDIR = ../libgram LIBGRAMINC = ../libgram/include GRAMOBJS := $(LIBGRAMDIR)/src/init.o \ $(LIBGRAMDIR)/src/dfii.o \ $(LIBGRAMDIR)/src/calibration.o CC = $(CROSS_COMPILE)gcc LD = $(CROSS_COMPILE)ld OBJCOPY = $(CROSS_COMPILE)objcopy CFLAGS = -Os -g -Wall -std=c99 -msoft-float -mno-string \ -mno-multiple -mno-vsx -mno-altivec -mlittle-endian \ -fno-stack-protector -mstrict-align -ffreestanding \ -fdata-sections -ffunction-sections -I../include \ -I $(LIBGRAMINC) \ -DLONG_TIMER_MULT=$(LONG_TIMER_MULT) \ -DBOOT_INIT_BASE=$(BOOT_INIT_BASE) \ -DSHORT_TIMER_MULT=$(SHORT_TIMER_MULT) ASFLAGS = $(CFLAGS) LDFLAGS = -T powerpc.lds all: coldboot.hex coldboot.S console.o: ../lib/console.c $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ init.o: ../libgram/src/init.c $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ dfii.o: ../libgram/src/dfii.c $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ calibration.o: ../libgram/src/calibration.c $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@ powerpc.lds: powerpc.lds.S $(CC) $(CFLAGS) -P -E powerpc.lds.S -o powerpc.lds coldboot.elf: coldboot.o head.o ../lib/console.o $(GRAMOBJS) powerpc.lds $(LD) $(LDFLAGS) -o $@ coldboot.o head.o ../lib/console.o $(GRAMOBJS) coldboot.bin: coldboot.elf $(OBJCOPY) -O binary $^ $@ coldboot.hex: coldboot.bin ../scripts/bin2hex.py $^ > $@ powerpc64le-linux-gnu-objdump -D coldboot.elf > coldboot.as coldboot.S: coldboot.elf objdump -S coldboot.elf > coldboot.S clean: @rm -f ../lib/*.o ../libgram/src/*.o *.o coldboot.elf coldboot.bin coldboot.hex coldboot.as coldboot.S powerpc.lds distclean: clean rm -f *~