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

📄 macdefs.inc

📁 All &micro C/OS ports can easily be ported to &micro C/OS-II.
💻 INC
字号:
;
;       These are the macros used by the v850 port of the uCOS/II.
;





;********************************************************************
;	function:
;	description:
;	--- Modifies ----------------------------------------------
;		   IO :
;		   Mem:
;		   CPU:
;	--- Uses --------------------------------------------------
;		   IO :
;		   Mem:
;	--- Input -------------------------------------------------
;	--- Output ------------------------------------------------
;	--- Notes -------------------------------------------------
;====================================================================

SAVE_CPU_CTX MACRO
	;Save all registers on entry (r3 is the stack pointer)
	prepare {r23,r24,r25,r26,r27,r28,r29,r30,r31},(8+(4*14))	 ;Add 8 bytes for 2 more registers
	mov sp, ep
        sst.w r1, 0[ep]
	sst.w r2, 4[ep]
	sst.w r5, 8[ep]
	sst.w r6, 12[ep]
	sst.w r7, 16[ep]
	sst.w r8, 20[ep]
	sst.w r9, 24[ep]
	sst.w r10, 28[ep]
	sst.w r11, 32[ep]
	sst.w r12, 36[ep]
	sst.w r13, 40[ep]
	sst.w r14, 44[ep]
	sst.w r15, 48[ep]
	sst.w r16, 52[ep]
	;Save caller's PC
	stsr EIPC, r1
	sst.w r1, 56[ep]
	;Save caller's PSW
	stsr EIPSW, r1
	sst.w r1, 60[ep]

        ENDMAC





;********************************************************************
;	function:
;	description:
;	--- Modifies ----------------------------------------------
;		   IO :
;		   Mem:
;		   CPU:
;	--- Uses --------------------------------------------------
;		   IO :
;		   Mem:
;	--- Input -------------------------------------------------
;	--- Output ------------------------------------------------
;	--- Notes -------------------------------------------------
;====================================================================
SAVE_SP MACRO
	;Save stack pointer on OSTCBCur->OSTCBStkPtr (OSTCBStkPtr=0)
	mov OSTCBCur, r21
	ld.w 0[r21], r21
	st.w sp, 0[r21]
        ENDMAC



;********************************************************************
;	function:
;	description:
;	--- Modifies ----------------------------------------------
;		   IO :
;		   Mem:
;		   CPU:
;	--- Uses --------------------------------------------------
;		   IO :
;		   Mem:
;	--- Input -------------------------------------------------
;	--- Output ------------------------------------------------
;	--- Notes -------------------------------------------------
;====================================================================
ISR_ENTRY  MACRO
        LOCAL _DontSaveSP

        ;Save all CPU registers according to the standard stack frame
        SAVE_CPU_CTX

	mov OSIntNesting, r1                   ;Increment OSNesting by one
	LD.BU	0[r1],r2
        add 1, r2
	ST.B  r2, 0[r1]
        cmp 1, r2                              ;If OSNesting==1 save SP in current TCB
        bne _DontSaveSP
        SAVE_SP
_DontSaveSP:
        ENDMAC

;********************************************************************
;	function:
;	description:
;	--- Modifies ----------------------------------------------
;		   IO :
;		   Mem:
;		   CPU:
;	--- Uses --------------------------------------------------
;		   IO :
;		   Mem:
;	--- Input -------------------------------------------------
;	--- Output ------------------------------------------------
;	--- Notes -------------------------------------------------
;====================================================================
ISR_EXIT MACRO
        jarl OSIntExit, lp                      ;Call OSIntExit()
	jr OS_Restore_CPU_Context               ;Restore processors registers and execute RETI
        ENDMAC

⌨️ 快捷键说明

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