Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Arm Trusted Firmware
Commits
81602a97
Commit
81602a97
authored
May 22, 2017
by
danh-arm
Committed by
GitHub
May 22, 2017
Browse files
Merge pull request #939 from dp-arm/dp/AArch32_tbbr
Add TBBR and FWU support for AArch32
parents
ac7b0da6
6ba71d65
Changes
29
Hide whitespace changes
Inline
Side-by-side
lib/compiler-rt/builtins/int_math.h
0 → 100644
View file @
81602a97
/* ===-- int_math.h - internal math inlines ---------------------------------===
*
* The LLVM Compiler Infrastructure
*
* This file is dual licensed under the MIT and the University of Illinois Open
* Source Licenses. See LICENSE.TXT for details.
*
* ===-----------------------------------------------------------------------===
*
* This file is not part of the interface of this library.
*
* This file defines substitutes for the libm functions used in some of the
* compiler-rt implementations, defined in such a way that there is not a direct
* dependency on libm or math.h. Instead, we use the compiler builtin versions
* where available. This reduces our dependencies on the system SDK by foisting
* the responsibility onto the compiler.
*
* ===-----------------------------------------------------------------------===
*/
#ifndef INT_MATH_H
#define INT_MATH_H
#ifndef __has_builtin
# define __has_builtin(x) 0
#endif
#if defined(_MSC_VER) && !defined(__clang__)
#include <math.h>
#include <stdlib.h>
#include <ymath.h>
#endif
#if defined(_MSC_VER) && !defined(__clang__)
#define CRT_INFINITY INFINITY
#else
#define CRT_INFINITY __builtin_huge_valf()
#endif
#if defined(_MSC_VER) && !defined(__clang__)
#define crt_isfinite(x) _finite((x))
#define crt_isinf(x) !_finite((x))
#define crt_isnan(x) _isnan((x))
#else
/* Define crt_isfinite in terms of the builtin if available, otherwise provide
* an alternate version in terms of our other functions. This supports some
* versions of GCC which didn't have __builtin_isfinite.
*/
#if __has_builtin(__builtin_isfinite)
# define crt_isfinite(x) __builtin_isfinite((x))
#elif defined(__GNUC__)
# define crt_isfinite(x) \
__extension__(({ \
__typeof((x)) x_ = (x); \
!crt_isinf(x_) && !crt_isnan(x_); \
}))
#else
# error "Do not know how to check for infinity"
#endif
/* __has_builtin(__builtin_isfinite) */
#define crt_isinf(x) __builtin_isinf((x))
#define crt_isnan(x) __builtin_isnan((x))
#endif
/* _MSC_VER */
#if defined(_MSC_VER) && !defined(__clang__)
#define crt_copysign(x, y) copysign((x), (y))
#define crt_copysignf(x, y) copysignf((x), (y))
#define crt_copysignl(x, y) copysignl((x), (y))
#else
#define crt_copysign(x, y) __builtin_copysign((x), (y))
#define crt_copysignf(x, y) __builtin_copysignf((x), (y))
#define crt_copysignl(x, y) __builtin_copysignl((x), (y))
#endif
#if defined(_MSC_VER) && !defined(__clang__)
#define crt_fabs(x) fabs((x))
#define crt_fabsf(x) fabsf((x))
#define crt_fabsl(x) fabs((x))
#else
#define crt_fabs(x) __builtin_fabs((x))
#define crt_fabsf(x) __builtin_fabsf((x))
#define crt_fabsl(x) __builtin_fabsl((x))
#endif
#if defined(_MSC_VER) && !defined(__clang__)
#define crt_fmax(x, y) __max((x), (y))
#define crt_fmaxf(x, y) __max((x), (y))
#define crt_fmaxl(x, y) __max((x), (y))
#else
#define crt_fmax(x, y) __builtin_fmax((x), (y))
#define crt_fmaxf(x, y) __builtin_fmaxf((x), (y))
#define crt_fmaxl(x, y) __builtin_fmaxl((x), (y))
#endif
#if defined(_MSC_VER) && !defined(__clang__)
#define crt_logb(x) logb((x))
#define crt_logbf(x) logbf((x))
#define crt_logbl(x) logbl((x))
#else
#define crt_logb(x) __builtin_logb((x))
#define crt_logbf(x) __builtin_logbf((x))
#define crt_logbl(x) __builtin_logbl((x))
#endif
#if defined(_MSC_VER) && !defined(__clang__)
#define crt_scalbn(x, y) scalbn((x), (y))
#define crt_scalbnf(x, y) scalbnf((x), (y))
#define crt_scalbnl(x, y) scalbnl((x), (y))
#else
#define crt_scalbn(x, y) __builtin_scalbn((x), (y))
#define crt_scalbnf(x, y) __builtin_scalbnf((x), (y))
#define crt_scalbnl(x, y) __builtin_scalbnl((x), (y))
#endif
#endif
/* INT_MATH_H */
lib/compiler-rt/builtins/int_types.h
0 → 100644
View file @
81602a97
/* ===-- int_lib.h - configuration header for compiler-rt -----------------===
*
* The LLVM Compiler Infrastructure
*
* This file is dual licensed under the MIT and the University of Illinois Open
* Source Licenses. See LICENSE.TXT for details.
*
* ===----------------------------------------------------------------------===
*
* This file is not part of the interface of this library.
*
* This file defines various standard types, most importantly a number of unions
* used to access parts of larger types.
*
* ===----------------------------------------------------------------------===
*/
#ifndef INT_TYPES_H
#define INT_TYPES_H
#include "int_endianness.h"
/* si_int is defined in Linux sysroot's asm-generic/siginfo.h */
#ifdef si_int
#undef si_int
#endif
typedef
int
si_int
;
typedef
unsigned
su_int
;
typedef
long
long
di_int
;
typedef
unsigned
long
long
du_int
;
typedef
union
{
di_int
all
;
struct
{
#if _YUGA_LITTLE_ENDIAN
su_int
low
;
si_int
high
;
#else
si_int
high
;
su_int
low
;
#endif
/* _YUGA_LITTLE_ENDIAN */
}
s
;
}
dwords
;
typedef
union
{
du_int
all
;
struct
{
#if _YUGA_LITTLE_ENDIAN
su_int
low
;
su_int
high
;
#else
su_int
high
;
su_int
low
;
#endif
/* _YUGA_LITTLE_ENDIAN */
}
s
;
}
udwords
;
/* MIPS64 issue: PR 20098 */
#if (defined(__LP64__) || defined(__wasm__)) && \
!(defined(__mips__) && defined(__clang__))
#define CRT_HAS_128BIT
#endif
#ifdef CRT_HAS_128BIT
typedef
int
ti_int
__attribute__
((
mode
(
TI
)));
typedef
unsigned
tu_int
__attribute__
((
mode
(
TI
)));
typedef
union
{
ti_int
all
;
struct
{
#if _YUGA_LITTLE_ENDIAN
du_int
low
;
di_int
high
;
#else
di_int
high
;
du_int
low
;
#endif
/* _YUGA_LITTLE_ENDIAN */
}
s
;
}
twords
;
typedef
union
{
tu_int
all
;
struct
{
#if _YUGA_LITTLE_ENDIAN
du_int
low
;
du_int
high
;
#else
du_int
high
;
du_int
low
;
#endif
/* _YUGA_LITTLE_ENDIAN */
}
s
;
}
utwords
;
static
__inline
ti_int
make_ti
(
di_int
h
,
di_int
l
)
{
twords
r
;
r
.
s
.
high
=
h
;
r
.
s
.
low
=
l
;
return
r
.
all
;
}
static
__inline
tu_int
make_tu
(
du_int
h
,
du_int
l
)
{
utwords
r
;
r
.
s
.
high
=
h
;
r
.
s
.
low
=
l
;
return
r
.
all
;
}
#endif
/* CRT_HAS_128BIT */
typedef
union
{
su_int
u
;
float
f
;
}
float_bits
;
typedef
union
{
udwords
u
;
double
f
;
}
double_bits
;
typedef
struct
{
#if _YUGA_LITTLE_ENDIAN
udwords
low
;
udwords
high
;
#else
udwords
high
;
udwords
low
;
#endif
/* _YUGA_LITTLE_ENDIAN */
}
uqwords
;
typedef
union
{
uqwords
u
;
long
double
f
;
}
long_double_bits
;
#if __STDC_VERSION__ >= 199901L
typedef
float
_Complex
Fcomplex
;
typedef
double
_Complex
Dcomplex
;
typedef
long
double
_Complex
Lcomplex
;
#define COMPLEX_REAL(x) __real__(x)
#define COMPLEX_IMAGINARY(x) __imag__(x)
#else
typedef
struct
{
float
real
,
imaginary
;
}
Fcomplex
;
typedef
struct
{
double
real
,
imaginary
;
}
Dcomplex
;
typedef
struct
{
long
double
real
,
imaginary
;
}
Lcomplex
;
#define COMPLEX_REAL(x) (x).real
#define COMPLEX_IMAGINARY(x) (x).imaginary
#endif
#endif
/* INT_TYPES_H */
lib/compiler-rt/builtins/int_util.c
0 → 100644
View file @
81602a97
/* ===-- int_util.c - Implement internal utilities --------------------------===
*
* The LLVM Compiler Infrastructure
*
* This file is dual licensed under the MIT and the University of Illinois Open
* Source Licenses. See LICENSE.TXT for details.
*
* ===----------------------------------------------------------------------===
*/
#include "int_lib.h"
#include "int_util.h"
/* NOTE: The definitions in this file are declared weak because we clients to be
* able to arbitrarily package individual functions into separate .a files. If
* we did not declare these weak, some link situations might end up seeing
* duplicate strong definitions of the same symbol.
*
* We can't use this solution for kernel use (which may not support weak), but
* currently expect that when built for kernel use all the functionality is
* packaged into a single library.
*/
#ifdef KERNEL_USE
NORETURN
extern
void
panic
(
const
char
*
,
...);
#ifndef _WIN32
__attribute__
((
visibility
(
"hidden"
)))
#endif
void
compilerrt_abort_impl
(
const
char
*
file
,
int
line
,
const
char
*
function
)
{
panic
(
"%s:%d: abort in %s"
,
file
,
line
,
function
);
}
#elif __APPLE__
/* from libSystem.dylib */
NORETURN
extern
void
__assert_rtn
(
const
char
*
func
,
const
char
*
file
,
int
line
,
const
char
*
message
);
#ifndef _WIN32
__attribute__
((
weak
))
__attribute__
((
visibility
(
"hidden"
)))
#endif
void
compilerrt_abort_impl
(
const
char
*
file
,
int
line
,
const
char
*
function
)
{
__assert_rtn
(
function
,
file
,
line
,
"libcompiler_rt abort"
);
}
#else
/* Get the system definition of abort() */
#include <stdlib.h>
#ifndef _WIN32
__attribute__
((
weak
))
__attribute__
((
visibility
(
"hidden"
)))
#endif
void
compilerrt_abort_impl
(
const
char
*
file
,
int
line
,
const
char
*
function
)
{
abort
();
}
#endif
lib/compiler-rt/builtins/int_util.h
0 → 100644
View file @
81602a97
/* ===-- int_util.h - internal utility functions ----------------------------===
*
* The LLVM Compiler Infrastructure
*
* This file is dual licensed under the MIT and the University of Illinois Open
* Source Licenses. See LICENSE.TXT for details.
*
* ===-----------------------------------------------------------------------===
*
* This file is not part of the interface of this library.
*
* This file defines non-inline utilities which are available for use in the
* library. The function definitions themselves are all contained in int_util.c
* which will always be compiled into any compiler-rt library.
*
* ===-----------------------------------------------------------------------===
*/
#ifndef INT_UTIL_H
#define INT_UTIL_H
/** \brief Trigger a program abort (or panic for kernel code). */
#define compilerrt_abort() compilerrt_abort_impl(__FILE__, __LINE__, __func__)
NORETURN
void
compilerrt_abort_impl
(
const
char
*
file
,
int
line
,
const
char
*
function
);
#define COMPILE_TIME_ASSERT(expr) COMPILE_TIME_ASSERT1(expr, __COUNTER__)
#define COMPILE_TIME_ASSERT1(expr, cnt) COMPILE_TIME_ASSERT2(expr, cnt)
#define COMPILE_TIME_ASSERT2(expr, cnt) \
typedef char ct_assert_##cnt[(expr) ? 1 : -1] UNUSED
#endif
/* INT_UTIL_H */
lib/compiler-rt/builtins/udivmoddi4.c
0 → 100644
View file @
81602a97
/* ===-- udivmoddi4.c - Implement __udivmoddi4 -----------------------------===
*
* The LLVM Compiler Infrastructure
*
* This file is dual licensed under the MIT and the University of Illinois Open
* Source Licenses. See LICENSE.TXT for details.
*
* ===----------------------------------------------------------------------===
*
* This file implements __udivmoddi4 for the compiler_rt library.
*
* ===----------------------------------------------------------------------===
*/
#include "int_lib.h"
/* Effects: if rem != 0, *rem = a % b
* Returns: a / b
*/
/* Translated from Figure 3-40 of The PowerPC Compiler Writer's Guide */
COMPILER_RT_ABI
du_int
__udivmoddi4
(
du_int
a
,
du_int
b
,
du_int
*
rem
)
{
const
unsigned
n_uword_bits
=
sizeof
(
su_int
)
*
CHAR_BIT
;
const
unsigned
n_udword_bits
=
sizeof
(
du_int
)
*
CHAR_BIT
;
udwords
n
;
n
.
all
=
a
;
udwords
d
;
d
.
all
=
b
;
udwords
q
;
udwords
r
;
unsigned
sr
;
/* special cases, X is unknown, K != 0 */
if
(
n
.
s
.
high
==
0
)
{
if
(
d
.
s
.
high
==
0
)
{
/* 0 X
* ---
* 0 X
*/
if
(
rem
)
*
rem
=
n
.
s
.
low
%
d
.
s
.
low
;
return
n
.
s
.
low
/
d
.
s
.
low
;
}
/* 0 X
* ---
* K X
*/
if
(
rem
)
*
rem
=
n
.
s
.
low
;
return
0
;
}
/* n.s.high != 0 */
if
(
d
.
s
.
low
==
0
)
{
if
(
d
.
s
.
high
==
0
)
{
/* K X
* ---
* 0 0
*/
if
(
rem
)
*
rem
=
n
.
s
.
high
%
d
.
s
.
low
;
return
n
.
s
.
high
/
d
.
s
.
low
;
}
/* d.s.high != 0 */
if
(
n
.
s
.
low
==
0
)
{
/* K 0
* ---
* K 0
*/
if
(
rem
)
{
r
.
s
.
high
=
n
.
s
.
high
%
d
.
s
.
high
;
r
.
s
.
low
=
0
;
*
rem
=
r
.
all
;
}
return
n
.
s
.
high
/
d
.
s
.
high
;
}
/* K K
* ---
* K 0
*/
if
((
d
.
s
.
high
&
(
d
.
s
.
high
-
1
))
==
0
)
/* if d is a power of 2 */
{
if
(
rem
)
{
r
.
s
.
low
=
n
.
s
.
low
;
r
.
s
.
high
=
n
.
s
.
high
&
(
d
.
s
.
high
-
1
);
*
rem
=
r
.
all
;
}
return
n
.
s
.
high
>>
__builtin_ctz
(
d
.
s
.
high
);
}
/* K K
* ---
* K 0
*/
sr
=
__builtin_clz
(
d
.
s
.
high
)
-
__builtin_clz
(
n
.
s
.
high
);
/* 0 <= sr <= n_uword_bits - 2 or sr large */
if
(
sr
>
n_uword_bits
-
2
)
{
if
(
rem
)
*
rem
=
n
.
all
;
return
0
;
}
++
sr
;
/* 1 <= sr <= n_uword_bits - 1 */
/* q.all = n.all << (n_udword_bits - sr); */
q
.
s
.
low
=
0
;
q
.
s
.
high
=
n
.
s
.
low
<<
(
n_uword_bits
-
sr
);
/* r.all = n.all >> sr; */
r
.
s
.
high
=
n
.
s
.
high
>>
sr
;
r
.
s
.
low
=
(
n
.
s
.
high
<<
(
n_uword_bits
-
sr
))
|
(
n
.
s
.
low
>>
sr
);
}
else
/* d.s.low != 0 */
{
if
(
d
.
s
.
high
==
0
)
{
/* K X
* ---
* 0 K
*/
if
((
d
.
s
.
low
&
(
d
.
s
.
low
-
1
))
==
0
)
/* if d is a power of 2 */
{
if
(
rem
)
*
rem
=
n
.
s
.
low
&
(
d
.
s
.
low
-
1
);
if
(
d
.
s
.
low
==
1
)
return
n
.
all
;
sr
=
__builtin_ctz
(
d
.
s
.
low
);
q
.
s
.
high
=
n
.
s
.
high
>>
sr
;
q
.
s
.
low
=
(
n
.
s
.
high
<<
(
n_uword_bits
-
sr
))
|
(
n
.
s
.
low
>>
sr
);
return
q
.
all
;
}
/* K X
* ---
* 0 K
*/
sr
=
1
+
n_uword_bits
+
__builtin_clz
(
d
.
s
.
low
)
-
__builtin_clz
(
n
.
s
.
high
);
/* 2 <= sr <= n_udword_bits - 1
* q.all = n.all << (n_udword_bits - sr);
* r.all = n.all >> sr;
*/
if
(
sr
==
n_uword_bits
)
{
q
.
s
.
low
=
0
;
q
.
s
.
high
=
n
.
s
.
low
;
r
.
s
.
high
=
0
;
r
.
s
.
low
=
n
.
s
.
high
;
}
else
if
(
sr
<
n_uword_bits
)
// 2 <= sr <= n_uword_bits - 1
{
q
.
s
.
low
=
0
;
q
.
s
.
high
=
n
.
s
.
low
<<
(
n_uword_bits
-
sr
);
r
.
s
.
high
=
n
.
s
.
high
>>
sr
;
r
.
s
.
low
=
(
n
.
s
.
high
<<
(
n_uword_bits
-
sr
))
|
(
n
.
s
.
low
>>
sr
);
}
else
// n_uword_bits + 1 <= sr <= n_udword_bits - 1
{
q
.
s
.
low
=
n
.
s
.
low
<<
(
n_udword_bits
-
sr
);
q
.
s
.
high
=
(
n
.
s
.
high
<<
(
n_udword_bits
-
sr
))
|
(
n
.
s
.
low
>>
(
sr
-
n_uword_bits
));
r
.
s
.
high
=
0
;
r
.
s
.
low
=
n
.
s
.
high
>>
(
sr
-
n_uword_bits
);
}
}
else
{
/* K X
* ---
* K K
*/
sr
=
__builtin_clz
(
d
.
s
.
high
)
-
__builtin_clz
(
n
.
s
.
high
);
/* 0 <= sr <= n_uword_bits - 1 or sr large */
if
(
sr
>
n_uword_bits
-
1
)
{
if
(
rem
)
*
rem
=
n
.
all
;
return
0
;
}
++
sr
;
/* 1 <= sr <= n_uword_bits */
/* q.all = n.all << (n_udword_bits - sr); */
q
.
s
.
low
=
0
;
if
(
sr
==
n_uword_bits
)
{
q
.
s
.
high
=
n
.
s
.
low
;
r
.
s
.
high
=
0
;
r
.
s
.
low
=
n
.
s
.
high
;
}
else
{
q
.
s
.
high
=
n
.
s
.
low
<<
(
n_uword_bits
-
sr
);
r
.
s
.
high
=
n
.
s
.
high
>>
sr
;
r
.
s
.
low
=
(
n
.
s
.
high
<<
(
n_uword_bits
-
sr
))
|
(
n
.
s
.
low
>>
sr
);
}
}
}
/* Not a special case
* q and r are initialized with:
* q.all = n.all << (n_udword_bits - sr);
* r.all = n.all >> sr;
* 1 <= sr <= n_udword_bits - 1
*/
su_int
carry
=
0
;
for
(;
sr
>
0
;
--
sr
)
{
/* r:q = ((r:q) << 1) | carry */
r
.
s
.
high
=
(
r
.
s
.
high
<<
1
)
|
(
r
.
s
.
low
>>
(
n_uword_bits
-
1
));
r
.
s
.
low
=
(
r
.
s
.
low
<<
1
)
|
(
q
.
s
.
high
>>
(
n_uword_bits
-
1
));
q
.
s
.
high
=
(
q
.
s
.
high
<<
1
)
|
(
q
.
s
.
low
>>
(
n_uword_bits
-
1
));
q
.
s
.
low
=
(
q
.
s
.
low
<<
1
)
|
carry
;
/* carry = 0;
* if (r.all >= d.all)
* {
* r.all -= d.all;
* carry = 1;
* }
*/
const
di_int
s
=
(
di_int
)(
d
.
all
-
r
.
all
-
1
)
>>
(
n_udword_bits
-
1
);
carry
=
s
&
1
;
r
.
all
-=
d
.
all
&
s
;
}
q
.
all
=
(
q
.
all
<<
1
)
|
carry
;
if
(
rem
)
*
rem
=
r
.
all
;
return
q
.
all
;
}
lib/compiler-rt/compiler-rt.mk
0 → 100644
View file @
81602a97
#
# Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# Neither the name of ARM nor the names of its contributors may be used
# to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
ifeq
(${ARCH},aarch32)
COMPILER_RT_SRCS
:=
lib/compiler-rt/builtins/arm/aeabi_uldivmod.S
\
lib/compiler-rt/builtins/udivmoddi4.c
endif
make_helpers/tbbr/tbbr_tools.mk
View file @
81602a97
...
...
@@ -75,6 +75,7 @@ ifneq (${SCP_BL2},)
$(eval
$(call
FIP_ADD_PAYLOAD,${BUILD_PLAT}/scp_fw_key.crt,--scp-fw-key-cert))
endif
ifeq
(${ARCH},aarch64)
# Add the BL31 CoT (key cert + img cert + image)
$(if
${BL31},$(eval
$(call
CERT_ADD_CMD_OPT,${BL31},--soc-fw,true)),\
$(eval
$(call
CERT_ADD_CMD_OPT,$(call
IMG_BIN,31),--soc-fw,true)))
...
...
@@ -83,6 +84,7 @@ $(eval $(call CERT_ADD_CMD_OPT,${BUILD_PLAT}/soc_fw_content.crt,--soc-fw-cert))
$(eval
$(call
CERT_ADD_CMD_OPT,${BUILD_PLAT}/soc_fw_key.crt,--soc-fw-key-cert))
$(eval
$(call
FIP_ADD_PAYLOAD,${BUILD_PLAT}/soc_fw_content.crt,--soc-fw-cert))
$(eval
$(call
FIP_ADD_PAYLOAD,${BUILD_PLAT}/soc_fw_key.crt,--soc-fw-key-cert))
endif
# Add the BL32 CoT (key cert + img cert + image)
ifeq
(${NEED_BL32},yes)
...
...
plat/arm/board/fvp/platform.mk
View file @
81602a97
...
...
@@ -137,5 +137,9 @@ ifneq (${ENABLE_STACK_PROTECTOR},0)
PLAT_BL_COMMON_SOURCES
+=
plat/arm/board/fvp/fvp_stack_protector.c
endif
ifeq
(${ARCH},aarch32)
NEED_BL32
:=
yes
endif
include
plat/arm/board/common/board_common.mk
include
plat/arm/common/arm_common.mk
plat/arm/common/arm_bl2u_setup.c
View file @
81602a97
...
...
@@ -68,7 +68,11 @@ void arm_bl2u_plat_arch_setup(void)
BL_COHERENT_RAM_END
#endif
);
#ifdef AARCH32
enable_mmu_secure
(
0
);
#else
enable_mmu_el1
(
0
);
#endif
}
void
bl2u_plat_arch_setup
(
void
)
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment