17e532c4bSJorge Ramirez-Ortiz# 2*a4ac07c7SChris Kay# Copyright (c) 2024-2025, Arm Limited and Contributors. All rights reserved. 37e532c4bSJorge Ramirez-Ortiz# Copyright (c) 2015-2018, Renesas Electronics Corporation. All rights reserved. 47e532c4bSJorge Ramirez-Ortiz# 57e532c4bSJorge Ramirez-Ortiz# SPDX-License-Identifier: BSD-3-Clause 67e532c4bSJorge Ramirez-Ortiz# 77e532c4bSJorge Ramirez-Ortiz 8cc277de8SChris Kaytoolchains := aarch64 9cc277de8SChris Kay 10f4dd18c2SChris Kayinclude ../../../make_helpers/build-rules.mk 117c4e1eeaSChris Kayinclude ../../../make_helpers/common.mk 12cc277de8SChris Kayinclude ../../../make_helpers/toolchain.mk 13cc277de8SChris Kay 147e532c4bSJorge Ramirez-Ortiz################################################### 157e532c4bSJorge Ramirez-Ortiz# makefile 167e532c4bSJorge Ramirez-Ortiz################################################### 177e532c4bSJorge Ramirez-Ortiz 187e532c4bSJorge Ramirez-Ortiz#output file name 197e532c4bSJorge Ramirez-OrtizFILE_NAME_SA0 = bootparam_sa0 207e532c4bSJorge Ramirez-OrtizFILE_NAME_SA6 = cert_header_sa6 217e532c4bSJorge Ramirez-Ortiz 227e532c4bSJorge Ramirez-OrtizOUTPUT_FILE_SA0 = $(FILE_NAME_SA0).elf 237e532c4bSJorge Ramirez-OrtizOUTPUT_FILE_SA6 = $(FILE_NAME_SA6).elf 247e532c4bSJorge Ramirez-Ortiz 257e532c4bSJorge Ramirez-Ortiz#object file name 267e532c4bSJorge Ramirez-OrtizOBJ_FILE_SA0 = sa0.o 277e532c4bSJorge Ramirez-OrtizOBJ_FILE_SA6 = sa6.o 287e532c4bSJorge Ramirez-Ortiz 297e532c4bSJorge Ramirez-Ortiz#linker script name 307e532c4bSJorge Ramirez-OrtizMEMORY_DEF_SA0 = sa0.ld.S 317e532c4bSJorge Ramirez-OrtizMEMORY_DEF_SA6 = sa6.ld.S 327e532c4bSJorge Ramirez-Ortiz 337e532c4bSJorge Ramirez-Ortiz################################################### 347e532c4bSJorge Ramirez-Ortiz# Convenience function for adding build definitions 357e532c4bSJorge Ramirez-Ortiz# $(eval $(call add_define,FOO)) will have: 367e532c4bSJorge Ramirez-Ortiz# -DFOO if $(FOO) is empty; -DFOO=$(FOO) otherwise 377e532c4bSJorge Ramirez-Ortizdefine add_define 387e532c4bSJorge Ramirez-OrtizDEFINES += -D$(1)$(if $(value $(1)),=$(value $(1)),) 397e532c4bSJorge Ramirez-Ortizendef 407e532c4bSJorge Ramirez-Ortiz 417e532c4bSJorge Ramirez-Ortiz# Process RCAR_SA0_SIZE flag 427e532c4bSJorge Ramirez-Ortizifndef RCAR_SA0_SIZE 437e532c4bSJorge Ramirez-OrtizRCAR_SA0_SIZE := 1 447e532c4bSJorge Ramirez-Ortizelse 457e532c4bSJorge Ramirez-Ortizifeq (${RCAR_SA0_SIZE},0) 467e532c4bSJorge Ramirez-OrtizRCAR_SA0_SIZE := 0 477e532c4bSJorge Ramirez-Ortizelse 487e532c4bSJorge Ramirez-OrtizRCAR_SA0_SIZE := 1 497e532c4bSJorge Ramirez-Ortizendif 507e532c4bSJorge Ramirez-Ortizendif 517e532c4bSJorge Ramirez-Ortiz$(eval $(call add_define,RCAR_SA0_SIZE)) 527e532c4bSJorge Ramirez-Ortiz 537e532c4bSJorge Ramirez-Ortiz# Process RCAR_SA6_TYPE flag 547e532c4bSJorge Ramirez-Ortizifndef RCAR_SA6_TYPE 557e532c4bSJorge Ramirez-OrtizRCAR_SA6_TYPE := 0 567e532c4bSJorge Ramirez-Ortizelse 577e532c4bSJorge Ramirez-Ortizifeq (${RCAR_SA6_TYPE},0) 587e532c4bSJorge Ramirez-OrtizRCAR_SA6_TYPE := 0 597e532c4bSJorge Ramirez-Ortizelse 607e532c4bSJorge Ramirez-OrtizRCAR_SA6_TYPE := 1 617e532c4bSJorge Ramirez-Ortizendif 627e532c4bSJorge Ramirez-Ortizendif 637e532c4bSJorge Ramirez-Ortiz$(eval $(call add_define,RCAR_SA6_TYPE)) 647e532c4bSJorge Ramirez-Ortiz 65bfbf5df4SMarek Vasut# Handle different VMA adjustment on D3 66bfbf5df4SMarek Vasutifeq (${RCAR_LSI},${RCAR_D3}) 67bfbf5df4SMarek VasutRCAR_VMA_ADJUST_ADDR := 0xE6320000 68bfbf5df4SMarek Vasutelse 69bfbf5df4SMarek VasutRCAR_VMA_ADJUST_ADDR := 0xE6312000 70bfbf5df4SMarek Vasutendif 71bfbf5df4SMarek Vasut$(eval $(call add_define,RCAR_VMA_ADJUST_ADDR)) 72bfbf5df4SMarek Vasut 73bfbf5df4SMarek Vasut 747e532c4bSJorge Ramirez-Ortiz################################################### 757e532c4bSJorge Ramirez-Ortiz 767e532c4bSJorge Ramirez-Ortiz#c compiler 777e532c4bSJorge Ramirez-OrtizCFLAGS += ${DEFINES} 787e532c4bSJorge Ramirez-OrtizCFLAGS += -I../../include/lib/stdlib 797e532c4bSJorge Ramirez-Ortiz 807e532c4bSJorge Ramirez-Ortiz#clean 817e532c4bSJorge Ramirez-OrtizCL = rm -f 827e532c4bSJorge Ramirez-Ortiz 837e532c4bSJorge Ramirez-Ortiz################################################### 847e532c4bSJorge Ramirez-Ortiz.SUFFIXES : .s .c .o 857e532c4bSJorge Ramirez-Ortiz 867e532c4bSJorge Ramirez-Ortiz################################################### 877e532c4bSJorge Ramirez-Ortiz# command 887e532c4bSJorge Ramirez-Ortiz 897e532c4bSJorge Ramirez-Ortiz.PHONY: all 90ea2c6521SChris Kay 91ea2c6521SChris Kayall: $(FILE_NAME_SA0).srec $(FILE_NAME_SA0).bin 92ea2c6521SChris Kayall: $(FILE_NAME_SA6).srec $(FILE_NAME_SA6).bin 93ea2c6521SChris Kay 947e532c4bSJorge Ramirez-Ortiz################################################### 957e532c4bSJorge Ramirez-Ortiz# Linker 967e532c4bSJorge Ramirez-Ortiz################################################### 977e532c4bSJorge Ramirez-Ortiz 98f4dd18c2SChris Kay$(FILE_NAME_SA0).srec: $(OUTPUT_FILE_SA0) | $$(@D)/ 99ffb77421SChris Kay $(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).srec 100ea2c6521SChris Kay 101f4dd18c2SChris Kay$(FILE_NAME_SA0).bin: $(OUTPUT_FILE_SA0) | $$(@D)/ 102ffb77421SChris Kay $(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).bin 1037e532c4bSJorge Ramirez-Ortiz 104f4dd18c2SChris Kay$(OUTPUT_FILE_SA0): $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0) | $$(@D)/ 10572f4b70eSMarek Vasut $(aarch64-ld) $(OBJ_FILE_SA0) -nostdlib -static -Wl,--build-id=none -T $(MEMORY_DEF_SA0) -o $(OUTPUT_FILE_SA0) -Wl,-Map $(FILE_NAME_SA0).map 1067e532c4bSJorge Ramirez-Ortiz 107f4dd18c2SChris Kay$(FILE_NAME_SA6).srec: $(OUTPUT_FILE_SA6) | $$(@D)/ 108ffb77421SChris Kay $(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).srec 109ea2c6521SChris Kay 110f4dd18c2SChris Kay$(FILE_NAME_SA6).bin: $(OUTPUT_FILE_SA6) | $$(@D)/ 111ffb77421SChris Kay $(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).bin 1127e532c4bSJorge Ramirez-Ortiz 113f4dd18c2SChris Kay$(OUTPUT_FILE_SA6): $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6) | $$(@D)/ 11472f4b70eSMarek Vasut $(aarch64-ld) $(OBJ_FILE_SA6) -nostdlib -static -Wl,--build-id=none -T $(MEMORY_DEF_SA6) -o $(OUTPUT_FILE_SA6) -Wl,-Map $(FILE_NAME_SA6).map 115ea2c6521SChris Kay 1167e532c4bSJorge Ramirez-Ortiz################################################### 1177e532c4bSJorge Ramirez-Ortiz# Compile 1187e532c4bSJorge Ramirez-Ortiz################################################### 1197e532c4bSJorge Ramirez-Ortiz 120*a4ac07c7SChris Kay$(OBJ_FILE_SA0) $(OBJ_FILE_SA6): %.o: %.c | $$(@D)/ 121ffb77421SChris Kay $(aarch64-cc) $(CPPFLAGS) $(CFLAGS) -c -o $@ $< 1227e532c4bSJorge Ramirez-Ortiz 1237e532c4bSJorge Ramirez-Ortiz.PHONY: clean 1247e532c4bSJorge Ramirez-Ortizclean: 1257e532c4bSJorge Ramirez-Ortiz $(CL) *.bin *.map *.srec *.elf *.o 126