| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- LOCAL_DIR := $(GET_LOCAL_DIR)
- # can override this in local.mk
- ENABLE_THUMB?=true
- DEFINES += \
- ARM_CPU_$(ARM_CPU)=1
- # do set some options based on the cpu core
- HANDLED_CORE := false
- ifeq ($(ARM_CPU),cortex-a9)
- DEFINES += \
- ARM_WITH_CP15=1 \
- ARM_WITH_MMU=1 \
- ARM_ISA_ARMv7=1 \
- ARM_WITH_VFP=1 \
- ARM_WITH_NEON=1 \
- ARM_WITH_THUMB=1 \
- ARM_WITH_THUMB2=1 \
- ARM_WITH_CACHE=1 \
- ARM_WITH_L2=1
- CFLAGS += -mcpu=$(ARM_CPU)
- HANDLED_CORE := true
- #CFLAGS += -mfpu=vfp -mfloat-abi=softfp
- endif
- ifeq ($(ARM_CPU),cortex-a8)
- DEFINES += \
- ARM_WITH_CP15=1 \
- ARM_WITH_MMU=1 \
- ARM_ISA_ARMv7=1 \
- ARM_WITH_VFP=1 \
- ARM_WITH_NEON=1 \
- ARM_WITH_THUMB=1 \
- ARM_WITH_THUMB2=1 \
- ARM_WITH_CACHE=1 \
- ARM_WITH_L2=1
- CFLAGS += -mcpu=$(ARM_CPU)
- #CFLAGS += -mcpu=arm1136jf-s # compiler doesn't understand cortex yet
- HANDLED_CORE := true
- #CFLAGS += -mfpu=vfp -mfloat-abi=softfp
- endif
- ifeq ($(ARM_CPU),cortex-a7)
- DEFINES += \
- ARM_WITH_CP15=1 \
- ARM_WITH_MMU=1 \
- ARM_ISA_ARMv7=1 \
- ARM_WITH_VFP=1 \
- ARM_WITH_NEON=1 \
- ARM_WITH_THUMB=1 \
- ARM_WITH_THUMB2=1 \
- ARM_WITH_CACHE=1 \
- ARM_WITH_L2=1
- CFLAGS += -march=armv7-a -mtune=cortex-a7
- #CFLAGS += -mcpu=arm1136jf-s # compiler doesn't understand cortex yet
- HANDLED_CORE := true
- #CFLAGS += -mfpu=vfp -mfloat-abi=softfp
- endif
- ifeq ($(ARM_CPU),cortex-a53)
- DEFINES += \
- ARM_WITH_CP15=1 \
- ARM_WITH_MMU=1 \
- ARM_ISA_ARMv7=1 \
- ARM_WITH_VFP=1 \
- ARM_WITH_NEON=1 \
- ARM_WITH_THUMB=1 \
- ARM_WITH_THUMB2=1 \
- ARM_WITH_CACHE=1 \
- ARM_WITH_L2=1
- CFLAGS += -mcpu=cortex-a9
- #CFLAGS += -mcpu=arm1136jf-s # compiler doesn't understand cortex yet
- HANDLED_CORE := true
- #CFLAGS += -mfpu=vfp -mfloat-abi=softfp
- endif
- ifeq ($(ARM_CPU),arm1136j-s)
- DEFINES += \
- ARM_WITH_CP15=1 \
- ARM_WITH_MMU=1 \
- ARM_ISA_ARMv6=1 \
- ARM_WITH_THUMB=1 \
- ARM_WITH_CACHE=1 \
- ARM_CPU_ARM1136=1
- CFLAGS += -mcpu=$(ARM_CPU)
- HANDLED_CORE := true
- endif
- ifeq ($(ARM_CPU),arm1176jzf-s)
- DEFINES += \
- ARM_WITH_CP15=1 \
- ARM_WITH_MMU=1 \
- ARM_ISA_ARMv6=1 \
- ARM_WITH_VFP=1 \
- ARM_WITH_THUMB=1 \
- ARM_WITH_CACHE=1 \
- ARM_CPU_ARM1136=1
- CFLAGS += -mcpu=$(ARM_CPU)
- HANDLED_CORE := true
- endif
- ifeq ($(ARM_CPU),arm926ej-s)
- DEFINES += \
- ARM_WITH_CP15=1 \
- ARM_WITH_MMU=1 \
- ARM_ISA_ARMv5E=1 \
- ARM_WITH_THUMB=1 \
- ARM_WITH_CACHE=1 \
- ARM_CPU_ARM9=1 \
- ARM_CPU_ARM926=1
- CFLAGS += -mcpu=$(ARM_CPU)
- HANDLED_CORE := true
- endif
- ifeq ($(ARM_CPU),arm7tdmi)
- DEFINES += \
- ARM_ISA_ARMv4=1 \
- ARM_WITH_THUMB=1 \
- ARM_CPU_ARM7=1
- CFLAGS += -mcpu=$(ARM_CPU)
- HANDLED_CORE := true
- endif
- ifneq ($(HANDLED_CORE),true)
- $(warning $(LOCAL_DIR)/rules.mk doesnt have logic for arm core $(ARM_CPU))
- $(warning this is likely to be broken)
- endif
- THUMBCFLAGS :=
- THUMBINTERWORK :=
- ifeq ($(ENABLE_THUMB),true)
- THUMBCFLAGS := -mthumb -D__thumb__
- THUMBINTERWORK := -mthumb-interwork
- endif
- INCLUDES += \
- -I$(LOCAL_DIR)/include
- BOOTOBJS += \
- $(LOCAL_DIR)/crt0.o
- OBJS += \
- $(LOCAL_DIR)/arch.Ao \
- $(LOCAL_DIR)/asm.o \
- $(LOCAL_DIR)/cache.o \
- $(LOCAL_DIR)/cache-ops.o \
- $(LOCAL_DIR)/ops.o \
- $(LOCAL_DIR)/exceptions.o \
- $(LOCAL_DIR)/faults.o \
- $(LOCAL_DIR)/mmu.o \
- $(LOCAL_DIR)/thread.o \
- $(LOCAL_DIR)/dcc.o
- # set the default toolchain to arm eabi and set a #define
- TOOLCHAIN_PREFIX ?= arm-linux-androideabi-
- #TOOLCHAIN_PREFIX ?= arm-eabi-
- ifeq ($(TOOLCHAIN_PREFIX),arm-none-linux-gnueabi-)
- # XXX test for EABI better than this
- # eabi compilers dont need this
- THUMBINTERWORK:=
- endif
- CFLAGS += $(THUMBINTERWORK)
- # make sure some bits were set up
- MEMVARS_SET := 0
- ifneq ($(MEMBASE),)
- MEMVARS_SET := 1
- endif
- ifneq ($(MEMSIZE),)
- MEMVARS_SET := 1
- endif
- ifeq ($(MEMVARS_SET),0)
- $(error missing MEMBASE or MEMSIZE variable, please set in target rules.mk)
- endif
- LIBGCC ?= $(shell $(TOOLCHAIN_PREFIX)gcc $(CFLAGS) $(THUMBCFLAGS) -print-libgcc-file-name)
- #$(info LIBGCC = $(LIBGCC))
- # potentially generated files that should be cleaned out with clean make rule
- GENERATED += \
- $(BUILDDIR)/system-onesegment.ld \
- $(BUILDDIR)/system-twosegment.ld
- # rules for generating the linker scripts
- $(BUILDDIR)/trustzone-test-system-onesegment.ld: $(LOCAL_DIR)/trustzone-test-system-onesegment.ld linkerscript.phony
- @echo generating $@
- @$(MKDIR)
- $(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%ROMLITE_PREFLASHED_DATA%/$(ROMLITE_PREFLASHED_DATA)/" < $< > $@.tmp
- @$(call TESTANDREPLACEFILE,$@.tmp,$@)
- $(BUILDDIR)/trustzone-system-onesegment.ld: $(LOCAL_DIR)/trustzone-system-onesegment.ld linkerscript.phony
- @echo generating $@
- @$(MKDIR)
- $(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/" < $< > $@.tmp
- @$(call TESTANDREPLACEFILE,$@.tmp,$@)
- $(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld linkerscript.phony
- @echo generating $@
- @$(MKDIR)
- $(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/" < $< > $@.tmp
- @$(call TESTANDREPLACEFILE,$@.tmp,$@)
- $(BUILDDIR)/system-twosegment.ld: $(LOCAL_DIR)/system-twosegment.ld linkerscript.phony
- @echo generating $@
- @$(MKDIR)
- $(NOECHO)sed "s/%ROMBASE%/$(ROMBASE)/;s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/" < $< > $@.tmp
- @$(call TESTANDREPLACEFILE,$@.tmp,$@)
- linkerscript.phony:
- .PHONY: linkerscript.phony
|