1*1bc15386SPeter Tyser# 2*1bc15386SPeter Tyser# (C) Copyright 2000-2006 3*1bc15386SPeter Tyser# Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4*1bc15386SPeter Tyser# 5*1bc15386SPeter Tyser# See file CREDITS for list of people who contributed to this 6*1bc15386SPeter Tyser# project. 7*1bc15386SPeter Tyser# 8*1bc15386SPeter Tyser# This program is free software; you can redistribute it and/or 9*1bc15386SPeter Tyser# modify it under the terms of the GNU General Public License as 10*1bc15386SPeter Tyser# published by the Free Software Foundation; either version 2 of 11*1bc15386SPeter Tyser# the License, or (at your option) any later version. 12*1bc15386SPeter Tyser# 13*1bc15386SPeter Tyser# This program is distributed in the hope that it will be useful, 14*1bc15386SPeter Tyser# but WITHOUT ANY WARRANTY; without even the implied warranty of 15*1bc15386SPeter Tyser# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*1bc15386SPeter Tyser# GNU General Public License for more details. 17*1bc15386SPeter Tyser# 18*1bc15386SPeter Tyser# You should have received a copy of the GNU General Public License 19*1bc15386SPeter Tyser# along with this program; if not, write to the Free Software 20*1bc15386SPeter Tyser# Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21*1bc15386SPeter Tyser# MA 02111-1307 USA 22*1bc15386SPeter Tyser# 23*1bc15386SPeter Tyser 24*1bc15386SPeter Tyserifeq ($(ARCH),ppc) 25*1bc15386SPeter TyserLOAD_ADDR = 0x40000 26*1bc15386SPeter Tyserendif 27*1bc15386SPeter Tyser 28*1bc15386SPeter Tyserifeq ($(ARCH),i386) 29*1bc15386SPeter TyserLOAD_ADDR = 0x40000 30*1bc15386SPeter Tyserendif 31*1bc15386SPeter Tyser 32*1bc15386SPeter Tyserifeq ($(ARCH),arm) 33*1bc15386SPeter Tyserifeq ($(BOARD),omap2420h4) 34*1bc15386SPeter TyserLOAD_ADDR = 0x80300000 35*1bc15386SPeter Tyserelse 36*1bc15386SPeter Tyserifeq ($(CPU),omap3) 37*1bc15386SPeter TyserLOAD_ADDR = 0x80300000 38*1bc15386SPeter Tyserelse 39*1bc15386SPeter TyserLOAD_ADDR = 0xc100000 40*1bc15386SPeter Tyserendif 41*1bc15386SPeter Tyserendif 42*1bc15386SPeter Tyserendif 43*1bc15386SPeter Tyser 44*1bc15386SPeter Tyserifeq ($(ARCH),mips) 45*1bc15386SPeter TyserLOAD_ADDR = 0x80200000 -T mips.lds 46*1bc15386SPeter Tyserendif 47*1bc15386SPeter Tyser 48*1bc15386SPeter Tyserifeq ($(ARCH),nios) 49*1bc15386SPeter TyserLOAD_ADDR = 0x00800000 -L $(gcclibdir)/m32 -T nios.lds 50*1bc15386SPeter Tyserendif 51*1bc15386SPeter Tyser 52*1bc15386SPeter Tyserifeq ($(ARCH),nios2) 53*1bc15386SPeter TyserLOAD_ADDR = 0x02000000 -L $(gcclibdir) -T nios2.lds 54*1bc15386SPeter Tyserendif 55*1bc15386SPeter Tyser 56*1bc15386SPeter Tyserifeq ($(ARCH),m68k) 57*1bc15386SPeter TyserLOAD_ADDR = 0x20000 -L $(clibdir) 58*1bc15386SPeter Tyserendif 59*1bc15386SPeter Tyser 60*1bc15386SPeter Tyserifeq ($(ARCH),microblaze) 61*1bc15386SPeter TyserLOAD_ADDR = 0x80F00000 62*1bc15386SPeter Tyserendif 63*1bc15386SPeter Tyser 64*1bc15386SPeter Tyserifeq ($(ARCH),blackfin) 65*1bc15386SPeter TyserLOAD_ADDR = 0x1000 66*1bc15386SPeter Tyserendif 67*1bc15386SPeter Tyser 68*1bc15386SPeter Tyserifeq ($(ARCH),avr32) 69*1bc15386SPeter TyserLOAD_ADDR = 0x00000000 70*1bc15386SPeter Tyserendif 71*1bc15386SPeter Tyser 72*1bc15386SPeter Tyserifeq ($(ARCH),sh) 73*1bc15386SPeter TyserLOAD_ADDR = 0x8C000000 74*1bc15386SPeter Tyserifeq ($(CPU),sh2) 75*1bc15386SPeter TyserBIG_ENDIAN=y 76*1bc15386SPeter Tyserendif 77*1bc15386SPeter Tyserendif 78*1bc15386SPeter Tyser 79*1bc15386SPeter Tyserifeq ($(ARCH),sparc) 80*1bc15386SPeter TyserLOAD_ADDR = 0x00000000 -L $(gcclibdir) -T sparc.lds 81*1bc15386SPeter Tyserendif 82*1bc15386SPeter Tyser 83*1bc15386SPeter Tyserinclude $(TOPDIR)/config.mk 84*1bc15386SPeter Tyser 85*1bc15386SPeter TyserELF = hello_world 86*1bc15386SPeter TyserSREC = hello_world.srec 87*1bc15386SPeter TyserBIN = hello_world.bin 88*1bc15386SPeter Tyser 89*1bc15386SPeter Tyserifeq ($(CPU),mpc8xx) 90*1bc15386SPeter TyserELF += test_burst 91*1bc15386SPeter TyserSREC += test_burst.srec 92*1bc15386SPeter TyserBIN += test_burst.bin 93*1bc15386SPeter Tyserendif 94*1bc15386SPeter Tyser 95*1bc15386SPeter Tyserifeq ($(ARCH),i386) 96*1bc15386SPeter TyserELF += 82559_eeprom 97*1bc15386SPeter TyserSREC += 82559_eeprom.srec 98*1bc15386SPeter TyserBIN += 82559_eeprom.bin 99*1bc15386SPeter Tyserendif 100*1bc15386SPeter Tyser 101*1bc15386SPeter Tyserifeq ($(ARCH),ppc) 102*1bc15386SPeter TyserELF += sched 103*1bc15386SPeter TyserSREC += sched.srec 104*1bc15386SPeter TyserBIN += sched.bin 105*1bc15386SPeter Tyserendif 106*1bc15386SPeter Tyser 107*1bc15386SPeter Tyserifeq ($(ARCH),blackfin) 108*1bc15386SPeter TyserBFIN_BIN = smc91111_eeprom smc911x_eeprom 109*1bc15386SPeter TyserELF += $(BFIN_BIN) 110*1bc15386SPeter TyserSREC += $(addsuffix .srec,$(BFIN_BIN)) 111*1bc15386SPeter TyserBIN += $(addsuffix .bin,$(BFIN_BIN)) 112*1bc15386SPeter Tyserendif 113*1bc15386SPeter Tyser 114*1bc15386SPeter Tyser# The following example is pretty 8xx specific... 115*1bc15386SPeter Tyserifeq ($(CPU),mpc8xx) 116*1bc15386SPeter TyserELF += timer 117*1bc15386SPeter TyserSREC += timer.srec 118*1bc15386SPeter TyserBIN += timer.bin 119*1bc15386SPeter Tyserendif 120*1bc15386SPeter Tyser 121*1bc15386SPeter Tyser# The following example is 8260 specific... 122*1bc15386SPeter Tyserifeq ($(CPU),mpc8260) 123*1bc15386SPeter TyserELF += mem_to_mem_idma2intr 124*1bc15386SPeter TyserSREC += mem_to_mem_idma2intr.srec 125*1bc15386SPeter TyserBIN += mem_to_mem_idma2intr.bin 126*1bc15386SPeter Tyserendif 127*1bc15386SPeter Tyser 128*1bc15386SPeter Tyser# Demo for 52xx IRQs 129*1bc15386SPeter Tyserifeq ($(CPU),mpc5xxx) 130*1bc15386SPeter TyserELF += interrupt 131*1bc15386SPeter TyserSREC += interrupt.srec 132*1bc15386SPeter TyserBIN += interrupt.bin 133*1bc15386SPeter Tyserendif 134*1bc15386SPeter Tyser 135*1bc15386SPeter Tyser# Utility for resetting i82559 EEPROM 136*1bc15386SPeter Tyserifeq ($(BOARD),oxc) 137*1bc15386SPeter TyserELF += eepro100_eeprom 138*1bc15386SPeter TyserSREC += eepro100_eeprom.srec 139*1bc15386SPeter TyserBIN += eepro100_eeprom.bin 140*1bc15386SPeter Tyserendif 141*1bc15386SPeter Tyser 142*1bc15386SPeter Tyserifeq ($(BIG_ENDIAN),y) 143*1bc15386SPeter TyserEX_LDFLAGS += -EB 144*1bc15386SPeter Tyserendif 145*1bc15386SPeter Tyser 146*1bc15386SPeter TyserCOBJS := $(SREC:.srec=.o) 147*1bc15386SPeter Tyser 148*1bc15386SPeter TyserLIB = $(obj)libstubs.a 149*1bc15386SPeter TyserLIBAOBJS= 150*1bc15386SPeter Tyserifeq ($(ARCH),ppc) 151*1bc15386SPeter TyserLIBAOBJS+= $(ARCH)_longjmp.o $(ARCH)_setjmp.o 152*1bc15386SPeter Tyserendif 153*1bc15386SPeter Tyserifeq ($(CPU),mpc8xx) 154*1bc15386SPeter TyserLIBAOBJS+= test_burst_lib.o 155*1bc15386SPeter Tyserendif 156*1bc15386SPeter TyserLIBCOBJS= stubs.o 157*1bc15386SPeter Tyser 158*1bc15386SPeter TyserLIBOBJS = $(addprefix $(obj),$(LIBAOBJS) $(LIBCOBJS)) 159*1bc15386SPeter Tyser 160*1bc15386SPeter TyserSRCS := $(COBJS:.o=.c) $(LIBCOBJS:.o=.c) $(if $(LIBAOBJS),$(LIBAOBJS:.o=.S)) 161*1bc15386SPeter TyserOBJS := $(addprefix $(obj),$(COBJS)) 162*1bc15386SPeter TyserELF := $(addprefix $(obj),$(ELF)) 163*1bc15386SPeter TyserBIN := $(addprefix $(obj),$(BIN)) 164*1bc15386SPeter TyserSREC := $(addprefix $(obj),$(SREC)) 165*1bc15386SPeter Tyser 166*1bc15386SPeter Tysergcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`) 167*1bc15386SPeter Tyserclibdir := $(shell dirname `$(CC) $(CFLAGS) -print-file-name=libc.a`) 168*1bc15386SPeter Tyser 169*1bc15386SPeter TyserCPPFLAGS += -I.. 170*1bc15386SPeter Tyser 171*1bc15386SPeter Tyserall: $(obj).depend $(OBJS) $(LIB) $(SREC) $(BIN) $(ELF) 172*1bc15386SPeter Tyser 173*1bc15386SPeter Tyser######################################################################### 174*1bc15386SPeter Tyser$(LIB): $(obj).depend $(LIBOBJS) 175*1bc15386SPeter Tyser $(AR) $(ARFLAGS) $@ $(LIBOBJS) 176*1bc15386SPeter Tyser 177*1bc15386SPeter Tyser$(ELF): 178*1bc15386SPeter Tyser$(obj)%: $(obj)%.o $(LIB) 179*1bc15386SPeter Tyser $(LD) -g $(EX_LDFLAGS) -Ttext $(LOAD_ADDR) \ 180*1bc15386SPeter Tyser -o $@ -e $(SYM_PREFIX)$(notdir $(<:.o=)) $< $(LIB) \ 181*1bc15386SPeter Tyser -L$(gcclibdir) -lgcc 182*1bc15386SPeter Tyser 183*1bc15386SPeter Tyser$(SREC): 184*1bc15386SPeter Tyser$(obj)%.srec: $(obj)% 185*1bc15386SPeter Tyser $(OBJCOPY) -O srec $< $@ 2>/dev/null 186*1bc15386SPeter Tyser 187*1bc15386SPeter Tyser$(BIN): 188*1bc15386SPeter Tyser$(obj)%.bin: $(obj)% 189*1bc15386SPeter Tyser $(OBJCOPY) -O binary $< $@ 2>/dev/null 190*1bc15386SPeter Tyser 191*1bc15386SPeter Tyser######################################################################### 192*1bc15386SPeter Tyser 193*1bc15386SPeter Tyser# defines $(obj).depend target 194*1bc15386SPeter Tyserinclude $(SRCTREE)/rules.mk 195*1bc15386SPeter Tyser 196*1bc15386SPeter Tysersinclude $(obj).depend 197*1bc15386SPeter Tyser 198*1bc15386SPeter Tyser######################################################################### 199