183d290c5STom Rini# SPDX-License-Identifier: GPL-2.0+ 2fea25720SGraeme Russ# 3fea25720SGraeme Russ# (C) Copyright 2000-2002 4fea25720SGraeme Russ# Wolfgang Denk, DENX Software Engineering, wd@denx.de. 5fea25720SGraeme Russ 6fea25720SGraeme RussCONFIG_STANDALONE_LOAD_ADDR ?= 0x40000 7fea25720SGraeme Russ 8fea25720SGraeme RussPLATFORM_CPPFLAGS += -fomit-frame-pointer 9f694183bSMasahiro YamadaPF_CPPFLAGS_X86 := $(call cc-option, -fno-toplevel-reorder, \ 109a95f51fSBin Meng $(call cc-option, -fno-unit-at-a-time)) 113f1c046cSBen Stoltz 12cca4e4aeSWolfgang DenkPLATFORM_CPPFLAGS += $(PF_CPPFLAGS_X86) 13fea25720SGraeme RussPLATFORM_CPPFLAGS += -fno-dwarf2-cfi-asm 143a03703aSSimon Glass 153a03703aSSimon Glassifdef CONFIG_SPL_BUILD 163a03703aSSimon GlassIS_32BIT := y 173a03703aSSimon Glasselse 183a03703aSSimon Glassifndef CONFIG_X86_64 193a03703aSSimon GlassIS_32BIT := y 203a03703aSSimon Glassendif 213a03703aSSimon Glassendif 223a03703aSSimon Glass 233a03703aSSimon Glassifeq ($(IS_32BIT),y) 24dbb7234bSVasili GalkaPLATFORM_CPPFLAGS += -march=i386 -m32 253a03703aSSimon Glasselse 26a139cc18SBin MengPLATFORM_CPPFLAGS += $(if $(CONFIG_SPL_BUILD),,-fpic) -fno-common -march=core2 -m64 27dd4611deSBin MengPLATFORM_CPPFLAGS += -mno-mmx -mno-sse 283a03703aSSimon Glassendif 29fea25720SGraeme Russ 301acbd0eaSAlexander GrafPLATFORM_RELFLAGS += -fdata-sections -ffunction-sections -fvisibility=hidden 31fea25720SGraeme Russ 323a03703aSSimon GlassPLATFORM_LDFLAGS += -Bsymbolic -Bsymbolic-functions 333a03703aSSimon GlassPLATFORM_LDFLAGS += -m $(if $(IS_32BIT),elf_i386,elf_x86_64) 34fea25720SGraeme Russ 35476476e7SSimon Glass# This is used in the top-level Makefile which does not include 36476476e7SSimon Glass# PLATFORM_LDFLAGS 37972ffcd7SBin MengLDFLAGS_EFI_PAYLOAD := -Bsymbolic -Bsymbolic-functions -shared --no-undefined -s 38476476e7SSimon Glass 393f1c046cSBen StoltzOBJCOPYFLAGS_EFI := -j .text -j .sdata -j .data -j .dynamic -j .dynsym \ 403f1c046cSBen Stoltz -j .rel -j .rela -j .reloc 413f1c046cSBen Stoltz 423a03703aSSimon Glassifeq ($(IS_32BIT),y) 433f1c046cSBen StoltzCFLAGS_NON_EFI := -mregparm=3 443a03703aSSimon Glassendif 453f1c046cSBen StoltzCFLAGS_EFI := -fpic -fshort-wchar 463f1c046cSBen Stoltz 4796a8d409SSimon Glassifeq ($(CONFIG_EFI_STUB_64BIT),) 4896a8d409SSimon GlassCFLAGS_EFI += $(call cc-option, -mno-red-zone) 493f1c046cSBen StoltzEFIARCH = ia32 50476476e7SSimon GlassEFIPAYLOAD_BFDTARGET = elf32-i386 5196a8d409SSimon Glasselse 5296a8d409SSimon GlassEFIARCH = x86_64 5396a8d409SSimon GlassEFIPAYLOAD_BFDTARGET = elf64-x86-64 5496a8d409SSimon Glassendif 55476476e7SSimon Glass 56476476e7SSimon GlassEFIPAYLOAD_BFDARCH = i386 573f1c046cSBen Stoltz 58d36badfdSSimon GlassLDSCRIPT_EFI := $(srctree)/arch/x86/lib/elf_$(EFIARCH)_efi.lds 592dcd4e9eSSimon GlassEFISTUB := crt0_$(EFIARCH)_efi.o reloc_$(EFIARCH)_efi.o 603f1c046cSBen StoltzOBJCOPYFLAGS_EFI += --target=efi-app-$(EFIARCH) 613f1c046cSBen Stoltz 6296a8d409SSimon GlassCPPFLAGS_REMOVE_crt0-efi-$(EFIARCH).o += $(CFLAGS_NON_EFI) 6396a8d409SSimon GlassCPPFLAGS_crt0-efi-$(EFIARCH).o += $(CFLAGS_EFI) 6496a8d409SSimon Glass 653f1c046cSBen Stoltzifeq ($(CONFIG_EFI_APP),y) 663f1c046cSBen Stoltz 673f1c046cSBen StoltzPLATFORM_CPPFLAGS += $(CFLAGS_EFI) 68*c54ed3efSBin MengLDFLAGS_FINAL += -znocombreloc -shared -s 693f1c046cSBen StoltzLDSCRIPT := $(LDSCRIPT_EFI) 703f1c046cSBen Stoltz 713f1c046cSBen Stoltzelse 723f1c046cSBen Stoltz 733f1c046cSBen StoltzPLATFORM_CPPFLAGS += $(CFLAGS_NON_EFI) 743f1c046cSBen StoltzPLATFORM_LDFLAGS += --emit-relocs 753a03703aSSimon GlassLDFLAGS_FINAL += --gc-sections $(if $(CONFIG_SPL_BUILD),,-pie) 763f1c046cSBen Stoltz 773f1c046cSBen Stoltzendif 785bd828b5SSimon Glass 793a03703aSSimon Glassifdef CONFIG_X86_64 803a03703aSSimon Glassifndef CONFIG_SPL_BUILD 813a03703aSSimon GlassPLATFORM_CPPFLAGS += -D__x86_64__ 823a03703aSSimon Glasselse 833a03703aSSimon GlassPLATFORM_CPPFLAGS += -D__I386__ 843a03703aSSimon Glassendif 853a03703aSSimon Glasselse 863a03703aSSimon GlassPLATFORM_CPPFLAGS += -D__I386__ 873a03703aSSimon Glassendif 883a03703aSSimon Glass 89508d8567SHeinrich Schuchardtifdef CONFIG_EFI_STUB 905bd828b5SSimon Glass 91508d8567SHeinrich Schuchardtifdef CONFIG_EFI_STUB_64BIT 925bd828b5SSimon GlassEFI_LDS := elf_x86_64_efi.lds 935bd828b5SSimon GlassEFI_CRT0 := crt0_x86_64_efi.o 945bd828b5SSimon GlassEFI_RELOC := reloc_x86_64_efi.o 955bd828b5SSimon Glasselse 965bd828b5SSimon GlassEFI_LDS := elf_ia32_efi.lds 975bd828b5SSimon GlassEFI_CRT0 := crt0_ia32_efi.o 985bd828b5SSimon GlassEFI_RELOC := reloc_ia32_efi.o 99f4cf153aSHeinrich Schuchardtendif 100f4cf153aSHeinrich Schuchardt 101508d8567SHeinrich Schuchardtelse 102508d8567SHeinrich Schuchardt 103508d8567SHeinrich Schuchardtifdef CONFIG_X86_64 104508d8567SHeinrich SchuchardtEFI_LDS := elf_x86_64_efi.lds 105508d8567SHeinrich SchuchardtEFI_CRT0 := crt0_x86_64_efi.o 106508d8567SHeinrich SchuchardtEFI_RELOC := reloc_x86_64_efi.o 107508d8567SHeinrich Schuchardtelse 108508d8567SHeinrich SchuchardtEFI_LDS := elf_ia32_efi.lds 109508d8567SHeinrich SchuchardtEFI_CRT0 := crt0_ia32_efi.o 110508d8567SHeinrich SchuchardtEFI_RELOC := reloc_ia32_efi.o 111508d8567SHeinrich Schuchardtendif 112508d8567SHeinrich Schuchardt 113508d8567SHeinrich Schuchardtendif 114508d8567SHeinrich Schuchardt 115f4cf153aSHeinrich Schuchardtifdef CONFIG_X86_64 1165bd828b5SSimon GlassEFI_TARGET := --target=efi-app-x86_64 117f4cf153aSHeinrich Schuchardtelse 118f4cf153aSHeinrich SchuchardtEFI_TARGET := --target=efi-app-ia32 1195bd828b5SSimon Glassendif 120