]> granicus.if.org Git - esp-idf/commitdiff
deep sleep: don't use protected DPORT access in wake stub
authorIvan Grokhotkov <ivan@espressif.com>
Fri, 1 Sep 2017 10:35:42 +0000 (18:35 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Fri, 1 Sep 2017 10:35:42 +0000 (18:35 +0800)
components/esp32/sleep_modes.c

index 9cf88672267f1af74c3ebb839eaa11b1b4b4ba55..e305b96eb4a9c4cdf4f7d5cb7b758889a7191965 100644 (file)
@@ -100,8 +100,10 @@ void esp_set_deep_sleep_wake_stub(esp_deep_sleep_wake_stub_fn_t new_stub)
 
 void RTC_IRAM_ATTR esp_default_wake_deep_sleep(void) {
     /* Clear MMU for CPU 0 */
-    DPORT_REG_SET_BIT(DPORT_PRO_CACHE_CTRL1_REG, DPORT_PRO_CACHE_MMU_IA_CLR);
-    DPORT_REG_CLR_BIT(DPORT_PRO_CACHE_CTRL1_REG, DPORT_PRO_CACHE_MMU_IA_CLR);
+    _DPORT_REG_WRITE(DPORT_PRO_CACHE_CTRL1_REG,
+            _DPORT_REG_READ(DPORT_PRO_CACHE_CTRL1_REG) | DPORT_PRO_CACHE_MMU_IA_CLR);
+    _DPORT_REG_WRITE(DPORT_PRO_CACHE_CTRL1_REG,
+            _DPORT_REG_READ(DPORT_PRO_CACHE_CTRL1_REG) & (~DPORT_PRO_CACHE_MMU_IA_CLR));
 #if CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY > 0
     // ROM code has not started yet, so we need to set delay factor
     // used by ets_delay_us first.