2014-01-26 22:52:16 -08:00
|
|
|
LOCAL_DIR := $(GET_LOCAL_DIR)
|
|
|
|
|
|
|
|
|
|
MODULE := $(LOCAL_DIR)
|
|
|
|
|
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
ARM64_CPU_$(ARM_CPU)=1 \
|
2014-11-10 17:19:37 -08:00
|
|
|
ARM_ISA_ARMV8=1 \
|
|
|
|
|
IS_64BIT=1
|
2014-01-26 22:52:16 -08:00
|
|
|
|
|
|
|
|
MODULE_SRCS += \
|
|
|
|
|
$(LOCAL_DIR)/arch.c \
|
|
|
|
|
$(LOCAL_DIR)/asm.S \
|
|
|
|
|
$(LOCAL_DIR)/exceptions.S \
|
|
|
|
|
$(LOCAL_DIR)/exceptions_c.c \
|
2015-07-30 20:37:12 -07:00
|
|
|
$(LOCAL_DIR)/fpu.c \
|
2014-01-26 22:52:16 -08:00
|
|
|
$(LOCAL_DIR)/thread.c \
|
2014-11-10 17:17:33 -08:00
|
|
|
$(LOCAL_DIR)/spinlock.S \
|
2014-01-26 22:52:16 -08:00
|
|
|
$(LOCAL_DIR)/start.S \
|
2014-11-10 17:23:47 -08:00
|
|
|
$(LOCAL_DIR)/cache-ops.S \
|
2014-01-26 22:52:16 -08:00
|
|
|
|
|
|
|
|
# $(LOCAL_DIR)/arm/start.S \
|
|
|
|
|
$(LOCAL_DIR)/arm/cache.c \
|
|
|
|
|
$(LOCAL_DIR)/arm/ops.S \
|
|
|
|
|
$(LOCAL_DIR)/arm/faults.c \
|
|
|
|
|
$(LOCAL_DIR)/arm/dcc.S
|
|
|
|
|
|
|
|
|
|
GLOBAL_DEFINES += \
|
2015-04-20 15:35:18 -07:00
|
|
|
ARCH_DEFAULT_STACK_SIZE=4096
|
2014-12-04 16:17:37 -08:00
|
|
|
|
|
|
|
|
# if its requested we build with SMP, arm generically supports 4 cpus
|
|
|
|
|
ifeq ($(WITH_SMP),1)
|
|
|
|
|
SMP_MAX_CPUS ?= 4
|
2015-04-17 21:09:02 -07:00
|
|
|
SMP_CPU_CLUSTER_SHIFT ?= 8
|
|
|
|
|
SMP_CPU_ID_BITS ?= 24 # Ignore aff3 bits for now since they are not next to aff2
|
2014-12-04 16:17:37 -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)
|
2014-12-04 16:17:37 -08:00
|
|
|
|
|
|
|
|
MODULE_SRCS += \
|
|
|
|
|
$(LOCAL_DIR)/mp.c
|
|
|
|
|
else
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
SMP_MAX_CPUS=1
|
|
|
|
|
endif
|
2014-01-26 22:52:16 -08:00
|
|
|
|
2014-03-22 21:03:03 -07:00
|
|
|
ARCH_OPTFLAGS := -O2
|
|
|
|
|
|
2014-11-10 17:26:19 -08:00
|
|
|
# we have a mmu and want the vmm/pmm
|
|
|
|
|
WITH_KERNEL_VM ?= 1
|
|
|
|
|
|
|
|
|
|
ifeq ($(WITH_KERNEL_VM),1)
|
|
|
|
|
|
|
|
|
|
MODULE_SRCS += \
|
|
|
|
|
$(LOCAL_DIR)/mmu.c
|
|
|
|
|
|
|
|
|
|
KERNEL_ASPACE_BASE ?= 0xffff000000000000
|
|
|
|
|
KERNEL_ASPACE_SIZE ?= 0x0001000000000000
|
2015-09-23 17:43:37 -07:00
|
|
|
USER_ASPACE_BASE ?= 0x0000000001000000
|
|
|
|
|
USER_ASPACE_SIZE ?= 0x0000fffffe000000
|
2014-11-10 17:26:19 -08:00
|
|
|
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
KERNEL_ASPACE_BASE=$(KERNEL_ASPACE_BASE) \
|
2015-09-23 17:43:37 -07:00
|
|
|
KERNEL_ASPACE_SIZE=$(KERNEL_ASPACE_SIZE) \
|
|
|
|
|
USER_ASPACE_BASE=$(USER_ASPACE_BASE) \
|
2021-03-30 00:50:22 -07:00
|
|
|
USER_ASPACE_SIZE=$(USER_ASPACE_SIZE) \
|
|
|
|
|
ARCH_HAS_MMU=1
|
2014-11-10 17:26:19 -08:00
|
|
|
|
2015-09-23 17:43:37 -07:00
|
|
|
KERNEL_BASE ?= $(KERNEL_ASPACE_BASE)
|
2014-11-10 17:26:19 -08:00
|
|
|
KERNEL_LOAD_OFFSET ?= 0
|
|
|
|
|
|
|
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
KERNEL_BASE=$(KERNEL_BASE) \
|
|
|
|
|
KERNEL_LOAD_OFFSET=$(KERNEL_LOAD_OFFSET)
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
KERNEL_BASE ?= $(MEMBASE)
|
|
|
|
|
KERNEL_LOAD_OFFSET ?= 0
|
|
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
2015-10-15 17:22:16 -07:00
|
|
|
GLOBAL_DEFINES += \
|
|
|
|
|
MEMBASE=$(MEMBASE) \
|
|
|
|
|
MEMSIZE=$(MEMSIZE)
|
2014-11-10 17:26:19 -08:00
|
|
|
|
2014-01-26 22:52:16 -08:00
|
|
|
# try to find the toolchain
|
2014-10-28 16:04:41 -07:00
|
|
|
include $(LOCAL_DIR)/toolchain.mk
|
|
|
|
|
TOOLCHAIN_PREFIX := $(ARCH_$(ARCH)_TOOLCHAIN_PREFIX)
|
2014-01-26 22:52:16 -08:00
|
|
|
|
2014-11-10 16:47:18 -08:00
|
|
|
ARCH_COMPILEFLAGS += $(ARCH_$(ARCH)_COMPILEFLAGS)
|
2020-07-22 11:17:51 +05:30
|
|
|
ARCH_COMPILEFLAGS += -fno-omit-frame-pointer
|
2022-07-17 16:03:20 -07:00
|
|
|
ARCH_COMPILEFLAGS_NOFLOAT := -mgeneral-regs-only
|
|
|
|
|
ARCH_COMPILEFLAGS_FLOAT :=
|
2014-11-10 16:47:18 -08:00
|
|
|
|
2018-10-13 11:40:10 -07:00
|
|
|
ARCH_LDFLAGS += -z max-page-size=4096
|
2015-11-06 15:53:28 -08:00
|
|
|
|
2018-10-13 11:40:10 -07:00
|
|
|
LIBGCC := $(shell $(TOOLCHAIN_PREFIX)gcc $(GLOBAL_COMPILEFLAGS) $(ARCH_COMPILEFLAGS) -print-libgcc-file-name)
|
2015-11-06 15:53:28 -08:00
|
|
|
|
2014-01-26 22:52:16 -08: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
|
|
|
|
|
|
|
|
|
|
# potentially generated files that should be cleaned out with clean make rule
|
|
|
|
|
GENERATED += \
|
|
|
|
|
$(BUILDDIR)/system-onesegment.ld
|
|
|
|
|
|
|
|
|
|
# rules for generating the linker script
|
2015-10-19 19:43:31 -07:00
|
|
|
$(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld $(wildcard arch/*.ld) linkerscript.phony
|
2014-01-26 22:52:16 -08: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,$@)
|
|
|
|
|
|
|
|
|
|
linkerscript.phony:
|
|
|
|
|
.PHONY: linkerscript.phony
|
2014-01-26 22:52:16 -08:00
|
|
|
|
|
|
|
|
include make/module.mk
|