⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_cpu.h

📁 摩托罗拉处理器mpc855上的UCOS移植代码
💻 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 + -