lock: Use stdatomic.h (#56)

Provides the same assembly output while using the standardized interface

e.g.

0000000000000000 <set_priv_smc_in_progress>:
   0:   90000000    adrp    x0, 0 <set_priv_smc_in_progress>
   4:   91000000    add x0, x0, #0x0
   8:   52800022    mov w2, #0x1                    // #1
   c:   d503201f    nop
  10:   085ffc01    ldaxrb  w1, [x0]
  14:   08037c02    stxrb   w3, w2, [x0]
  18:   35ffffc3    cbnz    w3, 10 <set_priv_smc_in_progress+0x10>
  1c:   72001c3f    tst w1, #0xff
  20:   54ffff81    b.ne    10 <set_priv_smc_in_progress+0x10>  // b.any
  24:   d65f03c0    ret
This commit is contained in:
Mat M authored and SciresM committed 2018-02-25 22:59:48 -08:00
1 parent 461105a501
commit c94cfe4898
2 files changed
+10 -8

No files matched your search

+3 -2
View File
@@ -1,3 +1,4 @@
#include <stdatomic.h>
#include <stdint.h>
#include "utils.h"
@@ -106,8 +107,8 @@ smc_table_t g_smc_tables[2] = {
}
};
bool g_is_user_smc_in_progress = false;
bool g_is_priv_smc_in_progress = false;
static atomic_flag g_is_user_smc_in_progress = ATOMIC_FLAG_INIT;
static atomic_flag g_is_priv_smc_in_progress = ATOMIC_FLAG_INIT;
uintptr_t get_smc_core012_stack_address(void) {
return tzram_get_segment_address(TZRAM_SEGMENT_ID_CORE012_STACK) + 0x1000;