xref: /netbsd-src/sys/arch/acorn32/stand/lib/riscoscalls.S (revision fd1714100db6fda37051333b19efb01cda93f129)
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