1*fd171410Ssborrill/* $NetBSD: riscoscalls.S,v 1.12 2019/01/23 14:49:00 sborrill Exp $ */ 246dbb0f2Sreinoud 346dbb0f2Sreinoud/*- 446dbb0f2Sreinoud * Copyright (c) 2001 Ben Harris 546dbb0f2Sreinoud * Copyright (c) 2002 Reinoud Zandijk 646dbb0f2Sreinoud * All rights reserved. 746dbb0f2Sreinoud * 846dbb0f2Sreinoud * Redistribution and use in source and binary forms, with or without 946dbb0f2Sreinoud * modification, are permitted provided that the following conditions 1046dbb0f2Sreinoud * are met: 1146dbb0f2Sreinoud * 1. Redistributions of source code must retain the above copyright 1246dbb0f2Sreinoud * notice, this list of conditions and the following disclaimer. 1346dbb0f2Sreinoud * 2. Redistributions in binary form must reproduce the above copyright 1446dbb0f2Sreinoud * notice, this list of conditions and the following disclaimer in the 1546dbb0f2Sreinoud * documentation and/or other materials provided with the distribution. 1646dbb0f2Sreinoud * 3. The name of the author may not be used to endorse or promote products 1746dbb0f2Sreinoud * derived from this software without specific prior written permission. 1846dbb0f2Sreinoud * 1946dbb0f2Sreinoud * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 2046dbb0f2Sreinoud * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 2146dbb0f2Sreinoud * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 2246dbb0f2Sreinoud * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 2346dbb0f2Sreinoud * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 2446dbb0f2Sreinoud * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2546dbb0f2Sreinoud * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2646dbb0f2Sreinoud * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2746dbb0f2Sreinoud * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 2846dbb0f2Sreinoud * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2946dbb0f2Sreinoud */ 3046dbb0f2Sreinoud 3146dbb0f2Sreinoud#include <machine/asm.h> 3246dbb0f2Sreinoud#include <riscoscalls.h> 3346dbb0f2Sreinoud 3446dbb0f2SreinoudENTRY(os_writec) 3546dbb0f2Sreinoud mov ip, sp 3646dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 3746dbb0f2Sreinoud sub fp, ip, #4 3846dbb0f2Sreinoud swi OS_WriteC 3946dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 4046dbb0f2Sreinoud 4146dbb0f2SreinoudENTRY(os_new_line) 4246dbb0f2Sreinoud mov ip, sp 4346dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 4446dbb0f2Sreinoud sub fp, ip, #4 4546dbb0f2Sreinoud swi OS_NewLine 4646dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 4746dbb0f2Sreinoud 4846dbb0f2SreinoudENTRY(os_readc) 4946dbb0f2Sreinoud mov ip, sp 5046dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 5146dbb0f2Sreinoud sub fp, ip, #4 5246dbb0f2Sreinoud swi OS_ReadC 5346dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 5446dbb0f2Sreinoud 55b6c0709cSbjh21ENTRY(os_cli) 5646dbb0f2Sreinoud mov ip, sp 5746dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 5846dbb0f2Sreinoud sub fp, ip, #4 5946dbb0f2Sreinoud swi OS_CLI 6046dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 6146dbb0f2Sreinoud 62b6c0709cSbjh21ENTRY(xos_cli) 6346dbb0f2Sreinoud mov ip, sp 6446dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 6546dbb0f2Sreinoud sub fp, ip, #4 66cf7ce97eSbjh21 swi XOS_CLI 6746dbb0f2Sreinoud movvc r0, #0 6846dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 6946dbb0f2Sreinoud 7046dbb0f2SreinoudENTRY(os_byte) 7146dbb0f2Sreinoud mov ip, sp 7246dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 7346dbb0f2Sreinoud sub fp, ip, #4 7446dbb0f2Sreinoud swi OS_Byte 7546dbb0f2Sreinoud teq r3, #0 7646dbb0f2Sreinoud strne r1, [r3] 7746dbb0f2Sreinoud ldr r3, [fp, #4] 7846dbb0f2Sreinoud teq r3, #0 7946dbb0f2Sreinoud strne r2, [r3] 8046dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 8146dbb0f2Sreinoud 82da29c632Sbjh21ENTRY(osbyte_read) 83da29c632Sbjh21 mov ip, sp 84da29c632Sbjh21 stmfd sp!, {fp, ip, lr, pc} 85da29c632Sbjh21 sub fp, ip, #4 86da29c632Sbjh21 mov r1, #0 87da29c632Sbjh21 mov r2, #255 88da29c632Sbjh21 swi OS_Byte 89da29c632Sbjh21 mov r0, r1 90da29c632Sbjh21 ldmdb fp, {fp, sp, pc} 91da29c632Sbjh21 9246dbb0f2SreinoudENTRY(os_word) 9346dbb0f2Sreinoud mov ip, sp 9446dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 9546dbb0f2Sreinoud sub fp, ip, #4 9646dbb0f2Sreinoud swi OS_Word 9746dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 9846dbb0f2Sreinoud 9946dbb0f2SreinoudENTRY(xosargs_read) 10046dbb0f2Sreinoud mov ip, sp 10146dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 10246dbb0f2Sreinoud sub fp, ip, #4 10346dbb0f2Sreinoud mov r3, r2 104bc24b5d8Sbjh21 swi XOS_Args 105ee7f66d5Sskrll ldmdbvs fp, {fp, sp, pc} 10646dbb0f2Sreinoud teq r3, #0 10746dbb0f2Sreinoud strne r2, [r3] 10846dbb0f2Sreinoud mov r0, #0 10946dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 11046dbb0f2Sreinoud 11146dbb0f2SreinoudENTRY(xosargs_set) 11246dbb0f2Sreinoud mov ip, sp 11346dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 11446dbb0f2Sreinoud sub fp, ip, #4 115bc24b5d8Sbjh21 swi XOS_Args 11646dbb0f2Sreinoud movvc r0, #0 11746dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 11846dbb0f2Sreinoud 11946dbb0f2SreinoudENTRY(xosgbpb_write) 12046dbb0f2Sreinoud mov ip, sp 12146dbb0f2Sreinoud stmfd sp!, {r4, fp, ip, lr, pc} 12246dbb0f2Sreinoud sub fp, ip, #4 12346dbb0f2Sreinoud mov ip, r3 12446dbb0f2Sreinoud mov r3, r2 12546dbb0f2Sreinoud mov r2, r1 12646dbb0f2Sreinoud mov r1, r0 12746dbb0f2Sreinoud mov r0, #OSGBPB_Write 12846dbb0f2Sreinoud swi XOS_GBPB 12946dbb0f2Sreinoud teq ip, #0 13046dbb0f2Sreinoud strne r3, [ip] 13146dbb0f2Sreinoud movvc r0, #0 13246dbb0f2Sreinoud ldmdb fp, {r4, fp, sp, pc} 13346dbb0f2Sreinoud 13446dbb0f2SreinoudENTRY(xosgbpb_read) 13546dbb0f2Sreinoud mov ip, sp 13646dbb0f2Sreinoud stmfd sp!, {r4, fp, ip, lr, pc} 13746dbb0f2Sreinoud sub fp, ip, #4 13846dbb0f2Sreinoud mov ip, r3 13946dbb0f2Sreinoud mov r3, r2 14046dbb0f2Sreinoud mov r2, r1 14146dbb0f2Sreinoud mov r1, r0 14246dbb0f2Sreinoud mov r0, #OSGBPB_Read 14346dbb0f2Sreinoud swi XOS_GBPB 14446dbb0f2Sreinoud teq ip, #0 14546dbb0f2Sreinoud strne r3, [ip] 14646dbb0f2Sreinoud movvc r0, #0 14746dbb0f2Sreinoud ldmdb fp, {r4, fp, sp, pc} 14846dbb0f2Sreinoud 14946dbb0f2SreinoudENTRY(xosfind_close) 15046dbb0f2Sreinoud mov ip, sp 15146dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 15246dbb0f2Sreinoud sub fp, ip, #4 15346dbb0f2Sreinoud mov r1, r0 15446dbb0f2Sreinoud mov r0, #OSFind_Close 15546dbb0f2Sreinoud swi XOS_Find 15646dbb0f2Sreinoud movvc r0, #0 15746dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 15846dbb0f2Sreinoud 15946dbb0f2SreinoudENTRY(xosfind_open) 16046dbb0f2Sreinoud mov ip, sp 16146dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 16246dbb0f2Sreinoud sub fp, ip, #4 16346dbb0f2Sreinoud swi XOS_Find 164ee7f66d5Sskrll ldmdbvs fp, {fp, sp, pc} 16546dbb0f2Sreinoud teq r3, #0 16646dbb0f2Sreinoud strne r0, [r3] 16746dbb0f2Sreinoud mov r0, #0 16846dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 16946dbb0f2Sreinoud 17046dbb0f2SreinoudENTRY(os_get_env) 17146dbb0f2Sreinoud mov ip, sp 17246dbb0f2Sreinoud stmfd sp!, {r4, fp, ip, lr, pc} 17346dbb0f2Sreinoud sub fp, ip, #4 174f6aee98eSgavan mov r3, r0 175f6aee98eSgavan mov r4, r1 17646dbb0f2Sreinoud swi OS_GetEnv 17746dbb0f2Sreinoud teq r3, #0 17846dbb0f2Sreinoud strne r1, [r3] 17946dbb0f2Sreinoud teq r4, #0 18046dbb0f2Sreinoud strne r2, [r4] 18146dbb0f2Sreinoud ldmdb fp, {r4, fp, sp, pc} 18246dbb0f2Sreinoud 18346dbb0f2SreinoudENTRY(os_exit) 18446dbb0f2Sreinoud mov ip, sp 18546dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 18646dbb0f2Sreinoud sub fp, ip, #4 18746dbb0f2Sreinoud mov r2, r1 18846dbb0f2Sreinoud ldr r1, Labex 18946dbb0f2Sreinoud swi OS_Exit 19046dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 19146dbb0f2SreinoudLabex: 19246dbb0f2Sreinoud .ascii "ABEX" 19346dbb0f2Sreinoud 19446dbb0f2SreinoudENTRY(os_int_off) 19546dbb0f2Sreinoud mov ip, sp 19646dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 19746dbb0f2Sreinoud sub fp, ip, #4 19846dbb0f2Sreinoud swi OS_IntOff 19946dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 20046dbb0f2Sreinoud 20146dbb0f2SreinoudENTRY(os_enter_os) 20246dbb0f2Sreinoud mov ip, sp 20346dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 20446dbb0f2Sreinoud sub fp, ip, #4 20546dbb0f2Sreinoud swi OS_EnterOS 20646dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 20746dbb0f2Sreinoud 208bc24b5d8Sbjh21ENTRY(xosmodule_alloc) 209bc24b5d8Sbjh21 mov ip, sp 210bc24b5d8Sbjh21 stmfd sp!, {fp, ip, lr, pc} 211bc24b5d8Sbjh21 sub fp, ip, #4 212bc24b5d8Sbjh21 mov r3, r0 213bc24b5d8Sbjh21 mov r0, #OSModule_Alloc 214bc24b5d8Sbjh21 swi XOS_Module 215ee7f66d5Sskrll ldmdbvs fp, {fp, sp, pc} 216bc24b5d8Sbjh21 teq r1, #0 217bc24b5d8Sbjh21 strne r2, [r1] 218bc24b5d8Sbjh21 mov r0, #0 219bc24b5d8Sbjh21 ldmdb fp, {fp, sp, pc} 220bc24b5d8Sbjh21 221bc24b5d8Sbjh21ENTRY(xosmodule_free) 222bc24b5d8Sbjh21 mov ip, sp 223bc24b5d8Sbjh21 stmfd sp!, {fp, ip, lr, pc} 224bc24b5d8Sbjh21 sub fp, ip, #4 225c5e6021bSbjh21 mov r2, r0 226bc24b5d8Sbjh21 mov r0, #OSModule_Free 227bc24b5d8Sbjh21 swi XOS_Module 228bc24b5d8Sbjh21 movvc r0, #0 229bc24b5d8Sbjh21 ldmdb fp, {fp, sp, pc} 230bc24b5d8Sbjh21 231bc24b5d8Sbjh21ENTRY(xosmodule_lookup) 232bc24b5d8Sbjh21 mov ip, sp 233bc24b5d8Sbjh21 stmfd sp!, {r4-r8, fp, ip, lr, pc} 234bc24b5d8Sbjh21 sub fp, ip, #4 235bc24b5d8Sbjh21 mov r6, r1 236bc24b5d8Sbjh21 mov r7, r2 237bc24b5d8Sbjh21 mov r8, r3 238bc24b5d8Sbjh21 mov r1, r0 239bc24b5d8Sbjh21 mov r0, #OSModule_Lookup 240bc24b5d8Sbjh21 swi XOS_Module 241ee7f66d5Sskrll ldmdbvs fp, {r4-r8, fp, sp, pc} 242bc24b5d8Sbjh21 teq r6, #0 243bc24b5d8Sbjh21 strne r1, [r6] 244bc24b5d8Sbjh21 teq r7, #0 245bc24b5d8Sbjh21 strne r2, [r7] 246bc24b5d8Sbjh21 teq r8, #0 247bc24b5d8Sbjh21 strne r3, [r8] 248bc24b5d8Sbjh21 ldr r8, [fp, #4] 249bc24b5d8Sbjh21 teq r8, #0 250bc24b5d8Sbjh21 strne r4, [r8] 251bc24b5d8Sbjh21 ldr r8, [fp, #8] 252bc24b5d8Sbjh21 teq r8, #0 253bc24b5d8Sbjh21 strne r5, [r8] 254bc24b5d8Sbjh21 mov r0, #0 255bc24b5d8Sbjh21 ldmdb fp, {r4-r8, fp, sp, pc} 256bc24b5d8Sbjh21 257*fd171410SsborrillENTRY(xosmodule_enumeratewithversion) 258*fd171410Ssborrill mov ip, sp 259*fd171410Ssborrill stmfd sp!, {r4-r10, fp, ip, lr, pc} 260*fd171410Ssborrill sub fp, ip, #4 261*fd171410Ssborrill mov r7, r0 262*fd171410Ssborrill mov r8, r1 263*fd171410Ssborrill mov r9, r2 264*fd171410Ssborrill mov r10, r3 265*fd171410Ssborrill ldr r1, [r7] 266*fd171410Ssborrill ldr r2, [r8] 267*fd171410Ssborrill mov r0, #OSModule_EnumerateWithVersion 268*fd171410Ssborrill swi XOS_Module 269*fd171410Ssborrill ldmdbvs fp, {r4-r10, fp, sp, pc} 270*fd171410Ssborrill str r1, [r7] 271*fd171410Ssborrill str r2, [r8] 272*fd171410Ssborrill teq r9, #0 273*fd171410Ssborrill strne r3, [r9] 274*fd171410Ssborrill teq r9, #0 275*fd171410Ssborrill strne r3, [r9] 276*fd171410Ssborrill teq r10, #0 277*fd171410Ssborrill strne r4, [r10] 278*fd171410Ssborrill ldr r10, [fp, #4] 279*fd171410Ssborrill teq r10, #0 280*fd171410Ssborrill strne r5, [r10] 281*fd171410Ssborrill ldr r10, [fp, #8] 282*fd171410Ssborrill teq r10, #0 283*fd171410Ssborrill strne r6, [r10] 284*fd171410Ssborrill mov r0, #0 285*fd171410Ssborrill ldmdb fp, {r4-r10, fp, sp, pc} 286*fd171410Ssborrill 28746dbb0f2SreinoudENTRY(xosfscontrol_shutdown) 28846dbb0f2Sreinoud mov ip, sp 28946dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 29046dbb0f2Sreinoud sub fp, ip, #4 29146dbb0f2Sreinoud mov r0, #OSFSControl_Shutdown 29246dbb0f2Sreinoud swi XOS_FSControl 29346dbb0f2Sreinoud movvc r0, #0 29446dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 29546dbb0f2Sreinoud 29646dbb0f2SreinoudENTRY(service_pre_reset) 29746dbb0f2Sreinoud mov ip, sp 29846dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 29946dbb0f2Sreinoud sub fp, ip, #4 30046dbb0f2Sreinoud mov r1, #Service_PreReset 30146dbb0f2Sreinoud swi OS_ServiceCall 30246dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 30346dbb0f2Sreinoud 30446dbb0f2SreinoudENTRY(os_read_vdu_variables) 30546dbb0f2Sreinoud mov ip, sp 30646dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 30746dbb0f2Sreinoud sub fp, ip, #4 30846dbb0f2Sreinoud swi OS_ReadVduVariables 30946dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 31046dbb0f2Sreinoud 31146dbb0f2SreinoudENTRY(xos_swi_number_from_string) 31246dbb0f2Sreinoud mov ip, sp 31346dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 31446dbb0f2Sreinoud sub fp, ip, #4 31546dbb0f2Sreinoud mov r2, r1 31646dbb0f2Sreinoud mov r1, r0 31746dbb0f2Sreinoud swi XOS_SWINumberFromString 318ee7f66d5Sskrll ldmdbvs fp, {fp, sp, pc} 31946dbb0f2Sreinoud str r0, [r2] 32046dbb0f2Sreinoud mov r0, #0 32146dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 32246dbb0f2Sreinoud 323da29c632Sbjh21ENTRY(os_read_monotonic_time) 324da29c632Sbjh21 mov ip, sp 325da29c632Sbjh21 stmfd sp!, {fp, ip, lr, pc} 326da29c632Sbjh21 sub fp, ip, #4 327da29c632Sbjh21 swi OS_ReadMonotonicTime 328da29c632Sbjh21 ldmdb fp, {fp, sp, pc} 329da29c632Sbjh21 33046dbb0f2SreinoudENTRY(os_read_mem_map_info) 33146dbb0f2Sreinoud mov ip, sp 33246dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 33346dbb0f2Sreinoud sub fp, ip, #4 33446dbb0f2Sreinoud mov r2, r0 33546dbb0f2Sreinoud mov r3, r1 33646dbb0f2Sreinoud swi OS_ReadMemMapInfo 33746dbb0f2Sreinoud teq r2, #0 33846dbb0f2Sreinoud strne r0, [r2] 33946dbb0f2Sreinoud teq r3, #0 34046dbb0f2Sreinoud strne r1, [r3] 34146dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 34246dbb0f2Sreinoud 34346dbb0f2SreinoudENTRY(os_readsysinfo) 34446dbb0f2Sreinoud mov ip, sp 34546dbb0f2Sreinoud stmfd sp!, {r4-r9, fp, ip, lr, pc} 34646dbb0f2Sreinoud sub fp, ip, #4 34746dbb0f2Sreinoud mov r9, r5 34846dbb0f2Sreinoud mov r8, r4 34946dbb0f2Sreinoud mov r7, r3 35046dbb0f2Sreinoud mov r6, r2 35146dbb0f2Sreinoud mov r5, r1 35246dbb0f2Sreinoud swi OS_ReadSysInfo 35346dbb0f2Sreinoud teq r5, #0 35446dbb0f2Sreinoud strne r0, [r5] 35546dbb0f2Sreinoud teq r6, #0 35646dbb0f2Sreinoud strne r1, [r6] 35746dbb0f2Sreinoud teq r7, #0 35846dbb0f2Sreinoud strne r2, [r7] 35946dbb0f2Sreinoud ldr r1, [ip, #0] 36046dbb0f2Sreinoud teq r1, #0 36146dbb0f2Sreinoud strne r3, [r1] 36246dbb0f2Sreinoud ldr r1, [ip, #4] 36346dbb0f2Sreinoud teq r1, #0 36446dbb0f2Sreinoud strne r4, [r1] 36546dbb0f2Sreinoud ldmdb fp, {r4-r9, fp, sp, pc} 36646dbb0f2Sreinoud 36746dbb0f2SreinoudENTRY(os_read_mem_map_entries) 36846dbb0f2Sreinoud mov ip, sp 36946dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 37046dbb0f2Sreinoud sub fp, ip, #4 37146dbb0f2Sreinoud swi OS_ReadMemMapEntries 37246dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 37346dbb0f2Sreinoud 37446dbb0f2SreinoudENTRY(osmemory_read_arrangement_table_size) 37546dbb0f2Sreinoud mov ip, sp 37646dbb0f2Sreinoud stmfd sp!, {r4, fp, ip, lr, pc} 37746dbb0f2Sreinoud sub fp, ip, #4 37846dbb0f2Sreinoud mov r3, r0 37946dbb0f2Sreinoud mov r4, r1 38046dbb0f2Sreinoud mov r0, #OSMemory_ReadArrangementTableSize 38146dbb0f2Sreinoud swi OS_Memory 38246dbb0f2Sreinoud cmp r3, #0 38346dbb0f2Sreinoud strne r1, [r3] 38446dbb0f2Sreinoud cmp r4, #0 38546dbb0f2Sreinoud strne r2, [r4] 38646dbb0f2Sreinoud ldmdb fp, {r4, fp, sp, pc} 38746dbb0f2Sreinoud 388ac8af882Sbjh21ENTRY(xosmemory_read_arrangement_table_size) 389ac8af882Sbjh21 mov ip, sp 390ac8af882Sbjh21 stmfd sp!, {r4, fp, ip, lr, pc} 391ac8af882Sbjh21 sub fp, ip, #4 392ac8af882Sbjh21 mov r3, r0 393ac8af882Sbjh21 mov r4, r1 394ac8af882Sbjh21 mov r0, #OSMemory_ReadArrangementTableSize 395ac8af882Sbjh21 swi XOS_Memory 396ee7f66d5Sskrll ldmdbvs fp, {r4, fp, sp, pc} 397ac8af882Sbjh21 cmp r3, #0 398ac8af882Sbjh21 strne r1, [r3] 399ac8af882Sbjh21 cmp r4, #0 400ac8af882Sbjh21 strne r2, [r4] 401ac8af882Sbjh21 mov r0, #0 402ac8af882Sbjh21 ldmdb fp, {r4, fp, sp, pc} 403ac8af882Sbjh21 40446dbb0f2SreinoudENTRY(osmemory_read_arrangement_table) 40546dbb0f2Sreinoud mov ip, sp 40646dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 40746dbb0f2Sreinoud sub fp, ip, #4 40846dbb0f2Sreinoud mov r1, r0 40946dbb0f2Sreinoud mov r0, #OSMemory_ReadArrangementTable 41046dbb0f2Sreinoud swi OS_Memory 41146dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 41246dbb0f2Sreinoud 413ac8af882Sbjh21ENTRY(xosmemory_read_arrangement_table) 414ac8af882Sbjh21 mov ip, sp 415ac8af882Sbjh21 stmfd sp!, {fp, ip, lr, pc} 416ac8af882Sbjh21 sub fp, ip, #4 417ac8af882Sbjh21 mov r1, r0 418ac8af882Sbjh21 mov r0, #OSMemory_ReadArrangementTable 419ac8af882Sbjh21 swi XOS_Memory 420ac8af882Sbjh21 movvc r0, #0 421ac8af882Sbjh21 ldmdb fp, {fp, sp, pc} 422ac8af882Sbjh21 42346dbb0f2SreinoudENTRY(osmemory_page_op) 42446dbb0f2Sreinoud mov ip, sp 42546dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 42646dbb0f2Sreinoud sub fp, ip, #4 42746dbb0f2Sreinoud add r0, r0, #OSMemory_PageOp 42846dbb0f2Sreinoud swi OS_Memory 42946dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 43046dbb0f2Sreinoud 43146dbb0f2SreinoudENTRY(xcache_control) 43246dbb0f2Sreinoud mov ip, sp 43346dbb0f2Sreinoud stmfd sp!, {fp, ip, lr, pc} 43446dbb0f2Sreinoud sub fp, ip, #4 43546dbb0f2Sreinoud swi XCache_Control 436ee7f66d5Sskrll ldmdbvs fp, {fp, sp, pc} 43746dbb0f2Sreinoud teq r2, #0 43846dbb0f2Sreinoud strne r0, [r2] 43946dbb0f2Sreinoud mov r0, #0 44046dbb0f2Sreinoud ldmdb fp, {fp, sp, pc} 441bc24b5d8Sbjh21 442bc24b5d8Sbjh21ENTRY(xfilecorediscop_read_sectors) 443bc24b5d8Sbjh21 mov ip, sp 444bc24b5d8Sbjh21 stmfd sp!, {r4, r8, fp, ip, lr, pc} 445bc24b5d8Sbjh21 sub fp, ip, #4 446bc24b5d8Sbjh21 mov r4, r3 447bc24b5d8Sbjh21 mov r3, r2 448bc24b5d8Sbjh21 mov r2, r1 449bc24b5d8Sbjh21 orr r1, r0, #FileCoreDiscOp_ReadSectors 450bc24b5d8Sbjh21 ldr r8, [fp, #4] 451bc24b5d8Sbjh21 swi XFileCore_DiscOp 452ee7f66d5Sskrll ldmdbvs fp, {r4, r8, fp, sp, pc} 453bc24b5d8Sbjh21 ldr r0, [fp, #8] 454bc24b5d8Sbjh21 teq r0, #0 455bc24b5d8Sbjh21 strne r2, [r0] 456bc24b5d8Sbjh21 ldr r0, [fp, #12] 457bc24b5d8Sbjh21 teq r0, #0 458bc24b5d8Sbjh21 strne r3, [r0] 459bc24b5d8Sbjh21 ldr r0, [fp, #16] 460bc24b5d8Sbjh21 teq r0, #0 461bc24b5d8Sbjh21 strne r4, [r0] 462bc24b5d8Sbjh21 mov r0, #0 463bc24b5d8Sbjh21 ldmdb fp, {r4, r8, fp, sp, pc} 464bc24b5d8Sbjh21 465bc24b5d8Sbjh21ENTRY(xfilecore_drives) 466bc24b5d8Sbjh21 mov ip, sp 467bc24b5d8Sbjh21 stmfd sp!, {r4-r5, r8, fp, ip, lr, pc} 468bc24b5d8Sbjh21 sub fp, ip, #4 469bc24b5d8Sbjh21 mov r5, r3 470bc24b5d8Sbjh21 mov r4, r2 471bc24b5d8Sbjh21 mov r3, r1 472bc24b5d8Sbjh21 mov r8, r0 473bc24b5d8Sbjh21 swi XFileCore_Drives 474ee7f66d5Sskrll ldmdbvs fp, {r4-r5, r8, fp, sp, pc} 475bc24b5d8Sbjh21 teq r3, #0 476bc24b5d8Sbjh21 strne r0, [r3] 477bc24b5d8Sbjh21 teq r4, #0 478bc24b5d8Sbjh21 strne r1, [r4] 479bc24b5d8Sbjh21 teq r5, #0 480bc24b5d8Sbjh21 strne r2, [r5] 481bc24b5d8Sbjh21 mov r0, #0 482bc24b5d8Sbjh21 ldmdb fp, {r4-r5, r8, fp, sp, pc} 483bc24b5d8Sbjh21 484bc24b5d8Sbjh21ENTRY(xfilecoresectorop_read_sectors) 485bc24b5d8Sbjh21 mov ip, sp 486bc24b5d8Sbjh21 stmfd sp!, {r4, r8, fp, ip, lr, pc} 487bc24b5d8Sbjh21 sub fp, ip, #4 488bc24b5d8Sbjh21 mov r4, r3 489bc24b5d8Sbjh21 mov r3, r2 490bc24b5d8Sbjh21 mov r2, r1 491bc24b5d8Sbjh21 orr r1, r0, #FileCoreDiscOp_ReadSectors 492bc24b5d8Sbjh21 ldr r8, [fp, #4] 493bc24b5d8Sbjh21 swi XFileCore_SectorOp 494ee7f66d5Sskrll ldmdbvs fp, {r4, r8, fp, sp, pc} 495bc24b5d8Sbjh21 ldr r0, [fp, #8] 496bc24b5d8Sbjh21 teq r0, #0 497bc24b5d8Sbjh21 strne r2, [r0] 498bc24b5d8Sbjh21 ldr r0, [fp, #12] 499bc24b5d8Sbjh21 teq r0, #0 500bc24b5d8Sbjh21 strne r3, [r0] 501bc24b5d8Sbjh21 ldr r0, [fp, #16] 502bc24b5d8Sbjh21 teq r0, #0 503bc24b5d8Sbjh21 strne r4, [r0] 504bc24b5d8Sbjh21 mov r0, #0 505bc24b5d8Sbjh21 ldmdb fp, {r4, r8, fp, sp, pc} 506bc24b5d8Sbjh21 507bc24b5d8Sbjh21ENTRY(xfilecorediscop64_read_sectors) 508bc24b5d8Sbjh21 mov ip, sp 509bc24b5d8Sbjh21 stmfd sp!, {r4, r5, r8, fp, ip, lr, pc} 510bc24b5d8Sbjh21 sub fp, ip, #4 511bc24b5d8Sbjh21 mov r4, r3 512bc24b5d8Sbjh21 mov r3, r2 513bc24b5d8Sbjh21 mov r2, r1 514bc24b5d8Sbjh21 orr r1, r0, #FileCoreDiscOp_ReadSectors 515bc24b5d8Sbjh21 ldr r5, [fp, #4] 516bc24b5d8Sbjh21 ldr r8, [fp, #8] 517bc24b5d8Sbjh21 swi XFileCore_DiscOp64 518ee7f66d5Sskrll ldmdbvs fp, {r4, r5, r8, fp, sp, pc} 519bc24b5d8Sbjh21 ldr r0, [fp, #12] 520bc24b5d8Sbjh21 teq r0, #0 521bc24b5d8Sbjh21 strne r2, [r0] 522bc24b5d8Sbjh21 ldr r0, [fp, #16] 523bc24b5d8Sbjh21 teq r0, #0 524bc24b5d8Sbjh21 strne r3, [r0] 525bc24b5d8Sbjh21 ldr r0, [fp, #20] 526bc24b5d8Sbjh21 teq r0, #0 527bc24b5d8Sbjh21 strne r4, [r0] 528bc24b5d8Sbjh21 mov r0, #0 529bc24b5d8Sbjh21 ldmdb fp, {r4, r5, r8, fp, sp, pc} 530