mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-23 12:58:23 +00:00
cac9e3e2cb
FLASH_START is supposed to point at the memory area where NOR flash are mapped. We currently have an incorrect FLASH_START copied from ar71xx back then and the loader doesn't work under OKLI mode. On ramips, mt7621 has it's flash mapped to 0x1fc00000 and other SoCs uses 0x1c000000. This commit makes FLASH_START a configurable value to handle both cases. Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
115 lines
2.8 KiB
Makefile
115 lines
2.8 KiB
Makefile
#
|
|
# Makefile for the LZMA compressed kernel loader for
|
|
# Atheros AR7XXX/AR9XXX based boards
|
|
#
|
|
# Copyright (C) 2011 Gabor Juhos <juhosg@openwrt.org>
|
|
#
|
|
# Some parts of this file was based on the OpenWrt specific lzma-loader
|
|
# for the BCM47xx and ADM5120 based boards:
|
|
# Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org)
|
|
# Copyright (C) 2005 Mineharu Takahara <mtakahar@yahoo.com>
|
|
# Copyright (C) 2005 by Oleg I. Vdovikin <oleg@cs.msu.su>
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License version 2 as published
|
|
# by the Free Software Foundation.
|
|
#
|
|
|
|
LOADADDR :=
|
|
LZMA_TEXT_START := 0x80a00000
|
|
LOADER_DATA :=
|
|
BOARD :=
|
|
FLASH_START :=
|
|
FLASH_OFFS :=
|
|
FLASH_MAX :=
|
|
PLATFORM :=
|
|
CACHE_FLAGS :=
|
|
|
|
CC := $(CROSS_COMPILE)gcc
|
|
LD := $(CROSS_COMPILE)ld
|
|
OBJCOPY := $(CROSS_COMPILE)objcopy
|
|
OBJDUMP := $(CROSS_COMPILE)objdump
|
|
|
|
|
|
include $(PLATFORM).mk
|
|
|
|
BIN_FLAGS := -O binary -R .reginfo -R .note -R .comment -R .mdebug \
|
|
-R .MIPS.abiflags -S
|
|
|
|
CFLAGS = -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \
|
|
-fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 \
|
|
-mno-abicalls -fno-pic -ffunction-sections -pipe -mlong-calls \
|
|
-fno-common -ffreestanding -fhonour-copts -nostartfiles \
|
|
-mabi=32 -march=mips32r2 \
|
|
-Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap
|
|
CFLAGS += -D_LZMA_PROB32
|
|
CFLAGS += -flto
|
|
CFLAGS += $(CACHE_FLAGS)
|
|
|
|
ASFLAGS = $(CFLAGS) -D__ASSEMBLY__
|
|
|
|
LDFLAGS = -static -Wl,--gc-sections -Wl,-no-warn-mismatch
|
|
LDFLAGS += -Wl,-e,startup -T loader.lds -Wl,-Ttext,$(LZMA_TEXT_START)
|
|
LDFLAGS += -flto -fwhole-program -Wl,-z,max-page-size=4096
|
|
|
|
O_FORMAT = $(shell $(OBJDUMP) -i | head -2 | grep elf32)
|
|
|
|
OBJECTS := head.o loader.o cache.o board-$(PLATFORM).o printf.o LzmaDecode.o
|
|
|
|
ifneq ($(strip $(LOADER_DATA)),)
|
|
OBJECTS += data.o
|
|
CFLAGS += -DLZMA_WRAPPER=1 -DLOADADDR=$(LOADADDR)
|
|
endif
|
|
|
|
ifneq ($(strip $(KERNEL_CMDLINE)),)
|
|
CFLAGS += -DCONFIG_KERNEL_CMDLINE='"$(KERNEL_CMDLINE)"'
|
|
endif
|
|
|
|
ifneq ($(strip $(FLASH_START)),)
|
|
CFLAGS += -DCONFIG_FLASH_START=$(FLASH_START)
|
|
endif
|
|
|
|
ifneq ($(strip $(FLASH_OFFS)),)
|
|
CFLAGS += -DCONFIG_FLASH_OFFS=$(FLASH_OFFS)
|
|
endif
|
|
|
|
ifneq ($(strip $(FLASH_MAX)),)
|
|
CFLAGS += -DCONFIG_FLASH_MAX=$(FLASH_MAX)
|
|
endif
|
|
|
|
all: loader.elf
|
|
|
|
# Don't build dependencies, this may die if $(CC) isn't gcc
|
|
dep:
|
|
|
|
install:
|
|
|
|
%.o : %.c
|
|
$(CC) $(CFLAGS) -c -o $@ $<
|
|
|
|
%.o : %.S
|
|
$(CC) $(ASFLAGS) -c -o $@ $<
|
|
|
|
data.o: $(LOADER_DATA)
|
|
$(LD) -r -b binary --oformat $(O_FORMAT) -T lzma-data.lds -o $@ $<
|
|
|
|
loader: $(OBJECTS)
|
|
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJECTS)
|
|
|
|
loader.bin: loader
|
|
$(OBJCOPY) $(BIN_FLAGS) $< $@
|
|
|
|
loader2.o: loader.bin
|
|
$(LD) -r -b binary --oformat $(O_FORMAT) -o $@ $<
|
|
|
|
loader.elf: loader2.o
|
|
$(LD) -e startup -T loader2.lds -Ttext $(LOADADDR) -z max-page-size=4096 -o $@ $<
|
|
|
|
mrproper: clean
|
|
|
|
clean:
|
|
rm -f loader *.elf *.bin *.o
|
|
|
|
|
|
|