70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| 
 | |
| CROSS_COMPILE = arm-none-eabi-
 | |
| 
 | |
| # Use our cross-compile prefix to set up our basic cross compile environment.
 | |
| CC      = $(CROSS_COMPILE)gcc
 | |
| LD      = $(CROSS_COMPILE)ld
 | |
| OBJCOPY = $(CROSS_COMPILE)objcopy
 | |
| 
 | |
| CFLAGS = \
 | |
| 	-mtune=arm7tdmi \
 | |
| 	-mlittle-endian \
 | |
| 	-fno-stack-protector \
 | |
| 	-fno-common \
 | |
| 	-fno-builtin \
 | |
| 	-ffreestanding \
 | |
| 	-std=gnu99 \
 | |
| 	-Werror \
 | |
| 	-Wall \
 | |
| 	-Wno-error=unused-function \
 | |
| 	-fomit-frame-pointer \
 | |
| 	-g \
 | |
| 	-Os \
 | |
| 
 | |
| LDFLAGS =
 | |
| 
 | |
| all: intermezzo.bin
 | |
| 
 | |
| # The new address of the Intermezzo after copy
 | |
| INTERMEZZO_RELOCATED_ADDRESS := 0x4000F000
 | |
| 
 | |
| # The address to which Intermezzo is to be loaded by the payload launcher.
 | |
| INTERMEZZO_ADDRESS := 0x40010000
 | |
| 
 | |
| # The address we want the final payload to be located at.
 | |
| RELOCATION_TARGET  := 0x40010000
 | |
| 
 | |
| # The addrss and length of the data loaded by f-g.
 | |
| PAYLOAD_START_ADDR  := 0x40010E40
 | |
| STACK_SPRAY_START   := 0x40014E40
 | |
| STACK_SPRAY_END     := 0x40017000
 | |
| BEFORE_SPRAY_LENGTH := $(shell echo $$(( $(STACK_SPRAY_START) - $(PAYLOAD_START_ADDR) )))
 | |
| AFTER_SPRAY_LENGTH  := 0x30000
 | |
| 
 | |
| ENTRY_POINT_ADDRESS := 0x40010000
 | |
| 
 | |
| # Provide the definitions used in the intermezzo stub.
 | |
| DEFINES := \
 | |
| 	-DINTERMEZZO_RELOCATED_ADDRESS=$(INTERMEZZO_RELOCATED_ADDRESS) \
 | |
| 	-DRELOCATION_TARGET=$(RELOCATION_TARGET) \
 | |
| 	-DPAYLOAD_START_ADDR=$(PAYLOAD_START_ADDR) \
 | |
| 	-DSTACK_SPRAY_START=$(STACK_SPRAY_START) \
 | |
| 	-DSTACK_SPRAY_END=$(STACK_SPRAY_END) \
 | |
| 	-DBEFORE_SPRAY_LENGTH=$(BEFORE_SPRAY_LENGTH) \
 | |
| 	-DAFTER_SPRAY_LENGTH=$(AFTER_SPRAY_LENGTH) \
 | |
| 	-DENTRY_POINT_ADDRESS=$(ENTRY_POINT_ADDRESS)
 | |
| 
 | |
| intermezzo.elf: intermezzo.o
 | |
| 	$(LD) -T intermezzo.lds --defsym LOAD_ADDR=$(INTERMEZZO_ADDRESS) $(LDFLAGS) $^ -o $@
 | |
| 
 | |
| intermezzo.o: intermezzo.S
 | |
| 	$(CC) $(CFLAGS32) $(DEFINES) $< -c -o $@
 | |
| 
 | |
| %.bin: %.elf
 | |
| 	$(OBJCOPY) -v -O binary $< $@
 | |
| 
 | |
| clean:
 | |
| 	rm -f *.o *.elf *.bin
 | |
| 
 | |
| .PHONY: all clean
 | 
