85 lines
2.1 KiB
ArmAsm
85 lines
2.1 KiB
ArmAsm
|
/***************************************************************************
|
||
|
*
|
||
|
* Copyright 2015-2019 BES.
|
||
|
* All rights reserved. All unpublished rights reserved.
|
||
|
*
|
||
|
* No part of this work may be used or reproduced in any form or by any
|
||
|
* means, or stored in a database or retrieval system, without prior written
|
||
|
* permission of BES.
|
||
|
*
|
||
|
* Use of this work is governed by a license granted by BES.
|
||
|
* This work contains confidential and proprietary information of
|
||
|
* BES. which is protected by copyright, trade secret,
|
||
|
* trademark and other intellectual property rights.
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
|
||
|
/*
|
||
|
=========================================================================
|
||
|
MCU Sleep Power Down and Wakeup Power Up Helper Functions
|
||
|
=========================================================================
|
||
|
*/
|
||
|
|
||
|
.syntax unified
|
||
|
|
||
|
#ifdef MCU_SLEEP_POWER_DOWN
|
||
|
|
||
|
#ifdef ROM_BUILD
|
||
|
.section .bss.mcu_sleep_stack
|
||
|
#else
|
||
|
.section .sram_bss.mcu_sleep_stack
|
||
|
#endif
|
||
|
.align 2
|
||
|
mcu_sleep_stack:
|
||
|
.space 4
|
||
|
|
||
|
#ifdef ROM_BUILD
|
||
|
.section .text.hal_sleep_mcu_power_down, "ax", %progbits
|
||
|
#else
|
||
|
.section .sram_text.hal_sleep_mcu_power_down, "ax", %progbits
|
||
|
#endif
|
||
|
.thumb
|
||
|
.thumb_func
|
||
|
.align 2
|
||
|
.globl hal_sleep_mcu_power_down
|
||
|
.type hal_sleep_mcu_power_down, %function
|
||
|
hal_sleep_mcu_power_down:
|
||
|
|
||
|
ldr r3, =mcu_sleep_stack
|
||
|
push {r4-r12,lr}
|
||
|
/* TODO: Save FPU registers? */
|
||
|
str sp, [r3]
|
||
|
bl hal_psc_mcu_auto_power_down
|
||
|
.pd_loop:
|
||
|
b .pd_loop
|
||
|
|
||
|
.pool
|
||
|
.size hal_sleep_mcu_power_down, . - hal_sleep_mcu_power_down
|
||
|
|
||
|
|
||
|
#ifdef ROM_BUILD
|
||
|
.section .text.hal_sleep_mcu_power_up, "ax", %progbits
|
||
|
#else
|
||
|
.section .sram_text.hal_sleep_mcu_power_up, "ax", %progbits
|
||
|
#endif
|
||
|
.thumb
|
||
|
.thumb_func
|
||
|
.align 2
|
||
|
.globl hal_sleep_mcu_power_up
|
||
|
.type hal_sleep_mcu_power_up, %function
|
||
|
hal_sleep_mcu_power_up:
|
||
|
|
||
|
ldr r3, =mcu_sleep_stack
|
||
|
ldr sp, [r3]
|
||
|
isb
|
||
|
/* TODO: Restore FPU registers? */
|
||
|
pop {r4-r12,lr}
|
||
|
bx lr
|
||
|
|
||
|
.pool
|
||
|
.size hal_sleep_mcu_power_up, . - hal_sleep_mcu_power_up
|
||
|
|
||
|
#endif
|
||
|
|
||
|
.end
|