]> granicus.if.org Git - esp-idf/commitdiff
sleep: fix checking length of RTC data sections
authorIvan Grokhotkov <ivan@espressif.com>
Sat, 29 Sep 2018 06:01:35 +0000 (14:01 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Sat, 29 Sep 2018 06:02:16 +0000 (14:02 +0800)
_rtc_data_{start,end} can now describe data placed into RTC_FAST
segment, if CONFIG_ESP32_RTCDATA_IN_FAST_MEM is enabled.
Use new _rtc_slow_length symbol instead.

components/esp32/sleep_modes.c

index 06ee4b259a74394db16bec89df61c45358f006dc..da4a5f11a5a6de4888e267ab457f10f381119aef 100644 (file)
@@ -637,15 +637,11 @@ static uint32_t get_power_down_flags()
     // If there is any data placed into .rtc.data or .rtc.bss segments, and
     // RTC_SLOW_MEM is Auto, keep it powered up as well.
 
-    // These labels are defined in the linker script:
-    extern int _rtc_data_start, _rtc_data_end,
-               _rtc_bss_start, _rtc_bss_end,
-               _rtc_noinit_start, _rtc_noinit_end;
+    // Labels are defined in the linker script, see esp32.ld.
+    extern int _rtc_slow_length;
 
     if ((s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] == ESP_PD_OPTION_AUTO) &&
-            (&_rtc_data_end > &_rtc_data_start ||
-             &_rtc_bss_end > &_rtc_bss_start ||
-             &_rtc_noinit_end > &_rtc_noinit_start ||
+            ((size_t) &_rtc_slow_length > 0 ||
              (s_config.wakeup_triggers & RTC_ULP_TRIG_EN))) {
         s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] = ESP_PD_OPTION_ON;
     }