| // SPDX-License-Identifier: GPL-2.0+ |
| /* |
| * Copyright 2020 NXP |
| */ |
| |
| #include <spl.h> |
| |
| char __data_save_start[0] __section(".__data_save_start"); |
| char __data_save_end[0] __section(".__data_save_end"); |
| |
| u32 cold_reboot_flag = 1; |
| |
| void spl_save_restore_data(void) |
| { |
| u32 data_size = __data_save_end - __data_save_start; |
| |
| if (cold_reboot_flag == 1) { |
| /* Save data section to data_save section */ |
| memcpy(__data_save_start, __data_save_start - data_size, |
| data_size); |
| } else { |
| /* Restore the data_save section to data section */ |
| memcpy(__data_save_start - data_size, __data_save_start, |
| data_size); |
| } |
| |
| cold_reboot_flag++; |
| } |