e3627041c63f53f71589f2fa31b8c7957e79e09d
[3rdparty/ote_partner/tlk.git] / platform / tegra / rules.mk
1 LOCAL_DIR := $(GET_LOCAL_DIR)
2
3 MODULE := $(LOCAL_DIR)
4
5 ENABLE_THUMB := false
6
7 ARCH := arm
8 CPU := generic
9
10 INCLUDES += \
11         -I$(LOCAL_DIR)/include \
12         -I$(LOCAL_DIR)/include/platform/$(PLATFORM_SOC) \
13         -I$(LOCAL_DIR)/common \
14         -I../lib \
15         -Isecure_monitor/platform/tegra/include
16
17 COMMON_DIR := $(LOCAL_DIR)/common
18 PLATFORM_SOC_DIR := $(LOCAL_DIR)/$(PLATFORM_SOC)
19
20 MODULE_SRCS += \
21         $(COMMON_DIR)/cpu_early_init.S  \
22         $(COMMON_DIR)/fuse.c            \
23         $(COMMON_DIR)/tz.c              \
24         $(COMMON_DIR)/cpu.c             \
25         $(COMMON_DIR)/platform.c        \
26         $(COMMON_DIR)/timer.c           \
27         $(COMMON_DIR)/interrupts.c      \
28         $(COMMON_DIR)/memory.c          \
29         $(COMMON_DIR)/debug.c           \
30
31 MODULE_DEPS += \
32         lib/version
33
34 # The code within the monitor dir builds to a lib that's either
35 # linked into a mon.bin (when MONITOR_BIN is true) or into the
36 # secureos when it's not.
37 #
38 # Routines in the monitor dir are those that restore HW state.
39 # In particular, SOC level state is restored there, while CPU
40 # state was handled by lib/monitor or boot_secondary.S,
41 #
42 # In platform/tegra/common, there are still memory and interrupt
43 # routines, but they're only called for secureos handling
44 # (i.e. aren't part of the monitor or for restoring HW state).
45
46 # Add power management into the secureos build if
47 # there's not a separate monitor being built.
48 ifeq ($(MONITOR_BIN),)
49 MODULE_SRCS += \
50         $(COMMON_DIR)/pm.c      \
51         $(COMMON_DIR)/boot_secondary.S
52 endif
53
54 include $(PLATFORM_SOC_DIR)/rules.mk
55
56 # Disable all prints for release builds, only CRITICAL prints will be
57 # printed in release builds. Change the value of DEBUG in else block
58 # to 1->INFO and 2->SPEW prints in debug builds.
59 ifeq ($(TARGET_BUILD_TYPE), release)
60         DEBUG := 0
61 else
62         DEBUG := 1
63 endif
64
65 # relocate image to provided physaddr via MMU
66 ARM_USE_MMU_RELOC := true
67
68 # enable use of CPU caching
69 ARM_USE_CPU_CACHING := true
70
71 DEFINES += VMEMBASE=$(VMEMBASE) \
72         VMEMSIZE=$(VMEMSIZE) \
73         DEBUG=$(DEBUG) \
74         WITH_CPU_EARLY_INIT=1
75
76 # use a two segment memory layout, where all of the read-only sections
77 # of the binary reside in rom, and the read/write are in memory. The
78 # ROMBASE, VMEMBASE, and VMEMSIZE make variables are required to be set
79 # for the linker script to be generated properly.
80 #
81 LINKER_SCRIPT += \
82         $(BUILDDIR)/system-onesegment.ld
83
84 include make/module.mk