diff options
-rw-r--r-- | drivers/arm/ccn/ccn.c | 8 | ||||
-rw-r--r-- | include/plat/arm/common/plat_arm.h | 4 | ||||
-rw-r--r-- | lib/locks/bakery/bakery_lock_normal.c | 11 | ||||
-rw-r--r-- | plat/common/aarch32/platform_mp_stack.S | 6 |
4 files changed, 18 insertions, 11 deletions
diff --git a/drivers/arm/ccn/ccn.c b/drivers/arm/ccn/ccn.c index d739c6bf39..ca0618274d 100644 --- a/drivers/arm/ccn/ccn.c +++ b/drivers/arm/ccn/ccn.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-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: @@ -38,7 +38,7 @@ #include "ccn_private.h" static const ccn_desc_t *ccn_plat_desc; -#ifdef IMAGE_BL31 +#if defined(IMAGE_BL31) || (defined(AARCH32) && defined(IMAGE_BL32)) DEFINE_BAKERY_LOCK(ccn_lock); #endif @@ -285,7 +285,7 @@ static void ccn_snoop_dvm_do_op(unsigned long long rn_id_map, assert(ccn_plat_desc); assert(ccn_plat_desc->periphbase); -#ifdef IMAGE_BL31 +#if defined(IMAGE_BL31) || (defined(AARCH32) && defined(IMAGE_BL32)) bakery_lock_get(&ccn_lock); #endif start_region_id = region_id; @@ -305,7 +305,7 @@ static void ccn_snoop_dvm_do_op(unsigned long long rn_id_map, rn_id_map); } -#ifdef IMAGE_BL31 +#if defined(IMAGE_BL31) || (defined(AARCH32) && defined(IMAGE_BL32)) bakery_lock_release(&ccn_lock); #endif } diff --git a/include/plat/arm/common/plat_arm.h b/include/plat/arm/common/plat_arm.h index 697b917029..0b57ba8159 100644 --- a/include/plat/arm/common/plat_arm.h +++ b/include/plat/arm/common/plat_arm.h @@ -64,7 +64,7 @@ void arm_setup_page_tables(uintptr_t total_base, #endif ); -#ifdef IMAGE_BL31 +#if defined(IMAGE_BL31) || (defined(AARCH32) && defined(IMAGE_BL32)) /* * Use this macro to instantiate lock before it is used in below * arm_lock_xxx() macros @@ -88,7 +88,7 @@ void arm_setup_page_tables(uintptr_t total_base, #define arm_lock_get() #define arm_lock_release() -#endif /* IMAGE_BL31 */ +#endif /* defined(IMAGE_BL31) || (defined(AARCH32) && defined(IMAGE_BL32)) */ #if ARM_RECOM_STATE_ID_ENC /* diff --git a/lib/locks/bakery/bakery_lock_normal.c b/lib/locks/bakery/bakery_lock_normal.c index 5a2fb0717a..a3a6c002f3 100644 --- a/lib/locks/bakery/bakery_lock_normal.c +++ b/lib/locks/bakery/bakery_lock_normal.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-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: @@ -178,8 +178,11 @@ void bakery_lock_get(bakery_lock_t *lock) unsigned int their_bakery_data; me = plat_my_core_pos(); - +#ifdef AARCH32 + is_cached = read_sctlr() & SCTLR_C_BIT; +#else is_cached = read_sctlr_el3() & SCTLR_C_BIT; +#endif /* Get a ticket */ my_ticket = bakery_get_ticket(lock, me, is_cached); @@ -231,7 +234,11 @@ void bakery_lock_get(bakery_lock_t *lock) void bakery_lock_release(bakery_lock_t *lock) { bakery_info_t *my_bakery_info; +#ifdef AARCH32 + unsigned int is_cached = read_sctlr() & SCTLR_C_BIT; +#else unsigned int is_cached = read_sctlr_el3() & SCTLR_C_BIT; +#endif my_bakery_info = get_bakery_info(plat_my_core_pos(), lock); diff --git a/plat/common/aarch32/platform_mp_stack.S b/plat/common/aarch32/platform_mp_stack.S index a01543691f..0266e83c1a 100644 --- a/plat/common/aarch32/platform_mp_stack.S +++ b/plat/common/aarch32/platform_mp_stack.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2016-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: @@ -32,8 +32,8 @@ #include <asm_macros.S> #include <platform_def.h> - .globl plat_get_my_stack - .globl plat_set_my_stack + .weak plat_get_my_stack + .weak plat_set_my_stack /* ----------------------------------------------------- * uintptr_t plat_get_my_stack (u_register_t mpidr) |