1# 2# Addresses of things unless overridden 3# 4 5ifeq ($(strip ${CFG_UNCACHED}),1) 6 CFG_TEXT_START ?= 0xBFC00000 7 CFG_DATA_START ?= 0xA1F00000 8 CFG_ROM_START ?= 0xBFC00000 9else 10 CFG_TEXT_START ?= 0x9FC00000 11 CFG_DATA_START ?= 0x81F00000 12 CFG_ROM_START ?= 0xBFC00000 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 31 32# 33# Tools locations 34# 35TOOLPREFIX ?= sb1-elf- 36GCC ?= $(TOOLS)$(TOOLPREFIX)gcc 37GCPP ?= $(TOOLS)$(TOOLPREFIX)cpp 38GLD ?= $(TOOLS)$(TOOLPREFIX)ld 39GAR ?= $(TOOLS)$(TOOLPREFIX)ar 40OBJDUMP ?= $(TOOLS)$(TOOLPREFIX)objdump 41OBJCOPY ?= $(TOOLS)$(TOOLPREFIX)objcopy 42RANLIB ?= $(TOOLS)$(TOOLPREFIX)ranlib 43 44# 45# Check for 64-bit mode 46# 47 48ifeq ($(strip ${CFG_MLONG64}),1) 49 CFLAGS += -mlong64 -D__long64 50endif 51 52# 53# Determine parameters for the linker script, which is generated 54# using the C preprocessor. 55# 56# Supported combinations: 57# 58# CFG_RAMAPP CFG_UNCACHED CFG_RELOC Description 59# Yes YesOrNo MustBeNo CFE as a separate "application" 60# No YesOrNo Yes CFE relocates to RAM as firmware 61# No YesOrNo No CFE runs from flash as firmware 62# 63 64LDSCRIPT = ./cfe.lds 65LDFLAGS += -g --script $(LDSCRIPT) 66LDSCRIPT_TEMPLATE = ${ARCH_SRC}/cfe_ldscript.template 67 68ifeq ($(strip ${CFG_UNCACHED}),1) 69 GENLDFLAGS += -DCFG_RUNFROMKSEG0=0 70else 71 GENLDFLAGS += -DCFG_RUNFROMKSEG0=1 72endif 73 74ifeq ($(strip ${CFG_RAMAPP}),1) 75 GENLDFLAGS += -DCFG_RAMAPP=1 76 GENLDFLAGS += -DCFG_RUNFROMKSEG0=1 77else 78 ifeq ($(strip ${CFG_RELOC}),0) 79 ifeq ($(strip ${CFG_BOOTRAM}),1) 80 GENLDFLAGS += -DCFG_BOOTRAM=1 81 else 82 GENLDFLAGS += -DCFG_BOOTRAM=0 83 endif 84 else 85 CFLAGS += -membedded-pic -mlong-calls 86 GENLDFLAGS += -DCFG_EMBEDDED_PIC=1 87 LDFLAGS += --embedded-relocs 88 endif 89endif 90 91# 92# Add GENLDFLAGS to CFLAGS (we need this stuff in the C code as well) 93# 94 95CFLAGS += ${GENLDFLAGS} 96 97# 98# Determine target endianness 99# 100 101ifeq ($(strip ${CFG_LITTLE}),1) 102 ENDIAN = -EL 103 CFLAGS += -EL 104 LDFLAGS += -EL 105else 106 ENDIAN = -EB 107 CFLAGS += -EB 108 LDFLAGS += -EB 109endif 110 111# 112# Add the text/data/ROM addresses to the GENLDFLAGS so they 113# will make it into the linker script. 114# 115 116GENLDFLAGS += -DCFE_ROM_START=${CFG_ROM_START} 117GENLDFLAGS += -DCFE_TEXT_START=${CFG_TEXT_START} 118GENLDFLAGS += -DCFE_DATA_START=${CFG_DATA_START} 119GENLDFLAGS += -DCFG_XIP=${CFG_XIP} 120