|  | /* | 
|  | * Copyright (c) 2021 Espressif Systems (Shanghai) Co., Ltd. | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  |  | 
|  | #include <zephyr/toolchain.h> | 
|  | #include <zephyr/irq.h> | 
|  | #include <zephyr/arch/cpu.h> | 
|  |  | 
|  | /** | 
|  | * @brief Power save idle routine | 
|  | * | 
|  | * This function will be called by the kernel idle loop or possibly within | 
|  | * an implementation of _pm_save_idle in the kernel when the | 
|  | * '_pm_save_flag' variable is non-zero. | 
|  | */ | 
|  | void arch_cpu_idle(void) | 
|  | { | 
|  | /* curiously it arrives here with the interrupts masked | 
|  | * so umask it before wait for an event | 
|  | */ | 
|  | arch_irq_unlock(MSTATUS_IEN); | 
|  |  | 
|  | /* Wait for interrupt */ | 
|  | __asm__ volatile("wfi"); | 
|  | } |