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

📄 custom_functions.s79

📁 在用IAR开发AT91SAMSE系列中外扩sdram的源码。
💻 S79
字号:
;------------------------------------------------------------------------------
;-         ATMEL Microcontroller Software Support  -  ROUSSET  -
;------------------------------------------------------------------------------
;- DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
;- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
;- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
;- DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
;- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
;- OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
;- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
;- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
;- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;------------------------------------------------------------------------------
;- File source          : Custom_Functions.s79
;- Object               : User functions
;- 1.0 21/DEC/06 WG     : Creation
;------------------------------------------------------------------------------


;------------------------------------------------------------------------------

    PROGRAM	?Custom             ;- Begins a program module
    RSEG	CODE:CODE (2)       ;- Begins a relocatable segment
                                    ;- corresponding address is 32-bit aligned
    CODE32	                    ;- ARM mode	

;------------------------------------------------------------------------------
;- Custom Functions
;extern void Multi_Transfer (unsigned int Size,unsigned int Read_Address,unsigned Write_Address)
; return in interworking and AAPCS
; return in R0
;R0 = Size
;R1 = Read_Address
;R2 = Write_Address
;------------------------------------------------------------------------------
    PUBLIC    Multi_Transfer


Multi_Transfer



    stmfd     sp!, {r4-r7}    ; Save R4, R5, R6 and R7 in User Stack

loop

    ldmia     r1!,{r4-r7}     ; R4=*R1, R5=*(R1+4), R6=*(R1+8), R7=*(R1+12)
    stmia     r2!,{r4-r7}     ; R2=R4, *(R2+4)=R5, *(R2+8)=R6, *(R2+12)=R7

    subs      r0,r0,#4        ; R0=R0-4 (4 address locations transfered at once)

    bne       loop            ; If R0 != #0 goto loop


    ldmia     sp!, {r4-r7}    ; Restore R4, R5, R6 and R7 registers from User Stack
    bx        r14             ; If R0 == #0 return

    ENDMOD                    ; Terminates the assembly of the current module
    END                       ; Terminates the assembly of the last module in a file

⌨️ 快捷键说明

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