31 lines
912 B
ArmAsm
31 lines
912 B
ArmAsm
|
|
/*
|
||
|
|
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||
|
|
*
|
||
|
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||
|
|
*/
|
||
|
|
/* ULP assembly files are passed through C preprocessor first, so include directives
|
||
|
|
and C macros may be used in these files
|
||
|
|
*/
|
||
|
|
#include "soc/rtc_cntl_reg.h"
|
||
|
|
#include "soc/soc_ulp.h"
|
||
|
|
#include "sdkconfig.h"
|
||
|
|
|
||
|
|
.global wake_up
|
||
|
|
wake_up:
|
||
|
|
/* Check if the system is in sleep mode */
|
||
|
|
#if CONFIG_IDF_TARGET_ESP32
|
||
|
|
READ_RTC_REG(RTC_CNTL_LOW_POWER_ST_REG, 27, 1)
|
||
|
|
#else
|
||
|
|
READ_RTC_FIELD(RTC_CNTL_LOW_POWER_ST_REG, RTC_CNTL_MAIN_STATE_IN_IDLE)
|
||
|
|
#endif
|
||
|
|
move r1, r0
|
||
|
|
/* Check if the system can be woken up */
|
||
|
|
READ_RTC_FIELD(RTC_CNTL_LOW_POWER_ST_REG, RTC_CNTL_RDY_FOR_WAKEUP)
|
||
|
|
/* If the system is in normal mode or if the system is in sleep mode with ready for wakeup set, we can signal the main CPU to wakeup */
|
||
|
|
or r0, r0, r1
|
||
|
|
jump wake_up, eq
|
||
|
|
|
||
|
|
/* Wake up the SoC, end program */
|
||
|
|
wake
|
||
|
|
halt
|