bs_bcu_app/system/uC-OS3/uC-CPU/FR/Softune/cpu_a.asm

81 lines
3.5 KiB
NASM

;********************************************************************************************************
; 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
;
; Fujitsu FR
; Softune Compiler
;
; Filename : cpu_a.asm
; Version : V1.32.01
;********************************************************************************************************
.PROGRAM CPU_A
;********************************************************************************************************
; PUBLIC FUNCTIONS
;********************************************************************************************************
.EXPORT _CPU_SR_Save
.EXPORT _CPU_SR_Restore
.section CODE, code, align=4
;********************************************************************************************************
; CRITICAL SECTION FUNCTIONS
;
; Description : Disable/Enable interrupts by preserving the state of interrupts. Generally speaking you
; would store the state of the interrupt disable flag in the local variable 'cpu_sr' and then
; disable interrupts. You would restore the interrupt disable state by copying back 'cpu_sr'
; into the CPU's status register.
;
; Prototypes : CPU_SR CPU_SR_Save (void);
; void CPU_SR_Restore(CPU_SR cpu_sr);
;
; Note(s) : (1) These functions are used in general like this :
;
; void Task (void *p_arg)
; {
; CPU_SR_ALLOC(); /* Allocate storage for CPU status register */
; :
; :
; CPU_CRITICAL_ENTER(); /* cpu_sr = CPU_SR_Save(); */
; :
; :
; CPU_CRITICAL_EXIT(); /* CPU_SR_Restore(cpu_sr); */
; :
; }
;********************************************************************************************************
_CPU_SR_Save:
MOV PS, R4 ; Save state of PS
ANDCCR #0xEF ; Disable interrupts
RET
_CPU_SR_Restore:
MOV R4, PS ; Restore state of PS
RET
;********************************************************************************************************
; CPU ASSEMBLY PORT FILE END
;********************************************************************************************************
.END