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

📄 enablecache.s

📁 这是一个arm处理cache的汇编程序
💻 S
字号:
;// ____________________________________________________________________
;//
;// Copyright (c) 2003, Andrew N. Sloss, Dominic Symes, Chris Wright
;// All rights reserved.
;// ____________________________________________________________________
;// 
;// NON-COMMERCIAL USE License
;// 
;// Redistribution and use in source and binary forms, with or without 
;// modification, are permitted provided that the following conditions 
;// are met: 
;//
;// 1. For NON-COMMERCIAL USE only.
;// 
;// 2. Redistributions of source code must retain the above copyright 
;//    notice, this list of conditions and the following disclaimer. 
;//
;// 3. Redistributions in binary form must reproduce the above 
;//    copyright notice, this list of conditions and the following 
;//    disclaimer in the documentation and/or other materials provided 
;//    with the distribution. 
;//
;// 4. All advertising materials mentioning features or use of this 
;//    software must display the following acknowledgement:
;//
;//    This product includes software developed by Andrew N. Sloss,
;//    Chris Wright and Dominic Symes. 
;//
;//  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY 
;//  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
;//  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
;//  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTORS 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. 
;//
;// If you have questions about this license or would like a different
;// license please email : andrew@sloss.net
;//

        AREA cache_routines , CODE, READONLY ; Start of Area block
     
        EXPORT enableMPU
        EXPORT enableCache
        EXPORT enableICache
        EXPORT enableDCache
        EXPORT disableCache
        EXPORT disableDCache
        EXPORT disableICache
        EXPORT enableRandom
        EXPORT enableRoundRobin

;------------------------------------
enableMPU
        MRC     p15,0,r0,c1,c0,0    ; Read control register
        ORR     r0,r0,#0x00000001   ; Enable MPU 
        MCR     p15,0,r0,c1,c0,0    ; Write to control register 1
        MOV     r0, #0
        MOV     pc, lr

;------------------------------------
disableCache
        MRC     p15,0,r0,c1,c0,0    ; Read control register
        BIC     r0,r0,#0x00001000   ; Clear Icache enable bit
        BIC     r0,r0,#0x00000004   ; Clear Dcache enable bit 
        MCR     p15,0,r0,c1,c0,0    ; Write to control register 1
        MOV     r0, #0
        MOV     pc,lr
;------------------------------------
disableDCache
        MRC     p15,0,r0,c1,c0,0    ; Read control register
        BIC     r0,r0,#0x00000004   ; Clear Dcache enable bit 
        MCR     p15,0,r0,c1,c0,0    ; Write to control register 1
        MOV     r0, #0
        MOV     pc,lr
;------------------------------------
disableICache
        MRC     p15,0,r0,c1,c0,0    ; Read control register
        BIC     r0,r0,#0x00001000   ; Clear Icache enable bit
        MCR     p15,0,r0,c1,c0,0    ; Write to control register 1
        MOV     r0, #0
        MOV     pc,lr
	
;------------------------------------
enableCache
        MRC     p15,0,r0,c1,c0,0    ; Read control register
        ORR     r0,r0,#0x00001000   ; Set enable Icache
        ORR     r0,r0,#0x00000004   ; Set enable Dcache and protection unit 
        MCR     p15,0,r0,c1,c0,0    ; Write to control register 1
        MOV     r0, #0
        MOV     pc, lr
        
;------------------------------------
enableICache
        MRC     p15,0,r0,c1,c0,0    ; Read control register
        ORR     r0,r0,#0x00001000   ; Enable Icache
        MCR     p15,0,r0,c1,c0,0    ; Write to control register 1
        MOV     r0, #0
        MOV     pc, lr

;------------------------------------
enableDCache
        MRC     p15,0,r0,c1,c0,0    ; Read control register
        ORR     r0,r0,#0x00000004   ; Enable Dcache 
        MCR     p15,0,r0,c1,c0,0    ; Write to control register 1
        MOV     r0, #0
        MOV     pc, lr

;------------------------------------
enableRoundRobin
        IF {CPU} = "ARM940T"
          MRC     p15,0,r0,c15,c0,0   ; Read round robin register
          ORR     r0,r0,#0x0000000c 	; enable d-cache round robin
          MCR     p15,0,r0,c15,c0,0   ; Write to test register c15
          MRC     p15,0,r0,c15,c0,0   ; Read round robin register
        ENDIF
        IF {CPU} = "ARM920T"       :LOR: \
           {CPU} = "ARM922T"
          MRC     p15,0,r0,c1,c0,0    ; Read control register
          ORR     r0,r0,#0x00004000   ; Enable Icache
          MCR     p15,0,r0,c1,c0,0    ; Write to control register 1
        ENDIF
;        MOV     r0, #0
        MOV     pc, lr
;------------------------------------
enableRandom
        IF {CPU} = "ARM940T"
          MRC     p15,0,r0,c15,c0,0   ; Read round robin register
          BIC     r0,r0,#0x0000000c 	; enable d-cache round robin
          MCR     p15,0,r0,c15,c0,0   ; Write to test register c15
          MRC     p15,0,r0,c15,c0,0   ; Read round robin register
        ENDIF
        IF {CPU} = "ARM920T"       :LOR: \
           {CPU} = "ARM922T"
          MRC     p15,0,r0,c1,c0,0    ; Read control register
          BIC     r0,r0,#0x00004000   ; Enable Icache
          MCR     p15,0,r0,c1,c0,0    ; Write to control register 1
        ENDIF
;        MOV     r0, #0
        MOV     pc, lr
;------------------------------------
        END

⌨️ 快捷键说明

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