1# 2# Addresses of things unless overridden 3# 4 5ifeq ($(strip ${CFG_UNCACHED}),1) 6 CFG_TEXT_START ?= 0xFFF00000 7 CFG_DATA_START ?= 0x00010000 8 CFG_ROM_START ?= 0xFFF00000 9else 10 CFG_TEXT_START ?= 0xFFF00000 11 CFG_DATA_START ?= 0x00010000 12 CFG_ROM_START ?= 0xFFF00000 13endif 14 15# 16# BOOTRAM mode (runs from ROM vector assuming ROM is writable) 17# implies no relocation. 18# 19 20ifeq ($(strip ${CFG_BOOTRAM}),1) 21 CFG_RELOC = 0 22endif 23 24 25# 26# Basic compiler options and preprocessor flags 27# 28 29CFLAGS += -g -c -ffreestanding 30CFLAGS += -O2 -Wall -Werror -Wstrict-prototypes -Wmissing-prototypes 31CFLAGS += -fomit-frame-pointer -meabi 32 33# 34# Handle relocation options 35# 36 37ifeq ($(strip ${CFG_RELOC}),1) 38 CFLAGS += -mrelocatable -DCFG_RELOC=1 39 GENLDFLAGS += -DCFG_RELOC=1 40 LDFLAGS += -Bstatic 41endif 42 43# 44# Tools locations 45# 46TOOLPREFIX ?= ppc-elf- 47GCC ?= $(TOOLS)$(TOOLPREFIX)gcc 48GCPP ?= $(TOOLS)$(TOOLPREFIX)cpp 49GLD ?= $(TOOLS)$(TOOLPREFIX)ld 50GAR ?= $(TOOLS)$(TOOLPREFIX)ar 51OBJDUMP ?= $(TOOLS)$(TOOLPREFIX)objdump 52OBJCOPY ?= $(TOOLS)$(TOOLPREFIX)objcopy 53RANLIB ?= $(TOOLS)$(TOOLPREFIX)ranlib 54 55LIBGCC = $(shell $(GCC) -print-libgcc-file-name) 56 57# 58# Check for 64-bit mode 59# 60 61ifeq ($(strip ${CFG_MLONG64}),1) 62 CFLAGS += -mlong64 -D__long64 63endif 64 65# 66# Determine parameters for the linker script, which is generated 67# using the C preprocessor. 68# 69# Supported combinations: 70# 71# CFG_RAMAPP CFG_UNCACHED CFG_RELOC Description 72# Yes YesOrNo MustBeNo CFE as a separate "application" 73# No YesOrNo Yes CFE relocates to RAM as firmware 74# No YesOrNo No CFE runs from flash as firmware 75# 76 77CFE_LDSCRIPT = ./cfe.lds 78ZIPSTART_LDSCRIPT = ./zipstart.lds 79ZIPSTART_LDSCRIPT_TEMPLATE = ${ARCH_SRC}/zipstart_ldscript.template 80 81CFE_LDFLAGS += -g --script $(CFE_LDSCRIPT) 82CFE_LDSCRIPT_TEMPLATE = ${ARCH_SRC}/cfe_ldscript.template 83 84ifeq ($(strip ${CFG_UNCACHED}),1) 85 GENLDFLAGS += -DCFG_UNCACHED=1 86else 87 GENLDFLAGS += -DCFG_UNCACHED=0 88endif 89 90ifeq ($(strip ${CFG_RAMAPP}),1) 91 GENLDFLAGS += -DCFG_RAMAPP=1 92 GENLDFLAGS += -DCFG_UNCACHED=0 93endif 94 95# 96# Add GENLDFLAGS to CFLAGS (we need this stuff in the C code as well) 97# 98 99CFLAGS += ${GENLDFLAGS} 100 101# 102# Determine target endianness 103# 104 105# ifeq ($(strip ${CFG_LITTLE}),1) 106# ENDIAN = -EL 107# CFLAGS += -EL 108# LDFLAGS += -EL 109# else 110# ENDIAN = -EB 111# CFLAGS += -EB 112# LDFLAGS += -EB 113# endif 114 115# 116# Add the text/data/ROM addresses to the GENLDFLAGS so they 117# will make it into the linker script. 118# 119 120GENLDFLAGS += -DCFE_ROM_START=${CFG_ROM_START} 121GENLDFLAGS += -DCFE_TEXT_START=${CFG_TEXT_START} 122GENLDFLAGS += -DCFE_DATA_START=${CFG_DATA_START} 123 124