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

📄 context.h

📁 在 君正芯片上的mips
💻 H
字号:
/***************************************************************************                                                                         **   PROJECT     : MIPS port for uC/OS-II                                  **                                                                         **   MODULE      : CONTEXT.h                                               **                                                                         **   AUTHOR      : Michael Anburaj                                         **                 URL  : http://geocities.com/michaelanburaj/             **                 EMAIL: michaelanburaj@hotmail.com                       **                                                                         **   PROCESSOR   : MIPS 4Kc (32 bit RISC) - ATLAS board                    **                                                                         **   TOOL-CHAIN  : SDE & Cygnus                                            **                                                                         **   DESCRIPTION :                                                         **   Context switch macros.                                                **                                                                         ***************************************************************************/#ifndef __CONTEXT_H__#define __CONTEXT_H__/* ********************************************************************* *//* Module configuration *//* ********************************************************************* *//* Interface macro & data definition */#ifdef _ASSEMBLER_// push context: at, v0-v1,a0-a3,t0-t9,s0-s7,gp,fp,ra, & pc#define STORE_REG_RET(Retaddr) \    .set noat; \    .set noreorder; \        subu sp,120; \        sw ra,0(sp); \        sw fp,4(sp); \        sw gp,8(sp); \        sw t9,12(sp); \        sw t8,16(sp); \        sw s7,20(sp); \        sw s6,24(sp); \        sw s5,28(sp); \        sw s4,32(sp); \        sw s3,36(sp); \        sw s2,40(sp); \        sw s1,44(sp); \        sw s0,48(sp); \        sw t7,52(sp); \        sw t6,56(sp); \        sw t5,60(sp); \        sw t4,64(sp); \        sw t3,68(sp); \        sw t2,72(sp); \        sw t1,76(sp); \        sw t0,80(sp); \        sw a3,84(sp); \        sw a2,88(sp); \        sw a1,92(sp); \        sw a0,96(sp); \        sw v1,100(sp); \        sw v0,104(sp); \        sw AT,108(sp); \        MFC0(t0,C0_STATUS); \        sw t0,112(sp); \        sw Retaddr,116(sp); \    .set at// pop context (normal execution): at, v0-v1,a0-a3,t0-t9,s0-s7,gp,fp,ra, & pc#define RESTORE_REG_RET() \    .set noat; \    .set noreorder; \        lw ra,0(sp); \        lw fp,4(sp); \        lw gp,8(sp); \        lw t9,12(sp); \        lw t8,16(sp); \        lw s7,20(sp); \        lw s6,24(sp); \        lw s5,28(sp); \        lw s4,32(sp); \        lw s3,36(sp); \        lw s2,40(sp); \        lw s1,44(sp); \        lw s0,48(sp); \        lw t7,52(sp); \        lw t6,56(sp); \        lw t5,60(sp); \        lw t4,64(sp); \        lw t3,68(sp); \        lw t2,72(sp); \        lw t1,76(sp); \        lw t0,80(sp); \        lw a3,84(sp); \        lw a2,88(sp); \        lw a1,92(sp); \        lw a0,96(sp); \        lw v1,100(sp); \        lw v0,104(sp); \        lw AT,108(sp); \        lw k0,112(sp); \        MTC0(k0,C0_STATUS); \        lw k0,116(sp); \        addu sp,120; \        jr k0; \        nop; \    .set at// pop context: at, v0-v1,a0-a3,t0-t9,s0-s7,gp,fp,ra, & pc#define RESTORE_REG_ERET() \    .set noat; \    .set noreorder; \        lw ra,0(sp); \        lw fp,4(sp); \        lw gp,8(sp); \        lw t9,12(sp); \        lw t8,16(sp); \        lw s7,20(sp); \        lw s6,24(sp); \        lw s5,28(sp); \        lw s4,32(sp); \        lw s3,36(sp); \        lw s2,40(sp); \        lw s1,44(sp); \        lw s0,48(sp); \        lw t7,52(sp); \        lw t6,56(sp); \        lw t5,60(sp); \        lw t4,64(sp); \        lw t3,68(sp); \        lw t2,72(sp); \        lw t1,76(sp); \        lw t0,80(sp); \        lw a3,84(sp); \        lw a2,88(sp); \        lw a1,92(sp); \        lw a0,96(sp); \        lw v1,100(sp); \        lw v0,104(sp); \        lw AT,108(sp); \        lw k0,112(sp); \        MTC0(k0,C0_STATUS); \        lw k0,116(sp); \        MTC0(k0,C0_EPC); \        addu sp,120; \        eret; \        nop; \    .set at#endif /* _ASSEMBLER_ *//* ********************************************************************* *//* Interface function definition *//* ********************************************************************* */#ifdef __cplusplus}#endif#endif /*__CONTEXT_H__*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -