#
#
# This file is subject to the terms and conditions of the GNU General Public
# License.  See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 2003 ARC International
#


SYSTEM	=$(srctree)/vmlinux

#obj-y += initrd.o

MKIMAGE =mkimage
MKIMAGEFLAGS =-A arc -O linux -C none  -T kernel -a 0x80000000 -e 0x80002000 -n "ARC700 Linux kernel" -d Image
OBJCOPYFLAGS =-O binary -R .note -R .note.gnu.build-id -R .comment -S vmlinux

# From Beta's doc:
# ZTEXTADDR - Address where zImage is located by the bootloader
# ZRELADDR - Address where the zImage will be relocated
# PARAMS_PHYS - Address where tagged parameters are to be found
# INITRD_PHYS - Physical Address of the Ramdisk
# ZBSSADDR - Address where the real kernel should execute from

#not very sure as to what to fill here...

ZRELADDR	 = 0x00000000 # where to relocate it... hmmm.... 
ZTEXTADDR	 = 0x00000000 # we'll put the kernel image here for now...
#endif


#
# If you don't define ZRELADDR above,
# then it defaults to ZTEXTADDR
#
ifeq ($(ZRELADDR),)
ZRELADDR	= $(ZTEXTADDR)
endif

export	SYSTEM ZTEXTADDR ZBSSADDR ZRELADDR 

targets := uImage 

#arch/arc/boot/bootpImage: $(SYSTEM) 
#	cp -f $(SYSTEM) $@

$(obj)/Image: vmlinux
	$(OBJCOPY) $(OBJCOPYFLAGS) $@

Image: bootpImage
	$(OBJCOPY) $(OBJCOPYFLAGS) $@			

uImage:	Image 
	$(MKIMAGE) $(MKIMAGEFLAGS) $@
clean:
	$(RM) Image zImage bootpImage initrd.c jffsimg.c
	#@$(MAKE) -C compressed clean


dep:
