2008-09-01 02:26:09 -07:00
|
|
|
LOCAL_DIR := $(GET_LOCAL_DIR)
|
|
|
|
|
|
2012-08-30 14:22:31 -07:00
|
|
|
MODULE := $(LOCAL_DIR)
|
|
|
|
|
|
2008-09-05 04:35:45 -07:00
|
|
|
# can override this in local.mk
|
|
|
|
|
ENABLE_THUMB?=true
|
2008-09-01 02:26:09 -07:00
|
|
|
|
2012-01-24 16:23:16 -08:00
|
|
|
# default to the regular arm subarch
|
|
|
|
|
SUBARCH := arm
|
|
|
|
|
|
2013-06-07 21:57:58 -07:00
|
|
|
GLOBAL_DEFINES += \
|
2008-09-01 02:26:09 -07:00
|
|
|
ARM_CPU_$(ARM_CPU)=1
|
|
|
|
|
|
|
|
|
|
# do set some options based on the cpu core
|
|
|
|
|
HANDLED_CORE := false
|
2016-01-12 11:19:33 -08:00
|
|
|
ifeq ($(ARM_CPU),cortex-m0)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_CPU_CORTEX_M0=1 \
|
|
|
|
|
ARM_ISA_ARMV6M=1 \
|
2020-05-15 20:43:34 -07:00
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
USE_BUILTIN_ATOMICS=0
|
2016-01-12 11:19:33 -08:00
|
|
|
HANDLED_CORE := true
|
|
|
|
|
ENABLE_THUMB := true
|
|
|
|
|
SUBARCH := arm-m
|
|
|
|
|
endif
|
2016-01-18 11:07:31 -08:00
|
|
|
ifeq ($(ARM_CPU),cortex-m0plus)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_CPU_CORTEX_M0_PLUS=1 \
|
|
|
|
|
ARM_ISA_ARMV6M=1 \
|
2020-05-15 20:43:34 -07:00
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
USE_BUILTIN_ATOMICS=0
|
2016-01-18 11:07:31 -08:00
|
|
|
HANDLED_CORE := true
|
|
|
|
|
ENABLE_THUMB := true
|
|
|
|
|
SUBARCH := arm-m
|
|
|
|
|
endif
|
2011-12-24 16:38:13 -08:00
|
|
|
ifeq ($(ARM_CPU),cortex-m3)
|
2013-06-07 21:57:58 -07:00
|
|
|
GLOBAL_DEFINES += \
|
2014-03-05 12:53:46 -08:00
|
|
|
ARM_CPU_CORTEX_M3=1 \
|
2011-12-24 16:38:13 -08:00
|
|
|
ARM_ISA_ARMv7=1 \
|
2012-01-24 16:23:16 -08:00
|
|
|
ARM_ISA_ARMv7M=1 \
|
2011-12-24 16:38:13 -08:00
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1
|
|
|
|
|
HANDLED_CORE := true
|
|
|
|
|
ENABLE_THUMB := true
|
2012-01-24 16:23:16 -08:00
|
|
|
SUBARCH := arm-m
|
2011-12-24 16:38:13 -08:00
|
|
|
endif
|
2012-11-11 20:08:50 -08:00
|
|
|
ifeq ($(ARM_CPU),cortex-m4)
|
2013-06-07 21:57:58 -07:00
|
|
|
GLOBAL_DEFINES += \
|
2012-11-11 20:08:50 -08:00
|
|
|
ARM_CPU_CORTEX_M4=1 \
|
|
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7M=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1
|
|
|
|
|
HANDLED_CORE := true
|
|
|
|
|
ENABLE_THUMB := true
|
|
|
|
|
SUBARCH := arm-m
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(ARM_CPU),cortex-m4f)
|
2013-06-07 21:57:58 -07:00
|
|
|
GLOBAL_DEFINES += \
|
2012-11-11 20:08:50 -08:00
|
|
|
ARM_CPU_CORTEX_M4=1 \
|
|
|
|
|
ARM_CPU_CORTEX_M4F=1 \
|
|
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7M=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1 \
|
|
|
|
|
ARM_WITH_VFP=1 \
|
2016-03-28 22:19:23 -07:00
|
|
|
ARM_WITH_VFP_SP_ONLY=1
|
2012-11-11 20:08:50 -08:00
|
|
|
HANDLED_CORE := true
|
|
|
|
|
ENABLE_THUMB := true
|
|
|
|
|
SUBARCH := arm-m
|
|
|
|
|
endif
|
2023-04-04 22:53:03 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-m55)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_CPU_CORTEX_M55=1 \
|
|
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7M=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1 \
|
|
|
|
|
ARM_WITH_CACHE=1
|
|
|
|
|
HANDLED_CORE := true
|
|
|
|
|
ENABLE_THUMB := true
|
|
|
|
|
SUBARCH := arm-m
|
|
|
|
|
endif
|
2015-07-08 02:24:15 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-m7)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_CPU_CORTEX_M7=1 \
|
|
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7M=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
2015-07-10 00:50:05 -07:00
|
|
|
ARM_WITH_THUMB2=1 \
|
|
|
|
|
ARM_WITH_CACHE=1
|
2015-07-08 02:24:15 -07:00
|
|
|
HANDLED_CORE := true
|
|
|
|
|
ENABLE_THUMB := true
|
|
|
|
|
SUBARCH := arm-m
|
|
|
|
|
endif
|
2015-09-22 14:39:11 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-m7-fpu-sp-d16)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_CPU_CORTEX_M7=1 \
|
|
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7M=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1 \
|
|
|
|
|
ARM_WITH_CACHE=1 \
|
|
|
|
|
ARM_WITH_VFP=1 \
|
2016-03-28 22:19:23 -07:00
|
|
|
ARM_WITH_VFP_SP_ONLY=1
|
2015-09-22 14:39:11 -07:00
|
|
|
HANDLED_CORE := true
|
|
|
|
|
ENABLE_THUMB := true
|
|
|
|
|
SUBARCH := arm-m
|
|
|
|
|
endif
|
2015-03-02 01:55:18 -08:00
|
|
|
ifeq ($(ARM_CPU),cortex-a7)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_WITH_CP15=1 \
|
2021-03-30 00:50:22 -07:00
|
|
|
ARCH_HAS_MMU=1 \
|
2015-03-02 01:55:18 -08:00
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7A=1 \
|
2015-04-18 14:25:26 -07:00
|
|
|
ARM_WITH_VFP=1 \
|
|
|
|
|
ARM_WITH_NEON=1 \
|
2015-03-02 01:55:18 -08:00
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1 \
|
2020-10-09 04:56:30 -03:00
|
|
|
ARM_WITH_CACHE=1 \
|
|
|
|
|
ARM_WITH_HYP=1
|
2015-03-02 01:55:18 -08:00
|
|
|
HANDLED_CORE := true
|
|
|
|
|
endif
|
2013-08-08 15:18:59 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-a15)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_WITH_CP15=1 \
|
2021-03-30 00:50:22 -07:00
|
|
|
ARCH_HAS_MMU=1 \
|
2013-08-08 15:18:59 -07:00
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7A=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1 \
|
|
|
|
|
ARM_WITH_CACHE=1 \
|
|
|
|
|
ARM_WITH_L2=1
|
2014-10-07 15:52:53 -07:00
|
|
|
ifneq ($(ARM_WITHOUT_VFP_NEON),true)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_WITH_VFP=1 \
|
|
|
|
|
ARM_WITH_NEON=1
|
|
|
|
|
endif
|
2013-08-08 15:18:59 -07:00
|
|
|
HANDLED_CORE := true
|
|
|
|
|
endif
|
2008-09-01 02:26:09 -07:00
|
|
|
ifeq ($(ARM_CPU),cortex-a8)
|
2013-06-07 21:57:58 -07:00
|
|
|
GLOBAL_DEFINES += \
|
2008-09-01 02:26:09 -07:00
|
|
|
ARM_WITH_CP15=1 \
|
2021-03-30 00:50:22 -07:00
|
|
|
ARCH_HAS_MMU=1 \
|
2008-09-01 02:26:09 -07:00
|
|
|
ARM_ISA_ARMv7=1 \
|
2012-01-24 16:23:16 -08:00
|
|
|
ARM_ISA_ARMv7A=1 \
|
2008-09-01 02:26:09 -07:00
|
|
|
ARM_WITH_VFP=1 \
|
|
|
|
|
ARM_WITH_NEON=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1 \
|
|
|
|
|
ARM_WITH_CACHE=1 \
|
|
|
|
|
ARM_WITH_L2=1
|
2014-04-18 21:43:03 -07:00
|
|
|
HANDLED_CORE := true
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(ARM_CPU),cortex-a9)
|
|
|
|
|
GLOBAL_DEFINES += \
|
2014-06-11 14:40:14 -07:00
|
|
|
ARM_WITH_CP15=1 \
|
2021-03-30 00:50:22 -07:00
|
|
|
ARCH_HAS_MMU=1 \
|
2014-06-11 14:40:14 -07:00
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7A=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1 \
|
|
|
|
|
ARM_WITH_CACHE=1
|
|
|
|
|
HANDLED_CORE := true
|
|
|
|
|
endif
|
|
|
|
|
ifeq ($(ARM_CPU),cortex-a9-neon)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_CPU_CORTEX_A9=1 \
|
2014-04-18 21:43:03 -07:00
|
|
|
ARM_WITH_CP15=1 \
|
2021-03-30 00:50:22 -07:00
|
|
|
ARCH_HAS_MMU=1 \
|
2014-04-18 21:43:03 -07:00
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7A=1 \
|
|
|
|
|
ARM_WITH_VFP=1 \
|
|
|
|
|
ARM_WITH_NEON=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_THUMB2=1 \
|
2014-06-03 21:15:45 -07:00
|
|
|
ARM_WITH_CACHE=1
|
2008-09-01 02:26:09 -07:00
|
|
|
HANDLED_CORE := true
|
|
|
|
|
endif
|
2008-09-06 23:56:16 -07:00
|
|
|
ifeq ($(ARM_CPU),arm1136j-s)
|
2013-06-07 21:57:58 -07:00
|
|
|
GLOBAL_DEFINES += \
|
2008-09-06 23:56:16 -07:00
|
|
|
ARM_WITH_CP15=1 \
|
2021-03-30 00:50:22 -07:00
|
|
|
ARCH_HAS_MMU=1 \
|
2008-09-06 23:56:16 -07:00
|
|
|
ARM_ISA_ARMv6=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_CACHE=1 \
|
|
|
|
|
ARM_CPU_ARM1136=1
|
|
|
|
|
HANDLED_CORE := true
|
|
|
|
|
endif
|
2008-09-01 02:26:09 -07:00
|
|
|
ifeq ($(ARM_CPU),arm1176jzf-s)
|
2013-06-07 21:57:58 -07:00
|
|
|
GLOBAL_DEFINES += \
|
2008-09-01 02:26:09 -07:00
|
|
|
ARM_WITH_CP15=1 \
|
2021-03-30 00:50:22 -07:00
|
|
|
ARCH_HAS_MMU=1 \
|
2008-09-01 02:26:09 -07:00
|
|
|
ARM_ISA_ARMv6=1 \
|
|
|
|
|
ARM_WITH_VFP=1 \
|
|
|
|
|
ARM_WITH_THUMB=1 \
|
|
|
|
|
ARM_WITH_CACHE=1 \
|
|
|
|
|
ARM_CPU_ARM1136=1
|
|
|
|
|
HANDLED_CORE := true
|
|
|
|
|
endif
|
2019-11-18 06:51:09 +00:00
|
|
|
ifeq ($(ARM_CPU),cortex-r4f)
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_CPU_CORTEX_R4F=1 \
|
|
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_WITH_VFP=1 \
|
|
|
|
|
ARM_WITH_THUMB=1
|
|
|
|
|
ENABLE_THUMB := true
|
|
|
|
|
HANDLED_CORE := true
|
|
|
|
|
endif
|
2015-08-28 16:34:08 -07:00
|
|
|
ifeq ($(ARM_CPU),armemu)
|
|
|
|
|
# flavor of emulated cpu by the armemu project
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM_WITH_CP15=1 \
|
|
|
|
|
ARM_ISA_ARMv7=1 \
|
|
|
|
|
ARM_ISA_ARMv7A=1 \
|
|
|
|
|
ARM_WITH_CACHE=1
|
|
|
|
|
HANDLED_CORE := true
|
|
|
|
|
ENABLE_THUMB := false # armemu doesn't currently support thumb properly
|
|
|
|
|
endif
|
2008-09-01 02:26:09 -07:00
|
|
|
|
|
|
|
|
ifneq ($(HANDLED_CORE),true)
|
2012-11-11 20:08:50 -08:00
|
|
|
$(error $(LOCAL_DIR)/rules.mk doesnt have logic for arm core $(ARM_CPU))
|
2008-09-01 02:26:09 -07:00
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
THUMBCFLAGS :=
|
|
|
|
|
THUMBINTERWORK :=
|
|
|
|
|
ifeq ($(ENABLE_THUMB),true)
|
|
|
|
|
THUMBCFLAGS := -mthumb -D__thumb__
|
2021-02-06 17:32:13 -08:00
|
|
|
ifneq ($(SUBARCH),arm-m)
|
|
|
|
|
# Only enable thumb interworking switch if we're compiling in a mixed
|
|
|
|
|
# arm/thumb environment. Also possible this switch is not needed anymore.
|
2008-09-01 02:26:09 -07:00
|
|
|
THUMBINTERWORK := -mthumb-interwork
|
|
|
|
|
endif
|
2021-02-06 17:32:13 -08:00
|
|
|
endif
|
2008-09-01 02:26:09 -07:00
|
|
|
|
2013-06-07 21:51:36 -07:00
|
|
|
GLOBAL_INCLUDES += \
|
|
|
|
|
$(LOCAL_DIR)/$(SUBARCH)/include
|
2008-09-01 02:26:09 -07:00
|
|
|
|
2012-01-24 16:23:16 -08:00
|
|
|
ifeq ($(SUBARCH),arm)
|
2012-08-30 14:22:31 -07:00
|
|
|
MODULE_SRCS += \
|
|
|
|
|
$(LOCAL_DIR)/arm/start.S \
|
|
|
|
|
$(LOCAL_DIR)/arm/asm.S \
|
|
|
|
|
$(LOCAL_DIR)/arm/cache-ops.S \
|
|
|
|
|
$(LOCAL_DIR)/arm/cache.c \
|
2015-04-23 19:31:35 -07:00
|
|
|
$(LOCAL_DIR)/arm/debug.c \
|
2012-08-30 14:22:31 -07:00
|
|
|
$(LOCAL_DIR)/arm/ops.S \
|
|
|
|
|
$(LOCAL_DIR)/arm/faults.c \
|
|
|
|
|
$(LOCAL_DIR)/arm/mmu.c \
|
2015-04-07 12:38:24 -07:00
|
|
|
$(LOCAL_DIR)/arm/thread.c
|
2012-08-30 14:22:31 -07:00
|
|
|
|
2024-05-14 01:18:38 -07:00
|
|
|
MODULE_FLOAT_SRCS += \
|
|
|
|
|
$(LOCAL_DIR)/arm/exceptions.S \
|
|
|
|
|
$(LOCAL_DIR)/arm/fpu.c \
|
|
|
|
|
|
2012-08-30 14:22:31 -07:00
|
|
|
MODULE_ARM_OVERRIDE_SRCS := \
|
|
|
|
|
$(LOCAL_DIR)/arm/arch.c
|
2012-05-10 16:25:44 -07:00
|
|
|
|
2013-06-07 21:57:58 -07:00
|
|
|
GLOBAL_DEFINES += \
|
2012-05-10 16:25:44 -07:00
|
|
|
ARCH_DEFAULT_STACK_SIZE=4096
|
2014-03-22 21:03:03 -07:00
|
|
|
|
|
|
|
|
ARCH_OPTFLAGS := -O2
|
2014-10-23 13:15:52 -07:00
|
|
|
WITH_LINKER_GC ?= 1
|
2014-07-11 18:04:54 -07:00
|
|
|
|
2019-02-17 20:27:22 -08:00
|
|
|
# use the numeric registers when disassembling code
|
|
|
|
|
ARCH_OBJDUMP_FLAGS := -Mreg-names-raw
|
|
|
|
|
|
2014-07-11 18:04:54 -07:00
|
|
|
# we have a mmu and want the vmm/pmm
|
2015-08-28 16:32:45 -07:00
|
|
|
WITH_KERNEL_VM ?= 1
|
2014-07-11 18:04:54 -07:00
|
|
|
|
2014-07-24 15:25:08 -07:00
|
|
|
# for arm, have the kernel occupy the entire top 3GB of virtual space,
|
|
|
|
|
# but put the kernel itself at 0x80000000.
|
|
|
|
|
# this leaves 0x40000000 - 0x80000000 open for kernel space to use.
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
KERNEL_ASPACE_BASE=0x40000000 \
|
|
|
|
|
KERNEL_ASPACE_SIZE=0xc0000000
|
|
|
|
|
|
2014-07-11 18:04:54 -07:00
|
|
|
KERNEL_BASE ?= 0x80000000
|
|
|
|
|
KERNEL_LOAD_OFFSET ?= 0
|
|
|
|
|
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
KERNEL_BASE=$(KERNEL_BASE) \
|
|
|
|
|
KERNEL_LOAD_OFFSET=$(KERNEL_LOAD_OFFSET)
|
2015-02-16 22:55:47 -08:00
|
|
|
|
|
|
|
|
# if its requested we build with SMP, arm generically supports 4 cpus
|
|
|
|
|
ifeq ($(WITH_SMP),1)
|
2015-03-11 17:28:45 -07:00
|
|
|
SMP_MAX_CPUS ?= 4
|
2015-04-17 21:09:02 -07:00
|
|
|
SMP_CPU_CLUSTER_SHIFT ?= 8
|
|
|
|
|
SMP_CPU_ID_BITS ?= 24
|
2015-03-11 17:28:45 -07:00
|
|
|
|
2015-02-16 22:55:47 -08:00
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
WITH_SMP=1 \
|
2015-04-17 21:09:02 -07:00
|
|
|
SMP_MAX_CPUS=$(SMP_MAX_CPUS) \
|
|
|
|
|
SMP_CPU_CLUSTER_SHIFT=$(SMP_CPU_CLUSTER_SHIFT) \
|
|
|
|
|
SMP_CPU_ID_BITS=$(SMP_CPU_ID_BITS)
|
2015-02-16 22:55:47 -08:00
|
|
|
|
|
|
|
|
MODULE_SRCS += \
|
|
|
|
|
$(LOCAL_DIR)/arm/mp.c
|
|
|
|
|
else
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
SMP_MAX_CPUS=1
|
|
|
|
|
endif
|
|
|
|
|
|
2015-02-26 17:04:54 -08:00
|
|
|
ifeq (true,$(call TOBOOL,$(WITH_NS_MAPPING)))
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
WITH_ARCH_MMU_PICK_SPOT=1
|
|
|
|
|
endif
|
|
|
|
|
|
2012-01-24 16:23:16 -08:00
|
|
|
endif
|
|
|
|
|
ifeq ($(SUBARCH),arm-m)
|
2012-08-30 14:22:31 -07:00
|
|
|
MODULE_SRCS += \
|
|
|
|
|
$(LOCAL_DIR)/arm-m/arch.c \
|
2015-08-21 11:33:05 -07:00
|
|
|
$(LOCAL_DIR)/arm-m/cache.c \
|
|
|
|
|
$(LOCAL_DIR)/arm-m/exceptions.c \
|
2015-05-19 11:57:53 -07:00
|
|
|
$(LOCAL_DIR)/arm-m/spin_cycles.c \
|
2024-05-14 00:48:51 -07:00
|
|
|
$(LOCAL_DIR)/arm-m/start.c \
|
2015-08-21 11:33:05 -07:00
|
|
|
$(LOCAL_DIR)/arm-m/thread.c \
|
|
|
|
|
$(LOCAL_DIR)/arm-m/vectab.c
|
2012-03-16 14:46:32 -07:00
|
|
|
|
2014-03-22 21:03:03 -07:00
|
|
|
# we're building for small binaries
|
2013-06-07 21:57:58 -07:00
|
|
|
GLOBAL_DEFINES += \
|
2014-07-14 17:33:07 -07:00
|
|
|
ARM_ONLY_THUMB=1 \
|
2015-02-21 20:09:31 -08:00
|
|
|
ARCH_DEFAULT_STACK_SIZE=1024 \
|
|
|
|
|
SMP_MAX_CPUS=1
|
2014-03-22 21:03:03 -07:00
|
|
|
|
2016-02-17 20:45:28 -08:00
|
|
|
MODULE_DEPS += \
|
|
|
|
|
arch/arm/arm-m/CMSIS
|
|
|
|
|
|
2014-03-22 21:03:03 -07:00
|
|
|
ARCH_OPTFLAGS := -Os
|
2014-10-23 13:15:52 -07:00
|
|
|
WITH_LINKER_GC ?= 1
|
2012-01-24 16:23:16 -08:00
|
|
|
endif
|
2008-09-01 02:26:09 -07:00
|
|
|
|
2014-10-17 10:55:46 -07:00
|
|
|
# try to find toolchain
|
|
|
|
|
include $(LOCAL_DIR)/toolchain.mk
|
|
|
|
|
TOOLCHAIN_PREFIX := $(ARCH_$(ARCH)_TOOLCHAIN_PREFIX)
|
2008-09-05 04:35:45 -07:00
|
|
|
|
2014-10-17 10:55:46 -07:00
|
|
|
ARCH_COMPILEFLAGS += $(ARCH_$(ARCH)_COMPILEFLAGS)
|
2024-05-14 01:18:38 -07:00
|
|
|
ARCH_COMPILEFLAGS_NOFLOAT :=
|
|
|
|
|
ARCH_COMPILEFLAGS_FLOAT := $(ARCH_$(ARCH)_COMPILEFLAGS_FLOAT)
|
2014-10-17 10:55:46 -07:00
|
|
|
|
2012-08-30 14:22:31 -07:00
|
|
|
GLOBAL_COMPILEFLAGS += $(THUMBINTERWORK)
|
2008-09-05 04:35:45 -07:00
|
|
|
|
2020-05-16 15:05:51 -07:00
|
|
|
# set the max page size to something more reasonable (defaults to 64K or above)
|
2018-10-13 11:40:10 -07:00
|
|
|
ARCH_LDFLAGS += -z max-page-size=4096
|
2015-11-06 15:53:28 -08:00
|
|
|
|
|
|
|
|
# find the direct path to libgcc.a for our particular multilib variant
|
|
|
|
|
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(THUMBCFLAGS) -print-libgcc-file-name)
|
2019-03-23 09:57:19 -07:00
|
|
|
#$(info LIBGCC = $(LIBGCC))
|
|
|
|
|
#$(info LIBGCC COMPILEFLAGS = $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) $(THUMBCFLAGS))
|
2015-11-06 15:53:28 -08:00
|
|
|
|
2008-09-01 02:26:09 -07:00
|
|
|
# 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
|
|
|
|
|
|
2015-10-15 17:22:16 -07:00
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
MEMBASE=$(MEMBASE) \
|
|
|
|
|
MEMSIZE=$(MEMSIZE)
|
|
|
|
|
|
2008-09-01 02:26:09 -07:00
|
|
|
# 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
|
2015-10-19 19:43:31 -07:00
|
|
|
$(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld $(wildcard arch/*.ld) linkerscript.phony
|
2008-09-01 02:26:09 -07:00
|
|
|
@echo generating $@
|
|
|
|
|
@$(MKDIR)
|
2015-10-19 19:43:31 -07:00
|
|
|
$(NOECHO)sed "s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/;s/%KERNEL_BASE%/$(KERNEL_BASE)/;s/%KERNEL_LOAD_OFFSET%/$(KERNEL_LOAD_OFFSET)/" < $< > $@.tmp
|
|
|
|
|
@$(call TESTANDREPLACEFILE,$@.tmp,$@)
|
2008-09-01 02:26:09 -07:00
|
|
|
|
2015-10-19 19:43:31 -07:00
|
|
|
$(BUILDDIR)/system-twosegment.ld: $(LOCAL_DIR)/system-twosegment.ld $(wildcard arch/*.ld) linkerscript.phony
|
2008-09-01 02:26:09 -07:00
|
|
|
@echo generating $@
|
|
|
|
|
@$(MKDIR)
|
2015-10-19 19:43:31 -07:00
|
|
|
$(NOECHO)sed "s/%ROMBASE%/$(ROMBASE)/;s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/" < $< > $@.tmp
|
|
|
|
|
@$(call TESTANDREPLACEFILE,$@.tmp,$@)
|
|
|
|
|
|
|
|
|
|
linkerscript.phony:
|
|
|
|
|
.PHONY: linkerscript.phony
|
2008-09-01 02:26:09 -07:00
|
|
|
|
2012-11-11 13:59:30 -08:00
|
|
|
# arm specific script to try to guess stack usage
|
|
|
|
|
$(OUTELF).stack: LOCAL_DIR:=$(LOCAL_DIR)
|
2015-11-13 13:18:24 -08:00
|
|
|
$(OUTELF).stack: $(OUTELF)
|
2012-11-11 13:59:30 -08:00
|
|
|
$(NOECHO)echo generating stack usage $@
|
2019-02-17 20:27:22 -08:00
|
|
|
$(NOECHO)$(OBJDUMP) $(ARCH_OBJDUMP_FLAGS) -d $< | $(LOCAL_DIR)/stackusage | $(CPPFILT) | sort -n -k 1 -r > $@
|
2012-11-11 13:59:30 -08:00
|
|
|
|
|
|
|
|
EXTRA_BUILDDEPS += $(OUTELF).stack
|
2015-10-19 19:47:29 -07:00
|
|
|
GENERATED += $(OUTELF).stack
|
2012-11-11 13:59:30 -08:00
|
|
|
|
2012-08-30 14:22:31 -07:00
|
|
|
include make/module.mk
|