📄 os_cpu.h
字号:
/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel
*
* (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
* All Rights Reserved
*
* Modified by Rebecca A. Williams
* Sandia National Laboratories
* MPC Motorola 5xx Specific
* Compiled using Metrowerks Code Warrior release 5
*
* File : OS_CPU.H
* By : Jean J. Labrosse
*********************************************************************************************************
*/
#ifdef OS_CPU_GLOBALS
#define OS_CPU_EXT
#else
#define OS_CPU_EXT extern
#endif
/*
*********************************************************************************************************
* DATA TYPES
* (Compiler Specific)
*********************************************************************************************************
*/
typedef unsigned char BOOLEAN;
typedef unsigned char INT8U; /* Unsigned 8 bit quantity */
typedef char INT8S; /* Signed 8 bit quantity */
typedef unsigned short INT16U; /* Unsigned 16 bit quantity */
typedef signed short INT16S; /* Signed 16 bit quantity */
typedef unsigned long INT32U; /* Unsigned 32 bit quantity */
typedef signed long INT32S; /* Signed 32 bit quantity */
typedef unsigned long long INT64U; /* Needed for stack manipulation */
typedef signed long long INT64S; /* Needed for stack manipulation */
typedef float FP32; /* Single precision floating point */
typedef double FP64; /* Double precision floating point */
typedef INT64U OS_STK; /* Each stack entry is 64 bits wide */
#define BYTE INT8S /* Define data types for backward compatibility ... */
#define UBYTE INT8U /* ... to uC/OS V1.xx. Not actually needed for ... */
#define WORD INT16S /* ... uC/OS-II. */
#define UWORD INT16U
#define LONG INT32S
#define ULONG INT32U
/*
*********************************************************************************************************
* Motorola MPC555 "Black Oak" Critical Section
*********************************************************************************************************
*/
asm void EnterCritical(void); /* CodeWarrior 4.0 does not allow in-line assembly */
asm void ExitCritical(void);
asm void SaveContext(void);
asm void RestoreContext(void);
asm void ReturnFromInterrupt(void);
asm void ReportRegister13(void);
#define OS_ENTER_CRITICAL() EnterCritical() /* Disable interrupts */
#define OS_EXIT_CRITICAL() ExitCritical() /* Enable interrupts */
/*
*********************************************************************************************************
* Motorola MPC555 "Black Oak" Miscellaneous
*********************************************************************************************************
*/
#define MSR_ALL_EN 0x0000B902
#define MSR_CRITICAL (INT32S)0x00002002
#define OS_STK_GROWTH 1 /* Stack grows from HIGH to LOW memory on 80x86 */
#define STACK_BUFFER 40
#define OFFSET_SP 8
#define OFFSET_GPR1 OFFSET_SP
#define OFFSET_MSR OFFSET_SP + 8
#define OFFSET_SRR0 OFFSET_MSR + 8 /* For stack frame */
#define OFFSET_SRR1 OFFSET_SRR0 + 8
#define OFFSET_CR OFFSET_SRR1 + 8
#define OFFSET_XER OFFSET_CR + 8
#define OFFSET_LR OFFSET_XER + 8
#define OFFSET_CTX OFFSET_LR + 8
#define OFFSET_DAR OFFSET_CTX + 8
#define OFFSET_GPR0 OFFSET_DAR + 8
#define OFFSET_GPR2 OFFSET_GPR0 + 8
#define OFFSET_GPR3 OFFSET_GPR2 + 8
#define OFFSET_GPR4 OFFSET_GPR3 + 8
#define OFFSET_GPR5 OFFSET_GPR4 + 8
#define OFFSET_GPR6 OFFSET_GPR5 + 8
#define OFFSET_GPR7 OFFSET_GPR6 + 8
#define OFFSET_GPR8 OFFSET_GPR7 + 8
#define OFFSET_GPR9 OFFSET_GPR8 + 8
#define OFFSET_GPR10 OFFSET_GPR9 + 8
#define OFFSET_GPR11 OFFSET_GPR10 + 8
#define OFFSET_GPR12 OFFSET_GPR11 + 8
#define OFFSET_GPR13 OFFSET_GPR12 + 8
#define OFFSET_GPR14 OFFSET_GPR13 + 8
#define OFFSET_GPR15 OFFSET_GPR14 + 8
#define OFFSET_GPR16 OFFSET_GPR15 + 8
#define OFFSET_GPR17 OFFSET_GPR16 + 8
#define OFFSET_GPR18 OFFSET_GPR17 + 8
#define OFFSET_GPR19 OFFSET_GPR18 + 8
#define OFFSET_GPR20 OFFSET_GPR19 + 8
#define OFFSET_GPR21 OFFSET_GPR20 + 8
#define OFFSET_GPR22 OFFSET_GPR21 + 8
#define OFFSET_GPR23 OFFSET_GPR22 + 8
#define OFFSET_GPR24 OFFSET_GPR23 + 8
#define OFFSET_GPR25 OFFSET_GPR24 + 8
#define OFFSET_GPR26 OFFSET_GPR25 + 8
#define OFFSET_GPR27 OFFSET_GPR26 + 8
#define OFFSET_GPR28 OFFSET_GPR27 + 8
#define OFFSET_GPR29 OFFSET_GPR28 + 8
#define OFFSET_GPR30 OFFSET_GPR28 + 8
#define OFFSET_GPR31 OFFSET_GPR30 + 8
#define OFFSET_FPSCR OFFSET_GPR31 + 8 /* Begin floating point specific */
#define OFFSET_FP0 OFFSET_FPSCR + 8 /* FPSCR has 4 bytes but FPs have 8 */
#define OFFSET_FP1 OFFSET_FP0 + 8
#define OFFSET_FP2 OFFSET_FP1 + 8
#define OFFSET_FP3 OFFSET_FP2 + 8
#define OFFSET_FP4 OFFSET_FP3 + 8
#define OFFSET_FP5 OFFSET_FP4 + 8
#define OFFSET_FP6 OFFSET_FP5 + 8
#define OFFSET_FP7 OFFSET_FP6 + 8
#define OFFSET_FP8 OFFSET_FP7 + 8
#define OFFSET_FP9 OFFSET_FP8 + 8
#define OFFSET_FP10 OFFSET_FP9 + 8
#define OFFSET_FP11 OFFSET_FP10 + 8
#define OFFSET_FP12 OFFSET_FP11 + 8
#define OFFSET_FP13 OFFSET_FP12 + 8
#define OFFSET_FP14 OFFSET_FP13 + 8
#define OFFSET_FP15 OFFSET_FP14 + 8
#define OFFSET_FP16 OFFSET_FP15 + 8
#define OFFSET_FP17 OFFSET_FP16 + 8
#define OFFSET_FP18 OFFSET_FP17 + 8
#define OFFSET_FP19 OFFSET_FP18 + 8
#define OFFSET_FP20 OFFSET_FP19 + 8
#define OFFSET_FP21 OFFSET_FP20 + 8
#define OFFSET_FP22 OFFSET_FP21 + 8
#define OFFSET_FP23 OFFSET_FP22 + 8
#define OFFSET_FP24 OFFSET_FP23 + 8
#define OFFSET_FP25 OFFSET_FP24 + 8
#define OFFSET_FP26 OFFSET_FP25 + 8
#define OFFSET_FP27 OFFSET_FP26 + 8
#define OFFSET_FP28 OFFSET_FP27 + 8
#define OFFSET_FP29 OFFSET_FP28 + 8
#define OFFSET_FP30 OFFSET_FP29 + 8
#define OFFSET_FP31 OFFSET_FP30 + 8
#define CONTEXT_SIZE OFFSET_FP31 + 8
//#define uCOS 0x80 /* Interrupt vector # used for context switch */
#define OS_TASK_SW() OSIntCtxSw();
/*
*********************************************************************************************************
* GLOBAL VARIABLES
*********************************************************************************************************
*/
OS_CPU_EXT INT8U OSTickDOSCtr; /* Counter used to invoke DOS's tick handler every 'n' ticks */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -