blob: 132ab6f794e9b5a923f458af88df585d1836a83d [file] [log] [blame]
Soby Mathew802f8652014-08-14 16:19:29 +01001#
Sandrine Bailleuxd4817592016-01-13 14:57:38 +00002# Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved.
Soby Mathew802f8652014-08-14 16:19:29 +01003#
4# Redistribution and use in source and binary forms, with or without
5# modification, are permitted provided that the following conditions are met:
6#
7# Redistributions of source code must retain the above copyright notice, this
8# list of conditions and the following disclaimer.
9#
10# Redistributions in binary form must reproduce the above copyright notice,
11# this list of conditions and the following disclaimer in the documentation
12# and/or other materials provided with the distribution.
13#
14# Neither the name of ARM nor the names of its contributors may be used
15# to endorse or promote products derived from this software without specific
16# prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
22# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28# POSSIBILITY OF SUCH DAMAGE.
29#
30
Soby Mathew937488b2014-09-22 14:13:34 +010031# Cortex A57 specific optimisation to skip L1 cache flush when
32# cluster is powered down.
33SKIP_A57_L1_FLUSH_PWR_DWN ?=0
34
Sandrine Bailleuxd4817592016-01-13 14:57:38 +000035# Flag to disable the cache non-temporal hint.
36# It is enabled by default.
37A53_DISABLE_NON_TEMPORAL_HINT ?=1
38
39# Flag to disable the cache non-temporal hint.
40# It is enabled by default.
41A57_DISABLE_NON_TEMPORAL_HINT ?=1
42
Soby Mathew937488b2014-09-22 14:13:34 +010043# Process SKIP_A57_L1_FLUSH_PWR_DWN flag
44$(eval $(call assert_boolean,SKIP_A57_L1_FLUSH_PWR_DWN))
45$(eval $(call add_define,SKIP_A57_L1_FLUSH_PWR_DWN))
46
Sandrine Bailleuxd4817592016-01-13 14:57:38 +000047# Process A53_DISABLE_NON_TEMPORAL_HINT flag
48$(eval $(call assert_boolean,A53_DISABLE_NON_TEMPORAL_HINT))
49$(eval $(call add_define,A53_DISABLE_NON_TEMPORAL_HINT))
50
51# Process A57_DISABLE_NON_TEMPORAL_HINT flag
52$(eval $(call assert_boolean,A57_DISABLE_NON_TEMPORAL_HINT))
53$(eval $(call add_define,A57_DISABLE_NON_TEMPORAL_HINT))
54
Soby Mathew937488b2014-09-22 14:13:34 +010055
Sandrine Bailleuxafa8a782016-04-14 12:59:42 +010056# CPU Errata Build flags.
57# These should be enabled by the platform if the erratum workaround needs to be
58# applied.
Soby Mathew802f8652014-08-14 16:19:29 +010059
Sandrine Bailleuxafa8a782016-04-14 12:59:42 +010060# Flag to apply erratum 826319 workaround during reset. This erratum applies
61# only to revision <= r0p2 of the Cortex A53 cpu.
developer4fceaca2015-07-29 20:55:31 +080062ERRATA_A53_826319 ?=0
63
Sandrine Bailleuxafa8a782016-04-14 12:59:42 +010064# Flag to apply erratum 836870 workaround during reset. This erratum applies
65# only to revision <= r0p3 of the Cortex A53 cpu. From r0p4 and onwards, this
Douglas Raillardc847f662017-02-15 17:38:43 +000066# erratum workaround is enabled by default in hardware.
developer4fceaca2015-07-29 20:55:31 +080067ERRATA_A53_836870 ?=0
68
Andre Przywara00eefd92016-10-06 16:54:53 +010069# Flag to apply errata 855873 during reset. This errata applies to all
70# revisions of the Cortex A53 CPU, but this firmware workaround only works
71# for revisions r0p3 and higher. Earlier revisions are taken care
72# of by the rich OS.
73ERRATA_A53_855873 ?=0
74
Sandrine Bailleuxafa8a782016-04-14 12:59:42 +010075# Flag to apply erratum 806969 workaround during reset. This erratum applies
76# only to revision r0p0 of the Cortex A57 cpu.
Soby Mathew802f8652014-08-14 16:19:29 +010077ERRATA_A57_806969 ?=0
78
Antonio Nino Diaz3f13c352017-02-24 11:39:22 +000079# Flag to apply erratum 813419 workaround during reset. This erratum applies
80# only to revision r0p0 of the Cortex A57 cpu.
81ERRATA_A57_813419 ?=0
82
Sandrine Bailleuxafa8a782016-04-14 12:59:42 +010083# Flag to apply erratum 813420 workaround during reset. This erratum applies
84# only to revision r0p0 of the Cortex A57 cpu.
Soby Mathew802f8652014-08-14 16:19:29 +010085ERRATA_A57_813420 ?=0
86
Sandrine Bailleuxa7e0c532016-04-14 13:32:31 +010087# Flag to apply erratum 826974 workaround during reset. This erratum applies
88# only to revision <= r1p1 of the Cortex A57 cpu.
89ERRATA_A57_826974 ?=0
90
Sandrine Bailleuxadcbd552016-04-14 14:24:13 +010091# Flag to apply erratum 826977 workaround during reset. This erratum applies
92# only to revision <= r1p1 of the Cortex A57 cpu.
93ERRATA_A57_826977 ?=0
94
Sandrine Bailleuxc11116f2016-04-14 14:04:48 +010095# Flag to apply erratum 828024 workaround during reset. This erratum applies
96# only to revision <= r1p1 of the Cortex A57 cpu.
97ERRATA_A57_828024 ?=0
98
Sandrine Bailleux48cbe852016-04-14 14:18:07 +010099# Flag to apply erratum 829520 workaround during reset. This erratum applies
100# only to revision <= r1p2 of the Cortex A57 cpu.
101ERRATA_A57_829520 ?=0
102
Sandrine Bailleux143ef1a2016-04-21 11:10:52 +0100103# Flag to apply erratum 833471 workaround during reset. This erratum applies
104# only to revision <= r1p2 of the Cortex A57 cpu.
105ERRATA_A57_833471 ?=0
106
developer4fceaca2015-07-29 20:55:31 +0800107# Process ERRATA_A53_826319 flag
108$(eval $(call assert_boolean,ERRATA_A53_826319))
109$(eval $(call add_define,ERRATA_A53_826319))
110
111# Process ERRATA_A53_836870 flag
112$(eval $(call assert_boolean,ERRATA_A53_836870))
113$(eval $(call add_define,ERRATA_A53_836870))
114
Andre Przywara00eefd92016-10-06 16:54:53 +0100115# Process ERRATA_A53_855873 flag
116$(eval $(call assert_boolean,ERRATA_A53_855873))
117$(eval $(call add_define,ERRATA_A53_855873))
118
Soby Mathew802f8652014-08-14 16:19:29 +0100119# Process ERRATA_A57_806969 flag
120$(eval $(call assert_boolean,ERRATA_A57_806969))
121$(eval $(call add_define,ERRATA_A57_806969))
122
Antonio Nino Diaz3f13c352017-02-24 11:39:22 +0000123# Process ERRATA_A57_813419 flag
124$(eval $(call assert_boolean,ERRATA_A57_813419))
125$(eval $(call add_define,ERRATA_A57_813419))
126
Soby Mathew802f8652014-08-14 16:19:29 +0100127# Process ERRATA_A57_813420 flag
128$(eval $(call assert_boolean,ERRATA_A57_813420))
129$(eval $(call add_define,ERRATA_A57_813420))
Sandrine Bailleuxa7e0c532016-04-14 13:32:31 +0100130
131# Process ERRATA_A57_826974 flag
132$(eval $(call assert_boolean,ERRATA_A57_826974))
133$(eval $(call add_define,ERRATA_A57_826974))
Sandrine Bailleuxc11116f2016-04-14 14:04:48 +0100134
Sandrine Bailleuxadcbd552016-04-14 14:24:13 +0100135# Process ERRATA_A57_826977 flag
136$(eval $(call assert_boolean,ERRATA_A57_826977))
137$(eval $(call add_define,ERRATA_A57_826977))
138
Sandrine Bailleuxc11116f2016-04-14 14:04:48 +0100139# Process ERRATA_A57_828024 flag
140$(eval $(call assert_boolean,ERRATA_A57_828024))
141$(eval $(call add_define,ERRATA_A57_828024))
Sandrine Bailleux48cbe852016-04-14 14:18:07 +0100142
143# Process ERRATA_A57_829520 flag
144$(eval $(call assert_boolean,ERRATA_A57_829520))
145$(eval $(call add_define,ERRATA_A57_829520))
Sandrine Bailleux143ef1a2016-04-21 11:10:52 +0100146
147# Process ERRATA_A57_833471 flag
148$(eval $(call assert_boolean,ERRATA_A57_833471))
149$(eval $(call add_define,ERRATA_A57_833471))