mirror of
https://github.com/CTCaer/switch-l4t-atf.git
synced 2025-02-07 19:06:52 +00:00
Introduce IS_IN_ELX() macros
The goal of these macros is to improve code readability by providing a concise way to check whether we are running in the expected exception level. Change-Id: If9aebadfb6299a5196e9a582b442f0971d9909b1
This commit is contained in:
parent
60bc4bbd0b
commit
b3254e8547
@ -106,9 +106,7 @@ void __dead2 raise_el(aapcs64_params_t *args)
|
||||
*/
|
||||
void __dead2 change_el(el_change_info_t *info)
|
||||
{
|
||||
unsigned long current_el = read_current_el();
|
||||
|
||||
if (GET_EL(current_el) == MODE_EL3) {
|
||||
if (IS_IN_EL3()) {
|
||||
/*
|
||||
* We can go anywhere from EL3. So find where.
|
||||
* TODO: Lots to do if we are going non-secure.
|
||||
@ -551,7 +549,6 @@ void __dead2 run_image(unsigned long entrypoint,
|
||||
void *second_arg)
|
||||
{
|
||||
el_change_info_t run_image_info;
|
||||
unsigned long current_el = read_current_el();
|
||||
|
||||
/* Tell next EL what we want done */
|
||||
run_image_info.args.arg0 = RUN_IMAGE;
|
||||
@ -565,7 +562,7 @@ void __dead2 run_image(unsigned long entrypoint,
|
||||
* to jump to a higher EL and issue an SMC. Contents of argY
|
||||
* will go into the general purpose register xY e.g. arg0->x0
|
||||
*/
|
||||
if (GET_EL(current_el) == MODE_EL3) {
|
||||
if (IS_IN_EL3()) {
|
||||
run_image_info.args.arg1 = (unsigned long) first_arg;
|
||||
run_image_info.args.arg2 = (unsigned long) second_arg;
|
||||
} else {
|
||||
|
@ -264,5 +264,10 @@ extern void write_cpuectlr(unsigned long);
|
||||
extern void write_cptr_el2(unsigned long);
|
||||
extern void write_cptr_el3(unsigned long);
|
||||
|
||||
#define IS_IN_EL(x) \
|
||||
(GET_EL(read_current_el()) == MODE_EL##x)
|
||||
|
||||
#define IS_IN_EL1() IS_IN_EL(1)
|
||||
#define IS_IN_EL3() IS_IN_EL(3)
|
||||
|
||||
#endif /* __ARCH_HELPERS_H__ */
|
||||
|
@ -52,7 +52,6 @@ static unsigned long platform_config[CONFIG_LIMIT];
|
||||
void enable_mmu()
|
||||
{
|
||||
unsigned long mair, tcr, ttbr, sctlr;
|
||||
unsigned long current_el = read_current_el();
|
||||
|
||||
/* Set the attributes in the right indices of the MAIR */
|
||||
mair = MAIR_ATTR_SET(ATTR_DEVICE, ATTR_DEVICE_INDEX);
|
||||
@ -68,7 +67,7 @@ void enable_mmu()
|
||||
/* Set TTBR bits as well */
|
||||
ttbr = (unsigned long) l1_xlation_table;
|
||||
|
||||
if (GET_EL(current_el) == MODE_EL3) {
|
||||
if (IS_IN_EL3()) {
|
||||
assert((read_sctlr_el3() & SCTLR_M_BIT) == 0);
|
||||
|
||||
write_mair_el3(mair);
|
||||
|
Loading…
x
Reference in New Issue
Block a user