11.9Snonaka; $NetBSD: arm.asm,v 1.9 2010/04/06 16:20:28 nonaka Exp $ 21.1Such; 31.1Such; Copyright (c) 2001 The NetBSD Foundation, Inc. 41.1Such; All rights reserved. 51.1Such; 61.1Such; This code is derived from software contributed to The NetBSD Foundation 71.1Such; by UCHIYAMA Yasushi. 81.1Such; 91.1Such; Redistribution and use in source and binary forms, with or without 101.1Such; modification, are permitted provided that the following conditions 111.1Such; are met: 121.1Such; 1. Redistributions of source code must retain the above copyright 131.1Such; notice, this list of conditions and the following disclaimer. 141.1Such; 2. Redistributions in binary form must reproduce the above copyright 151.1Such; notice, this list of conditions and the following disclaimer in the 161.1Such; documentation and/or other materials provided with the distribution. 171.1Such; 181.1Such; THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 191.1Such; ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 201.1Such; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 211.1Such; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 221.1Such; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 231.1Such; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 241.1Such; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 251.1Such; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 261.1Such; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 271.1Such; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 281.1Such; POSSIBILITY OF SUCH DAMAGE. 291.1Such; 301.4Such 311.1Such; 321.1Such;armasm.exe $(InputPath) 331.1Such;arm.obj 341.1Such; 351.1Such ; dummy buffer for WritebackDCache 361.9Snonaka EXPORT |dcachesize| [DATA] 371.1Such EXPORT |dcachebuf| [DATA] 381.1Such AREA |.data|, DATA 391.9Snonaka|dcachesize| 401.9Snonaka DCD 8192 ; for SA1100 411.4Such|dcachebuf| 421.9Snonaka % 65536 ; max D-cache size 431.1Such 441.1Such AREA |.text|, CODE, PIC 451.4Such 461.1Such ; 471.1Such ; Operation mode ops. 481.1Such ; 491.1Such EXPORT |SetSVCMode| 501.1Such|SetSVCMode| PROC 511.1Such mrs r0, cpsr 521.1Such bic r0, r0, #0x1f 531.1Such orr r0, r0, #0x13 541.1Such msr cpsr, r0 551.1Such mov pc, lr 561.1Such ENDP ; |SetSVCMode| 571.1Such EXPORT |SetSystemMode| 581.1Such|SetSystemMode| PROC 591.1Such mrs r0, cpsr 601.1Such orr r0, r0, #0x1f 611.1Such msr cpsr, r0 621.1Such mov pc, lr 631.1Such ENDP ; |SetSystemMode| 641.1Such 651.1Such ; 661.1Such ; Interrupt ops. 671.1Such ; 681.1Such EXPORT |DI| 691.1Such|DI| PROC 701.1Such mrs r0, cpsr 711.1Such orr r0, r0, #0xc0 721.1Such msr cpsr, r0 731.1Such mov pc, lr 741.1Such ENDP ; |DI| 751.1Such EXPORT |EI| 761.1Such|EI| PROC 771.1Such mrs r0, cpsr 781.1Such bic r0, r0, #0xc0 791.1Such msr cpsr, r0 801.1Such mov pc, lr 811.1Such ENDP ; |EI| 821.4Such 831.1Such ; 841.1Such ; Cache ops. 851.1Such ; 861.1Such EXPORT |InvalidateICache| 871.1Such|InvalidateICache| PROC 881.1Such ; c7 (CRn) Cache Control Register 891.1Such ; c5, 0 (CRm, opcode_2) Flush I 901.1Such ; r0 (Rd) ignored 911.1Such mcr p15, 0, r0, c7, c5, 0 921.1Such mov pc, lr 931.1Such ENDP ; |InvalidateICache| 941.4Such 951.1Such EXPORT |WritebackDCache| 961.1Such|WritebackDCache| PROC 971.9Snonaka ldr r0, [pc, #24] ; dcachebuf 981.9Snonaka ldr r1, [pc, #24] 991.9Snonaka ldr r1, [r1] ; dcache-size 1001.9Snonaka add r1, r1, r0 1011.1Such|wbdc1| 1021.1Such ldr r2, [r0], #32 ; line-size is 32byte. 1031.1Such teq r1, r0 1041.1Such bne |wbdc1| 1051.1Such mov pc, lr 1061.1Such DCD |dcachebuf| 1071.9Snonaka DCD |dcachesize| 1081.1Such ENDP ; |WritebackDCache| 1091.4Such 1101.1Such EXPORT |InvalidateDCache| 1111.1Such|InvalidateDCache| PROC 1121.1Such ; c7 (CRn) Cache Control Register 1131.1Such ; c6, 0 (CRm, opcode_2) Flush D 1141.1Such ; r0 (Rd) ignored 1151.4Such mcr p15, 0, r0, c7, c6, 0 1161.1Such mov pc, lr 1171.1Such ENDP ; |InvalidateDCache| 1181.1Such 1191.1Such EXPORT |WritebackInvalidateDCache| 1201.1Such|WritebackInvalidateDCache| PROC 1211.9Snonaka ldr r0, [pc, #28] ; dcachebuf 1221.9Snonaka ldr r1, [pc, #28] 1231.9Snonaka ldr r1, [r1] ; dcache-size 1241.9Snonaka add r1, r1, r0 1251.1Such|wbidc1| 1261.1Such ldr r2, [r0], #32 1271.1Such teq r1, r0 1281.1Such bne |wbidc1| 1291.1Such mcr p15, 0, r0, c7, c6, 0 1301.1Such mov pc, lr 1311.1Such DCD |dcachebuf| 1321.9Snonaka DCD |dcachesize| 1331.1Such ENDP ; |WritebackInvalidateDCache| 1341.1Such 1351.1Such ; 1361.1Such ; WriteBuffer ops 1371.1Such ; 1381.1Such EXPORT |WritebufferFlush| 1391.1Such|WritebufferFlush| PROC 1401.1Such ; c7 (CRn) Cache Control Register 1411.1Such ; c10, 4(CRm, opcode_2) Flush D 1421.1Such ; r0 (Rd) ignored 1431.1Such mcr p15, 0, r0, c7, c10, 4 1441.1Such mov pc, lr 1451.1Such ENDP ; |WritebufferFlush| 1461.1Such 1471.1Such ; 1481.1Such ; TLB ops. 1491.1Such ; 1501.1Such EXPORT |FlushIDTLB| 1511.1Such|FlushIDTLB| PROC 1521.1Such mcr p15, 0, r0, c8, c7, 0 1531.1Such mov pc, lr 1541.1Such ENDP ; |FlushIDTLB| 1551.1Such 1561.1Such EXPORT |FlushITLB| 1571.1Such|FlushITLB| PROC 1581.1Such mcr p15, 0, r0, c8, c5, 0 1591.1Such mov pc, lr 1601.1Such ENDP ; |FlushITLB| 1611.4Such 1621.1Such EXPORT |FlushDTLB| 1631.1Such|FlushDTLB| PROC 1641.1Such mcr p15, 0, r0, c8, c6, 0 1651.1Such mov pc, lr 1661.1Such ENDP ; |FlushITLB| 1671.1Such 1681.1Such EXPORT |FlushDTLBS| 1691.1Such|FlushDTLBS| PROC 1701.1Such mcr p15, 0, r0, c8, c6, 1 1711.1Such mov pc, lr 1721.1Such ENDP ; |FlushITLBS| 1731.1Such 1741.1Such ; 1751.1Such ; CurrentProgramStatusRegister access. 1761.1Such ; 1771.1Such EXPORT |GetCPSR| 1781.1Such|GetCPSR| PROC 1791.1Such mrs r0, cpsr 1801.1Such mov pc, lr 1811.1Such ENDP ; |GetCPSR| 1821.1Such 1831.4Such EXPORT |SetCPSR| 1841.1Such|SetCPSR| PROC 1851.1Such msr cpsr, r0 1861.1Such mov pc, lr 1871.1Such ENDP ; |SetCPSR| 1881.1Such 1891.1Such ; 1901.1Such ; SA-1100 Coprocessor15 access. 1911.1Such ; 1921.1Such; Reg0 ID (R) 1931.1Such EXPORT |GetCop15Reg0| 1941.1Such|GetCop15Reg0| PROC 1951.1Such mrc p15, 0, r0, c0, c0, 0 1961.1Such ; 0x4401a119 (44|01 = version 4|A11 = SA1100|9 = E stepping) 1971.1Such mov pc, lr 1981.1Such ENDP ; |GetCop15Reg0| 1991.1Such 2001.1Such; Reg1 Control (R/W) 2011.1Such EXPORT |GetCop15Reg1| 2021.1Such|GetCop15Reg1| PROC 2031.1Such mrc p15, 0, r0, c1, c0, 0 2041.1Such ; 0xc007327f (||...........|||..||..|..|||||||) 2051.1Such ; 0 (1)MMU enabled 2061.1Such ; 1 (1)Address fault enabled 2071.1Such ; 2 (1)D-cache enabled 2081.1Such ; 3 (1)Write-buffer enabled 2091.1Such ; 7 (0)little-endian 2101.1Such ; 8 (0)MMU protection (System) 2111.1Such ; 9 (1)MMU protection (ROM) 2121.1Such ; 12 (1)I-cache enabled 2131.1Such ; 13 (1)Base address of interrupt vector is 0xffff0000 2141.1Such mov pc, lr 2151.1Such ENDP ; |GetCop15Reg1| 2161.4Such EXPORT |SetCop15Reg1| 2171.1Such|SetCop15Reg1| PROC 2181.1Such mcr p15, 0, r0, c1, c0, 0 2191.1Such nop 2201.1Such nop 2211.1Such nop 2221.1Such mov pc, lr 2231.1Such ENDP ; |SetCop15Reg1| 2241.4Such 2251.4Such; Reg2 Translation table base (R/W) 2261.4Such EXPORT |GetCop15Reg2| 2271.1Such|GetCop15Reg2| PROC 2281.1Such mrc p15, 0, r0, c2, c0, 0 2291.1Such mov pc, lr 2301.1Such ENDP ; |GetCop15Reg2| 2311.4Such EXPORT |SetCop15Reg2| 2321.1Such|SetCop15Reg2| PROC 2331.1Such mcr p15, 0, r0, c2, c0, 0 2341.1Such mov pc, lr 2351.1Such ENDP ; |SetCop15Reg2| 2361.1Such 2371.1Such; Reg3 Domain access control (R/W) 2381.1Such EXPORT |GetCop15Reg3| 2391.1Such|GetCop15Reg3| PROC 2401.1Such mrc p15, 0, r0, c3, c0, 0 2411.1Such mov pc, lr 2421.1Such ENDP ; |GetCop15Reg3| 2431.4Such EXPORT |SetCop15Reg3| 2441.1Such|SetCop15Reg3| PROC 2451.1Such mcr p15, 0, r0, c3, c0, 0 2461.1Such mov pc, lr 2471.1Such ENDP ; |SetCop15Reg3| 2481.4Such 2491.1Such; Reg5 Fault status (R/W) 2501.4Such EXPORT |GetCop15Reg5| 2511.1Such|GetCop15Reg5| PROC 2521.1Such mrc p15, 0, r0, c5, c0, 0 2531.1Such mov pc, lr 2541.1Such ENDP ; |GetCop15Reg5| 2551.4Such 2561.4Such; Reg6 Fault address (R/W) 2571.4Such EXPORT |GetCop15Reg6| 2581.1Such|GetCop15Reg6| PROC 2591.1Such mrc p15, 0, r0, c6, c0, 0 2601.1Such mov pc, lr 2611.1Such ENDP ; |GetCop15Reg6| 2621.1Such 2631.1Such; Reg7 Cache operations (W) 2641.1Such ; -> Cache ops 2651.1Such; Reg8 TLB operations (Flush) (W) 2661.1Such ; -> TLB ops 2671.4Such; Reg9 Read buffer operations (W) 2681.4Such; Reg13 Process ID (R/W) 2691.4Such EXPORT |GetCop15Reg13| 2701.1Such|GetCop15Reg13| PROC 2711.1Such mrc p15, 0, r0, c13, c0, 0 2721.1Such mov pc, lr 2731.1Such ENDP ; |GetCop15Reg13| 2741.4Such EXPORT |SetCop15Reg13| 2751.1Such|SetCop15Reg13| PROC 2761.1Such mcr p15, 0, r0, c13, c0, 0 2771.1Such mov pc, lr 2781.1Such ENDP ; |SetCop15Reg13| 2791.4Such 2801.1Such; Reg14 Breakpoint (R/W) 2811.4Such EXPORT |GetCop15Reg14| 2821.1Such|GetCop15Reg14| PROC 2831.1Such mrc p15, 0, r0, c14, c0, 0 2841.1Such mov pc, lr 2851.1Such ENDP ; |GetCop15Reg14| 2861.1Such; Reg15 Test, clock, and idle (W) 2871.4Such 2881.1Such END 289