diff options
Diffstat (limited to 'big-little/Makefile')
-rwxr-xr-x | big-little/Makefile | 227 |
1 files changed, 227 insertions, 0 deletions
diff --git a/big-little/Makefile b/big-little/Makefile new file mode 100755 index 0000000..7800148 --- /dev/null +++ b/big-little/Makefile @@ -0,0 +1,227 @@ +# +# Copyright (c) 2011, ARM Limited. All rights reserved. +# +# Redistribution and use in source and binary forms, with +# or without modification, are permitted provided that the +# following conditions are met: +# +# Redistributions of source code must retain the above +# copyright notice, this list of conditions and the +# following disclaimer. +# +# Redistributions in binary form must reproduce the +# above copyright notice, this list of conditions and +# the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# Neither the name of ARM nor the names of its +# contributors may be used to endorse or promote products +# derived from this software without specific prior written +# permission. +# + +# Decrease the verbosity of the make script +# can be made verbose by passing V=1 at the make command line +ifdef V + KBUILD_VERBOSE = $(V) +else + KBUILD_VERBOSE = 0 +endif + +ifeq "$(KBUILD_VERBOSE)" "0" + Q=@ +else + Q= +endif + +HIBASE?=0x8ff +DEBUG=TRUE + +############################################################################################################### +# Shared/External Virtual GIC defines +SVGIC_OBJS += sh_vgic.o +############################################################################################################### +# Switcher defines +SWITCHER ?= TRUE +ASYNC ?= TRUE +HYP_TIMERS ?= TRUE +RAND_ASYNC ?= FALSE +HOST_CLUSTER ?= 1 +FLUSH_OB_L2 ?= TRUE +FLUSH_L2_FIX ?= FALSE +TUBE ?= FALSE +FM_BETA ?= TRUE + +ifeq ($(SWITCHER), TRUE) +ifeq ($(ASYNC), FALSE) +HYP_TIMERS = FALSE +endif + +vpath %.c switcher switcher/trigger switcher/context common/ lib/ secure_world/ ../acsr +vpath %.s switcher switcher/trigger switcher/context common/ lib/ secure_world/ ../acsr + +SWITCHER_OBJS = ns_context.o hyp_setup.o pagetable_setup.o virt_helpers.o sync_switchover.o \ + vgiclib.o vgic_handle.o uart.o v7.o gic.o handle_switchover.o tube.o \ + virt_events.o bakery.o vgic_setup.o async_switchover.o hyp_vectors.o helpers.o + +SECURE_ENTRY_POINT = monmode_vector_table + +SECURE_OBJS += secure_context.o monmode_vectors.o flat_pagetable.o virt_helpers.o virt_events.o \ + secure_resets.o bakery.o tube.o helpers.o + +SECURE_ASFLAGS = --apcs /inter --cpu=Eagle --keep --fpu=none --pd "FM_BETA SETL {$(FM_BETA)}" + +SECURE_CFLAGS = -Iinclude -I. -Isecure_world -I../acsr --cpu=Eagle --fpu=none -O2 \ + -DHOST_CLUSTER=$(HOST_CLUSTER) -DSWITCHER=$(SWITCHER) \ + -DFLUSH_OB_L2=$(FLUSH_OB_L2) -DTUBE=$(TUBE) -DFLUSH_L2_FIX=$(FLUSH_L2_FIX) -DFM_BETA=$(FM_BETA) + +SECURE_LDFLAGS = --verbose --map --fpu=none --symbols --noremove --datacompressor=off \ + --entry $(SECURE_ENTRY_POINT) --scatter $(SECURE_MAPFILE) --predefine="-DFM_BETA=$(FM_BETA)" + +SWITCHER_ASFLAGS += --pd "ASYNC_SWITCH SETL {$(ASYNC)}" \ + --pd "RAND_ASYNC SETL {$(RAND_ASYNC)}" \ + --pd "HOST_CLUSTER SETA $(HOST_CLUSTER)" \ + --pd "USE_HYP_TIMERS SETL {$(HYP_TIMERS)}" \ + --pd "SWITCHER SETL {$(SWITCHER)}" + +SWITCHER_CFLAGS += -DASYNC_SWITCH=$(ASYNC) \ + -DRAND_ASYNC=$(RAND_ASYNC) \ + -DHOST_CLUSTER=$(HOST_CLUSTER) \ + -DUSE_HYP_TIMERS=$(HYP_TIMERS) \ + -DFLUSH_OB_L2=$(FLUSH_OB_L2) \ + -DTUBE=$(TUBE) \ + -DFLUSH_L2_FIX=$(FLUSH_L2_FIX) \ + -DSWITCHER=$(SWITCHER) +endif + +############################################################################################################### +# Virtualisor defines +CMOP_DEBUG ?= FALSE +VIRTUALISOR_CFLAGS += -DCMOP_DEBUG=$(CMOP_DEBUG) +VIRTUALISOR_ASFLAGS += --pd "CMOP_DEBUG SETL {$(CMOP_DEBUG)}" + +vpath %.c virtualisor virtualisor/cpus/a15 virtualisor/cpus/a7 + +VIRTUALISOR_OBJS += virt_handle.o virt_setup.o virt_context.o cache_geom.o mem_trap.o vgic_trap_handler.o \ + a7.o a15.o + +############################################################################################################### + +OBJS += cci.o + +ASFLAGS = --apcs /inter --cpu=Eagle --keep --fpu=none \ + $(SWITCHER_ASFLAGS) \ + $(VIRTUALISOR_ASFLAGS) + +CFLAGS = -Iinclude -I. -Ivirtualisor/include -Ivirtualisor/cpus/a7/include \ + -Ivirtualisor/cpus/a15/include -I../acsr \ + --cpu=Eagle --fpu=none -O2 $(SWITCHER_CFLAGS) $(VIRTUALISOR_CFLAGS) + +ifdef DEBUG +CFLAGS += -g -O0 +ASFLAGS += -g +SECURE_CFLAGS += -g -O0 +SECURE_ASFLAGS += -g +endif + +LDFLAGS = --verbose --map --fpu=none --symbols --noremove --datacompressor=off --entry $(ENTRY_POINT) --scatter $(MAPFILE) +OBJS += $(SWITCHER_OBJS) $(VIRTUALISOR_OBJS) $(SVGIC_OBJS) +ENTRY_POINT = bl_setup +LISTFILE = bl_syms.txt +SECURE_LISTFILE = bl_sec_syms.txt +MAPFILE = bl.scf +SECURE_MAPFILE = bl-sec.scf + +CC = armcc +AS = armasm +AR = armar +LD = armlink + + +ifeq ($(FM_BETA), FALSE) +all: bl.axf bl_sec.axf wboot.bin +else +all: bl.axf bl_sec.axf +endif + +clean: + @echo " CLEAN" + $(Q)rm -rf *.zi + $(Q)rm -rf *.dump + $(Q)rm -rf *.bin + $(Q)rm -f *.axf + $(Q)rm -f *.o + $(Q)rm -f *.ar + $(Q)rm -f *.map + $(Q)rm -f *.scf + $(Q)rm -f $(LISTFILE) + $(Q)rm -f $(SECURE_LISTFILE) + +dump: + @echo " OBJDUMP" + fromelf --text -c bl.axf > bl.dump + fromelf --text -c bl_sec.axf > bl_sec.dump + +%.o: %.s + @echo " AS $<" + $(Q)$(AS) $(ASFLAGS) $< -o $@ + +%.o: %.c + @echo " CC $<" + $(Q)$(CC) $(CFLAGS) -c $< -o $@ + +bl.axf: $(OBJS) + $(Q)cat $(MAPFILE).template > $(MAPFILE) + $(Q)sed -i -e "s/HIBASE/${HIBASE}/g" $(MAPFILE) + @echo " LD $@" + $(Q)$(LD) $(LDFLAGS) --symdefs=bl_symdef.o $(OBJS) -o $@ > $(LISTFILE) + +ifeq ($(FM_BETA), FALSE) +wboot.axf: ve_reset_handler.o + @echo " LD $@" + $(Q)$(LD) --ro-base=0x0 $< -o $@ > $(LISTFILE) + +wboot.bin: wboot.axf + @echo " BIN $@" + $(Q)fromelf --bin $< --output $@ +else +SECURE_OBJS += ve_reset_handler.o +wboot.bin: +endif + +bl.ar: $(OBJS) + @echo " AR $@" + $(Q)$(AR) -r $@ $(OBJS) + +%.bin: %.axf + fromelf --bin $< --output $@ + +ve_reset_handler.o: ve_reset_handler.s + @echo " AS $<" + $(Q)$(AS) $(SECURE_ASFLAGS) $< -o $@ + +secure_resets.o: secure_resets.c + @echo " CC $<" + $(Q)$(CC) $(SECURE_CFLAGS) -c $< -o $@ + +monmode_vectors.o: monmode_vectors.s + @echo " AS $<" + $(Q)$(AS) $(SECURE_ASFLAGS) $< -o $@ + +flat_pagetable.o: flat_pagetable.s + @echo " AS $<" + $(Q)$(AS) $(SECURE_ASFLAGS) $< -o $@ + +secure_context.o: secure_context.c + @echo " CC $<" + $(Q)$(CC) $(SECURE_CFLAGS) -c $< -o $@ + +bl_sec.axf: $(SECURE_OBJS) + $(Q)cat $(SECURE_MAPFILE).template > $(SECURE_MAPFILE) + $(Q)sed -i -e "s/HIBASE/${HIBASE}/g" $(SECURE_MAPFILE) + $(Q)$(LD) $(SECURE_LDFLAGS) --symdefs=bl_sec_symdef.o $(SECURE_OBJS) -o $@ > $(SECURE_LISTFILE) + +bl_sec.ar: $(SECURE_OBJS) + $(Q)$(AR) -r $@ $(SECURE_OBJS) + + |