28 lines
633 B
C
28 lines
633 B
C
|
/*
|
||
|
* Copyright (c) 2023 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");
|
||
|
}
|