bs_bcu_app/system/uC-OS3/uC-CPU/MPC57xx-VLE/GNU/cpu_a.S

114 lines
4.3 KiB
ArmAsm

#********************************************************************************************************
#* uC/CPU
#* CPU CONFIGURATION & PORT LAYER
#*
#* Copyright 2004-2021 Silicon Laboratories Inc. www.silabs.com
#*
#* SPDX-License-Identifier: APACHE-2.0
#*
#* This software is subject to an open source license and is distributed by
#* Silicon Laboratories Inc. pursuant to the terms of the Apache License,
#* Version 2.0 available at www.apache.org/licenses/LICENSE-2.0.
#*
#********************************************************************************************************
#********************************************************************************************************
#*
#* CPU PORT FILE
#*
#* NXP MPC57xx-VLE
#*
#* Filename : cpu_a.s
#* Version : V1.32.01
#********************************************************************************************************
#********************************************************************************************************
#* ASM HEADER
#********************************************************************************************************
.text
#********************************************************************************************************
# PUBLIC DECLARATIONS
#********************************************************************************************************
.global CPU_SR_Save
.global CPU_SR_Restore
.global CPU_SR_Rd
.global CPU_IntDis
.global CPU_IntEn
#********************************************************************************************************
#* CRITICAL SECTION FUNCTIONS
#*
#* Description : These functions are used to enter and exit critical sections using Critical Method #3.
#*
#* CPU_SR CPU_SR_Save (void)
#* Get current global interrupt mask bit value from MSR
#* Disable interrupts
#* Return global interrupt mask bit
#*
#* void CPU_SR_Restore (CPU_SR cpu_sr)
#* Set global interrupt mask bit on MSR according to parameter cpu_sr
#* Return
#*
#* Argument(s) : cpu_sr global interrupt mask status.
#********************************************************************************************************
CPU_SR_Save:
mfmsr r3
wrteei 0
se_blr
CPU_SR_Restore:
wrtee r3
se_blr
#********************************************************************************************************
#* READ STATUS REGISTER FUNCTION
#*
#* Description : This function is used to retrieve the status register value.
#*
#* CPU_SR CPU_SR_Rd (void)
#* Get current MSR value
#* Return
#********************************************************************************************************
CPU_SR_Rd:
mfmsr r3
se_blr
#********************************************************************************************************
#* DISABLE/ENABLE INTERRUPTS
#*
#* Description : Disable/Enable interrupts by setting or clearing the global interrupt mask in the cpu
#* status register.
#*
#* void CPU_IntDis (void)
#* Set global interrupt mask bit on MSR
#* Return
#*
#* void CPU_IntEn (void)
#* Clear global interrupt mask bit on MSR
#* Return
#********************************************************************************************************
CPU_IntDis:
wrteei 0
se_blr
CPU_IntEn:
wrteei 1
se_blr
#********************************************************************************************************
#* CPU ASSEMBLY PORT FILE END
#********************************************************************************************************
.end