ulp_riscv_lock.c 590 B

123456789101112131415161718192021222324252627
  1. /*
  2. * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include "ulp_riscv_lock.h"
  7. #include "ulp_riscv_lock_shared.h"
  8. #include <assert.h>
  9. void ulp_riscv_lock_acquire(ulp_riscv_lock_t *lock)
  10. {
  11. assert(lock);
  12. lock->critical_section_flag_main_cpu = true;
  13. lock->turn = ULP_RISCV_LOCK_TURN_ULP;
  14. while (lock->critical_section_flag_ulp && (lock->turn == ULP_RISCV_LOCK_TURN_ULP)) {
  15. }
  16. }
  17. void ulp_riscv_lock_release(ulp_riscv_lock_t *lock)
  18. {
  19. assert(lock);
  20. lock->critical_section_flag_main_cpu = false;
  21. }