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