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
1d7dc63c
Commit
1d7dc63c
authored
Jul 23, 2019
by
Soby Mathew
Committed by
TrustedFirmware Code Review
Jul 23, 2019
Browse files
Merge "Enable MTE support unilaterally for Normal World" into integration
parents
b514ee86
b7e398d6
Changes
3
Show whitespace changes
Inline
Side-by-side
include/arch/aarch64/arch.h
View file @
1d7dc63c
...
@@ -219,6 +219,13 @@
...
@@ -219,6 +219,13 @@
#define BTI_IMPLEMENTED ULL(1)
/* The BTI mechanism is implemented */
#define BTI_IMPLEMENTED ULL(1)
/* The BTI mechanism is implemented */
#define ID_AA64PFR1_EL1_MTE_SHIFT U(8)
#define ID_AA64PFR1_EL1_MTE_MASK ULL(0xf)
#define MTE_UNIMPLEMENTED ULL(0)
#define MTE_IMPLEMENTED_EL0 ULL(1)
/* MTE is only implemented at EL0 */
#define MTE_IMPLEMENTED_ELX ULL(2)
/* MTE is implemented at all ELs */
/* ID_PFR1_EL1 definitions */
/* ID_PFR1_EL1 definitions */
#define ID_PFR1_VIRTEXT_SHIFT U(12)
#define ID_PFR1_VIRTEXT_SHIFT U(12)
#define ID_PFR1_VIRTEXT_MASK U(0xf)
#define ID_PFR1_VIRTEXT_MASK U(0xf)
...
@@ -278,6 +285,7 @@
...
@@ -278,6 +285,7 @@
/* SCR definitions */
/* SCR definitions */
#define SCR_RES1_BITS ((U(1) << 4) | (U(1) << 5))
#define SCR_RES1_BITS ((U(1) << 4) | (U(1) << 5))
#define SCR_ATA_BIT (U(1) << 26)
#define SCR_FIEN_BIT (U(1) << 21)
#define SCR_FIEN_BIT (U(1) << 21)
#define SCR_API_BIT (U(1) << 17)
#define SCR_API_BIT (U(1) << 17)
#define SCR_APK_BIT (U(1) << 16)
#define SCR_APK_BIT (U(1) << 16)
...
...
include/arch/aarch64/arch_features.h
View file @
1d7dc63c
...
@@ -54,4 +54,10 @@ static inline bool is_armv8_5_bti_present(void)
...
@@ -54,4 +54,10 @@ static inline bool is_armv8_5_bti_present(void)
ID_AA64PFR1_EL1_BT_MASK
)
==
BTI_IMPLEMENTED
;
ID_AA64PFR1_EL1_BT_MASK
)
==
BTI_IMPLEMENTED
;
}
}
static
inline
unsigned
int
get_armv8_5_mte_support
(
void
)
{
return
((
read_id_aa64pfr1_el1
()
>>
ID_AA64PFR1_EL1_MTE_SHIFT
)
&
ID_AA64PFR1_EL1_MTE_MASK
);
}
#endif
/* ARCH_FEATURES_H */
#endif
/* ARCH_FEATURES_H */
lib/el3_runtime/aarch64/context_mgmt.c
View file @
1d7dc63c
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
#include <arch.h>
#include <arch.h>
#include <arch_helpers.h>
#include <arch_helpers.h>
#include <arch_features.h>
#include <bl31/interrupt_mgmt.h>
#include <bl31/interrupt_mgmt.h>
#include <common/bl_common.h>
#include <common/bl_common.h>
#include <context.h>
#include <context.h>
...
@@ -136,6 +137,18 @@ void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep)
...
@@ -136,6 +137,18 @@ void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep)
scr_el3
|=
SCR_API_BIT
|
SCR_APK_BIT
;
scr_el3
|=
SCR_API_BIT
|
SCR_APK_BIT
;
#endif
/* !CTX_INCLUDE_PAUTH_REGS */
#endif
/* !CTX_INCLUDE_PAUTH_REGS */
unsigned
int
mte
=
get_armv8_5_mte_support
();
/*
* Enable MTE support unilaterally for normal world if the CPU supports
* it.
*/
if
(
mte
!=
MTE_UNIMPLEMENTED
)
{
if
(
security_state
==
NON_SECURE
)
{
scr_el3
|=
SCR_ATA_BIT
;
}
}
#ifdef IMAGE_BL31
#ifdef IMAGE_BL31
/*
/*
* SCR_EL3.IRQ, SCR_EL3.FIQ: Enable the physical FIQ and IRQ routing as
* SCR_EL3.IRQ, SCR_EL3.FIQ: Enable the physical FIQ and IRQ routing as
...
...
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