1*569b7f92Snonaka; $NetBSD: arm.asm,v 1.9 2010/04/06 16:20:28 nonaka Exp $ 29173eae7Such; 39173eae7Such; Copyright (c) 2001 The NetBSD Foundation, Inc. 49173eae7Such; All rights reserved. 59173eae7Such; 69173eae7Such; This code is derived from software contributed to The NetBSD Foundation 79173eae7Such; by UCHIYAMA Yasushi. 89173eae7Such; 99173eae7Such; Redistribution and use in source and binary forms, with or without 109173eae7Such; modification, are permitted provided that the following conditions 119173eae7Such; are met: 129173eae7Such; 1. Redistributions of source code must retain the above copyright 139173eae7Such; notice, this list of conditions and the following disclaimer. 149173eae7Such; 2. Redistributions in binary form must reproduce the above copyright 159173eae7Such; notice, this list of conditions and the following disclaimer in the 169173eae7Such; documentation and/or other materials provided with the distribution. 179173eae7Such; 189173eae7Such; THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 199173eae7Such; ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 209173eae7Such; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 219173eae7Such; PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 229173eae7Such; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 239173eae7Such; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 249173eae7Such; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 259173eae7Such; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 269173eae7Such; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 279173eae7Such; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 289173eae7Such; POSSIBILITY OF SUCH DAMAGE. 299173eae7Such; 309173eae7Such 319173eae7Such; 329173eae7Such;armasm.exe $(InputPath) 339173eae7Such;arm.obj 349173eae7Such; 359173eae7Such ; dummy buffer for WritebackDCache 36*569b7f92Snonaka EXPORT |dcachesize| [DATA] 379173eae7Such EXPORT |dcachebuf| [DATA] 389173eae7Such AREA |.data|, DATA 39*569b7f92Snonaka|dcachesize| 40*569b7f92Snonaka DCD 8192 ; for SA1100 419173eae7Such|dcachebuf| 42*569b7f92Snonaka % 65536 ; max D-cache size 439173eae7Such 449173eae7Such AREA |.text|, CODE, PIC 459173eae7Such 469173eae7Such ; 479173eae7Such ; Operation mode ops. 489173eae7Such ; 499173eae7Such EXPORT |SetSVCMode| 509173eae7Such|SetSVCMode| PROC 519173eae7Such mrs r0, cpsr 529173eae7Such bic r0, r0, #0x1f 539173eae7Such orr r0, r0, #0x13 549173eae7Such msr cpsr, r0 559173eae7Such mov pc, lr 569173eae7Such ENDP ; |SetSVCMode| 579173eae7Such EXPORT |SetSystemMode| 589173eae7Such|SetSystemMode| PROC 599173eae7Such mrs r0, cpsr 609173eae7Such orr r0, r0, #0x1f 619173eae7Such msr cpsr, r0 629173eae7Such mov pc, lr 639173eae7Such ENDP ; |SetSystemMode| 649173eae7Such 659173eae7Such ; 669173eae7Such ; Interrupt ops. 679173eae7Such ; 689173eae7Such EXPORT |DI| 699173eae7Such|DI| PROC 709173eae7Such mrs r0, cpsr 719173eae7Such orr r0, r0, #0xc0 729173eae7Such msr cpsr, r0 739173eae7Such mov pc, lr 749173eae7Such ENDP ; |DI| 759173eae7Such EXPORT |EI| 769173eae7Such|EI| PROC 779173eae7Such mrs r0, cpsr 789173eae7Such bic r0, r0, #0xc0 799173eae7Such msr cpsr, r0 809173eae7Such mov pc, lr 819173eae7Such ENDP ; |EI| 829173eae7Such 839173eae7Such ; 849173eae7Such ; Cache ops. 859173eae7Such ; 869173eae7Such EXPORT |InvalidateICache| 879173eae7Such|InvalidateICache| PROC 889173eae7Such ; c7 (CRn) Cache Control Register 899173eae7Such ; c5, 0 (CRm, opcode_2) Flush I 909173eae7Such ; r0 (Rd) ignored 919173eae7Such mcr p15, 0, r0, c7, c5, 0 929173eae7Such mov pc, lr 939173eae7Such ENDP ; |InvalidateICache| 949173eae7Such 959173eae7Such EXPORT |WritebackDCache| 969173eae7Such|WritebackDCache| PROC 97*569b7f92Snonaka ldr r0, [pc, #24] ; dcachebuf 98*569b7f92Snonaka ldr r1, [pc, #24] 99*569b7f92Snonaka ldr r1, [r1] ; dcache-size 100*569b7f92Snonaka add r1, r1, r0 1019173eae7Such|wbdc1| 1029173eae7Such ldr r2, [r0], #32 ; line-size is 32byte. 1039173eae7Such teq r1, r0 1049173eae7Such bne |wbdc1| 1059173eae7Such mov pc, lr 1069173eae7Such DCD |dcachebuf| 107*569b7f92Snonaka DCD |dcachesize| 1089173eae7Such ENDP ; |WritebackDCache| 1099173eae7Such 1109173eae7Such EXPORT |InvalidateDCache| 1119173eae7Such|InvalidateDCache| PROC 1129173eae7Such ; c7 (CRn) Cache Control Register 1139173eae7Such ; c6, 0 (CRm, opcode_2) Flush D 1149173eae7Such ; r0 (Rd) ignored 1159173eae7Such mcr p15, 0, r0, c7, c6, 0 1169173eae7Such mov pc, lr 1179173eae7Such ENDP ; |InvalidateDCache| 1189173eae7Such 1199173eae7Such EXPORT |WritebackInvalidateDCache| 1209173eae7Such|WritebackInvalidateDCache| PROC 121*569b7f92Snonaka ldr r0, [pc, #28] ; dcachebuf 122*569b7f92Snonaka ldr r1, [pc, #28] 123*569b7f92Snonaka ldr r1, [r1] ; dcache-size 124*569b7f92Snonaka add r1, r1, r0 1259173eae7Such|wbidc1| 1269173eae7Such ldr r2, [r0], #32 1279173eae7Such teq r1, r0 1289173eae7Such bne |wbidc1| 1299173eae7Such mcr p15, 0, r0, c7, c6, 0 1309173eae7Such mov pc, lr 1319173eae7Such DCD |dcachebuf| 132*569b7f92Snonaka DCD |dcachesize| 1339173eae7Such ENDP ; |WritebackInvalidateDCache| 1349173eae7Such 1359173eae7Such ; 1369173eae7Such ; WriteBuffer ops 1379173eae7Such ; 1389173eae7Such EXPORT |WritebufferFlush| 1399173eae7Such|WritebufferFlush| PROC 1409173eae7Such ; c7 (CRn) Cache Control Register 1419173eae7Such ; c10, 4(CRm, opcode_2) Flush D 1429173eae7Such ; r0 (Rd) ignored 1439173eae7Such mcr p15, 0, r0, c7, c10, 4 1449173eae7Such mov pc, lr 1459173eae7Such ENDP ; |WritebufferFlush| 1469173eae7Such 1479173eae7Such ; 1489173eae7Such ; TLB ops. 1499173eae7Such ; 1509173eae7Such EXPORT |FlushIDTLB| 1519173eae7Such|FlushIDTLB| PROC 1529173eae7Such mcr p15, 0, r0, c8, c7, 0 1539173eae7Such mov pc, lr 1549173eae7Such ENDP ; |FlushIDTLB| 1559173eae7Such 1569173eae7Such EXPORT |FlushITLB| 1579173eae7Such|FlushITLB| PROC 1589173eae7Such mcr p15, 0, r0, c8, c5, 0 1599173eae7Such mov pc, lr 1609173eae7Such ENDP ; |FlushITLB| 1619173eae7Such 1629173eae7Such EXPORT |FlushDTLB| 1639173eae7Such|FlushDTLB| PROC 1649173eae7Such mcr p15, 0, r0, c8, c6, 0 1659173eae7Such mov pc, lr 1669173eae7Such ENDP ; |FlushITLB| 1679173eae7Such 1689173eae7Such EXPORT |FlushDTLBS| 1699173eae7Such|FlushDTLBS| PROC 1709173eae7Such mcr p15, 0, r0, c8, c6, 1 1719173eae7Such mov pc, lr 1729173eae7Such ENDP ; |FlushITLBS| 1739173eae7Such 1749173eae7Such ; 1759173eae7Such ; CurrentProgramStatusRegister access. 1769173eae7Such ; 1779173eae7Such EXPORT |GetCPSR| 1789173eae7Such|GetCPSR| PROC 1799173eae7Such mrs r0, cpsr 1809173eae7Such mov pc, lr 1819173eae7Such ENDP ; |GetCPSR| 1829173eae7Such 1839173eae7Such EXPORT |SetCPSR| 1849173eae7Such|SetCPSR| PROC 1859173eae7Such msr cpsr, r0 1869173eae7Such mov pc, lr 1879173eae7Such ENDP ; |SetCPSR| 1889173eae7Such 1899173eae7Such ; 1909173eae7Such ; SA-1100 Coprocessor15 access. 1919173eae7Such ; 1929173eae7Such; Reg0 ID (R) 1939173eae7Such EXPORT |GetCop15Reg0| 1949173eae7Such|GetCop15Reg0| PROC 1959173eae7Such mrc p15, 0, r0, c0, c0, 0 1969173eae7Such ; 0x4401a119 (44|01 = version 4|A11 = SA1100|9 = E stepping) 1979173eae7Such mov pc, lr 1989173eae7Such ENDP ; |GetCop15Reg0| 1999173eae7Such 2009173eae7Such; Reg1 Control (R/W) 2019173eae7Such EXPORT |GetCop15Reg1| 2029173eae7Such|GetCop15Reg1| PROC 2039173eae7Such mrc p15, 0, r0, c1, c0, 0 2049173eae7Such ; 0xc007327f (||...........|||..||..|..|||||||) 2059173eae7Such ; 0 (1)MMU enabled 2069173eae7Such ; 1 (1)Address fault enabled 2079173eae7Such ; 2 (1)D-cache enabled 2089173eae7Such ; 3 (1)Write-buffer enabled 2099173eae7Such ; 7 (0)little-endian 2109173eae7Such ; 8 (0)MMU protection (System) 2119173eae7Such ; 9 (1)MMU protection (ROM) 2129173eae7Such ; 12 (1)I-cache enabled 2139173eae7Such ; 13 (1)Base address of interrupt vector is 0xffff0000 2149173eae7Such mov pc, lr 2159173eae7Such ENDP ; |GetCop15Reg1| 2169173eae7Such EXPORT |SetCop15Reg1| 2179173eae7Such|SetCop15Reg1| PROC 2189173eae7Such mcr p15, 0, r0, c1, c0, 0 2199173eae7Such nop 2209173eae7Such nop 2219173eae7Such nop 2229173eae7Such mov pc, lr 2239173eae7Such ENDP ; |SetCop15Reg1| 2249173eae7Such 2259173eae7Such; Reg2 Translation table base (R/W) 2269173eae7Such EXPORT |GetCop15Reg2| 2279173eae7Such|GetCop15Reg2| PROC 2289173eae7Such mrc p15, 0, r0, c2, c0, 0 2299173eae7Such mov pc, lr 2309173eae7Such ENDP ; |GetCop15Reg2| 2319173eae7Such EXPORT |SetCop15Reg2| 2329173eae7Such|SetCop15Reg2| PROC 2339173eae7Such mcr p15, 0, r0, c2, c0, 0 2349173eae7Such mov pc, lr 2359173eae7Such ENDP ; |SetCop15Reg2| 2369173eae7Such 2379173eae7Such; Reg3 Domain access control (R/W) 2389173eae7Such EXPORT |GetCop15Reg3| 2399173eae7Such|GetCop15Reg3| PROC 2409173eae7Such mrc p15, 0, r0, c3, c0, 0 2419173eae7Such mov pc, lr 2429173eae7Such ENDP ; |GetCop15Reg3| 2439173eae7Such EXPORT |SetCop15Reg3| 2449173eae7Such|SetCop15Reg3| PROC 2459173eae7Such mcr p15, 0, r0, c3, c0, 0 2469173eae7Such mov pc, lr 2479173eae7Such ENDP ; |SetCop15Reg3| 2489173eae7Such 2499173eae7Such; Reg5 Fault status (R/W) 2509173eae7Such EXPORT |GetCop15Reg5| 2519173eae7Such|GetCop15Reg5| PROC 2529173eae7Such mrc p15, 0, r0, c5, c0, 0 2539173eae7Such mov pc, lr 2549173eae7Such ENDP ; |GetCop15Reg5| 2559173eae7Such 2569173eae7Such; Reg6 Fault address (R/W) 2579173eae7Such EXPORT |GetCop15Reg6| 2589173eae7Such|GetCop15Reg6| PROC 2599173eae7Such mrc p15, 0, r0, c6, c0, 0 2609173eae7Such mov pc, lr 2619173eae7Such ENDP ; |GetCop15Reg6| 2629173eae7Such 2639173eae7Such; Reg7 Cache operations (W) 2649173eae7Such ; -> Cache ops 2659173eae7Such; Reg8 TLB operations (Flush) (W) 2669173eae7Such ; -> TLB ops 2679173eae7Such; Reg9 Read buffer operations (W) 2689173eae7Such; Reg13 Process ID (R/W) 2699173eae7Such EXPORT |GetCop15Reg13| 2709173eae7Such|GetCop15Reg13| PROC 2719173eae7Such mrc p15, 0, r0, c13, c0, 0 2729173eae7Such mov pc, lr 2739173eae7Such ENDP ; |GetCop15Reg13| 2749173eae7Such EXPORT |SetCop15Reg13| 2759173eae7Such|SetCop15Reg13| PROC 2769173eae7Such mcr p15, 0, r0, c13, c0, 0 2779173eae7Such mov pc, lr 2789173eae7Such ENDP ; |SetCop15Reg13| 2799173eae7Such 2809173eae7Such; Reg14 Breakpoint (R/W) 2819173eae7Such EXPORT |GetCop15Reg14| 2829173eae7Such|GetCop15Reg14| PROC 2839173eae7Such mrc p15, 0, r0, c14, c0, 0 2849173eae7Such mov pc, lr 2859173eae7Such ENDP ; |GetCop15Reg14| 2869173eae7Such; Reg15 Test, clock, and idle (W) 2879173eae7Such 2889173eae7Such END 289