bs_bcu_app/system/uC-OS3/uC-CPU/MCF5272/GNU/cpu_a.s

80 lines
3.6 KiB
ArmAsm
Raw Permalink Normal View History

2024-11-07 17:24:19 +08:00
;********************************************************************************************************
; 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
;
; MCF5272
; GNU C Compiler
;
; Filename : cpu_a.s
; Version : V1.32.01
;********************************************************************************************************
;********************************************************************************************************
; PUBLIC DECLARATIONS
;********************************************************************************************************
.global CPU_SR_Save
.global CPU_SR_Restore
;********************************************************************************************************
; CPU_SR_Save() for OS_CRITICAL_METHOD #3
;
; Description : This functions implements the OS_CRITICAL_METHOD #3 function to preserve the state of the
; interrupt disable flag in order to be able to restore it later.
;
; Arguments : none
;
; Returns : It is assumed that the return value is placed in the D0 register as expected by the
; compiler.
;********************************************************************************************************
.text
CPU_SR_Save:
MOVE %SR,%D0 /* Copy SR into D0 */
MOVE.L %D0,-(%A7) /* Save D0 */
ORI.L #0x0700,%D0 /* Disable interrupts */
MOVE %D0,%SR
MOVE.L (%A7)+,%D0 /* Restore original state of SR */
RTS
;********************************************************************************************************
; CPU_SR_Restore() for OS_CRITICAL_METHOD #3
;
; Description : This functions implements the OS_CRITICAL_METHOD #function to restore the state of the
; interrupt flag.
;
; Arguments : cpu_sr is the contents of the SR to restore. It is assumed that this 'argument' is
; passed in the D0 register of the CPU by the compiler.
;
; Returns : None
;********************************************************************************************************
CPU_SR_Restore:
MOVE %D0,%SR
RTS
;********************************************************************************************************
; CPU ASSEMBLY PORT FILE END
;********************************************************************************************************
END