retmacro.s.svn-base
来自「Spearhead2000 的 USB驱动程序」· SVN-BASE 代码 · 共 80 行
SVN-BASE
80 行
;/***************************************************************************; Copyright ARM Limited 1998 - 2000. All rights reserved.;****************************************************************************;; Generic aliases for RETURN to allow ARM/THUMB interworking;; $Id: retmacro.s,v 1.1 2005/05/26 15:51:47 sp_head Exp $;;****************************************************************************/ IF :LNOT: :DEF: __retmacros__retmacros EQU 1;standard return command with Thumb aware alternative MACRO RETURN $reg IF :DEF: THUMB_AWARE ; if interworking is required BX $reg ; return and change state if required ELSE ; not Thumb aware MOV pc, $reg ; just return ENDIF MEND;Conditional return - NOTE: return register must be lr MACRO RETURN_COND $cond IF :DEF: THUMB_AWARE ; if interworking is required BX$cond lr ; return and change state if required ELSE ; not Thumb aware MOV$cond pc, lr ; just return ENDIF MEND;Conditional return to register _other_ than lr MACRO RETURN_COND_EXTEND $cond, $reg IF :DEF: THUMB_AWARE ; if interworking is required BX$cond $reg ; return and change state if required ELSE ; not Thumb aware MOV$cond pc, $reg ; just return ENDIF MEND; Return with a linear list of registers popped from the stack MACRO POP_RETURN $rlist IF :DEF: THUMB_AWARE ; if interworking is required LDMFD sp!, {$rlist, lr} ; restore registers BX lr ; return and change state if required ELSE ; not Thumb aware LDMFD sp!, {$rlist, pc} ; restore registers ENDIF MEND ; Return with a _2_ linear lists of registers popped from the stack MACRO POP_RETURN_EXTEND $rlist1, $rlist2 IF :DEF: THUMB_AWARE ; if interworking is required LDMFD sp!, {$rlist1, $rlist2, lr} ; restore registers BX lr ; & return ELSE ; not Thumb aware LDMFD sp!, {$rlist1, $rlist2, pc} ; restore registers & return ENDIF MEND ENDIF END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?