CPU_SR_ALLOC
Description
Allocates CPU status register word as local variable cpu_sr, when necessary, for use with critical section macros.
Files
Each specific processor’s/compiler’s cpu.h
Prototype
CPU_SR_ALLOC();
Arguments
None.
Returned Value
None.
Required Configuration
None.
Notes / Warnings
CPU_SR_ALLOC()must be called immediately after the last local variable declaration in a function but before any code statements.
Example Usage
Listing - CPU_SR_ALLOC() example usage
CPU_BOOLEAN ts_init;
CPU_TS ts_cur;
CPU_SR_ALLOC(); /* Declared immediately after all local variables ... */
/* ... but before any code statements. */
ts_init = DEF_YES;
ts_cur = CPU_TS_TmrRd();
Implementation Template
The following example template assumes corresponding functions are defined in either cpu.c or cpu_a.asm:
Listing - CPU_SR_ALLOC() implementation template
typedef CPU_INT32U CPU_SR; /* Defines CPU status register size (see Note #3b). */
/* Allocates CPU status register word (see Note #3a). */
#if (CPU_CFG_CRITICAL_METHOD == CPU_CRITICAL_METHOD_STATUS_LOCAL)
#define CPU_SR_ALLOC() CPU_SR cpu_sr = (CPU_SR)0
#else
#define CPU_SR_ALLOC()
#endif