No empty .Rs/.Re
[netbsd-mini2440.git] / sys / arch / acorn26 / stand / lib / riscoscalls.S
blob37b09ae1267bdef243893940bfef955e747ad9cc
1 /*      $NetBSD: riscoscalls.S,v 1.3 2005/12/11 12:16:05 christos Exp $ */
3 /*-
4  * Copyright (c) 2001 Ben Harris
5  * Copyright (c) 2002 Reinoud Zandijk
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  * 3. The name of the author may not be used to endorse or promote products
17  *    derived from this software without specific prior written permission.
18  * 
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
31 #include <machine/asm.h>
32 #include <riscoscalls.h>
34 ENTRY(os_writec)
35         mov     ip, sp
36         stmfd   sp!, {fp, ip, lr, pc}
37         sub     fp, ip, #4
38         swi     OS_WriteC
39         ldmdb   fp, {fp, sp, pc}
41 ENTRY(os_new_line)
42         mov     ip, sp
43         stmfd   sp!, {fp, ip, lr, pc}
44         sub     fp, ip, #4
45         swi     OS_NewLine
46         ldmdb   fp, {fp, sp, pc}
48 ENTRY(os_readc)
49         mov     ip, sp
50         stmfd   sp!, {fp, ip, lr, pc}
51         sub     fp, ip, #4
52         swi     OS_ReadC
53         ldmdb   fp, {fp, sp, pc}
55 ENTRY(os_cli)
56         mov     ip, sp
57         stmfd   sp!, {fp, ip, lr, pc}
58         sub     fp, ip, #4
59         swi     OS_CLI
60         ldmdb   fp, {fp, sp, pc}
62 ENTRY(xos_cli)
63         mov     ip, sp
64         stmfd   sp!, {fp, ip, lr, pc}
65         sub     fp, ip, #4
66         swi     XOS_CLI
67         movvc   r0, #0
68         ldmdb   fp, {fp, sp, pc}
70 ENTRY(os_byte)
71         mov     ip, sp
72         stmfd   sp!, {fp, ip, lr, pc}
73         sub     fp, ip, #4
74         swi     OS_Byte 
75         teq     r3, #0
76         strne   r1, [r3]
77         ldr     r3, [fp, #4]
78         teq     r3, #0
79         strne   r2, [r3]
80         ldmdb   fp, {fp, sp, pc}
82 ENTRY(os_word)
83         mov     ip, sp
84         stmfd   sp!, {fp, ip, lr, pc}
85         sub     fp, ip, #4
86         swi     OS_Word
87         ldmdb   fp, {fp, sp, pc}
89 ENTRY(xosargs_read)
90         mov     ip, sp
91         stmfd   sp!, {fp, ip, lr, pc}
92         sub     fp, ip, #4
93         mov     r3, r2
94         swi     OS_Args
95         ldmvsdb fp, {fp, sp, pc}
96         teq     r3, #0
97         strne   r2, [r3]
98         mov     r0, #0
99         ldmdb   fp, {fp, sp, pc}
101 ENTRY(xosargs_set)
102         mov     ip, sp
103         stmfd   sp!, {fp, ip, lr, pc}
104         sub     fp, ip, #4
105         swi     OS_Args
106         movvc   r0, #0
107         ldmdb   fp, {fp, sp, pc}
109 ENTRY(xosgbpb_write)
110         mov     ip, sp
111         stmfd   sp!, {r4, fp, ip, lr, pc}
112         sub     fp, ip, #4
113         mov     ip, r3
114         mov     r3, r2
115         mov     r2, r1
116         mov     r1, r0
117         mov     r0, #OSGBPB_Write
118         swi     XOS_GBPB
119         teq     ip, #0
120         strne   r3, [ip]
121         movvc   r0, #0
122         ldmdb   fp, {r4, fp, sp, pc}
124 ENTRY(xosgbpb_read)
125         mov     ip, sp
126         stmfd   sp!, {r4, fp, ip, lr, pc}
127         sub     fp, ip, #4
128         mov     ip, r3
129         mov     r3, r2
130         mov     r2, r1
131         mov     r1, r0
132         mov     r0, #OSGBPB_Read
133         swi     XOS_GBPB
134         teq     ip, #0
135         strne   r3, [ip]
136         movvc   r0, #0
137         ldmdb   fp, {r4, fp, sp, pc}
139 ENTRY(xosfind_close)
140         mov     ip, sp
141         stmfd   sp!, {fp, ip, lr, pc}
142         sub     fp, ip, #4
143         mov     r1, r0
144         mov     r0, #OSFind_Close
145         swi     XOS_Find
146         movvc   r0, #0
147         ldmdb   fp, {fp, sp, pc}        
149 ENTRY(xosfind_open)
150         mov     ip, sp
151         stmfd   sp!, {fp, ip, lr, pc}
152         sub     fp, ip, #4
153         swi     XOS_Find
154         ldmvsdb fp, {fp, sp, pc}
155         teq     r3, #0
156         strne   r0, [r3]
157         mov     r0, #0
158         ldmdb   fp, {fp, sp, pc}        
160 ENTRY(os_get_env)
161         mov     ip, sp
162         stmfd   sp!, {r4, fp, ip, lr, pc}
163         sub     fp, ip, #4
164         mov     r3, r0
165         mov     r4, r1
166         swi     OS_GetEnv
167         teq     r3, #0
168         strne   r1, [r3]
169         teq     r4, #0
170         strne   r2, [r4]
171         ldmdb   fp, {r4, fp, sp, pc}
173 ENTRY(os_exit)
174         mov     ip, sp
175         stmfd   sp!, {fp, ip, lr, pc}
176         sub     fp, ip, #4
177         mov     r2, r1
178         ldr     r1, Labex
179         swi     OS_Exit
180         ldmdb   fp, {fp, sp, pc}
181 Labex:
182         .ascii  "ABEX"
184 ENTRY(os_int_off)
185         mov     ip, sp
186         stmfd   sp!, {fp, ip, lr, pc}
187         sub     fp, ip, #4
188         swi     OS_IntOff
189         ldmdb   fp, {fp, sp, pc}
191 ENTRY(os_enter_os)
192         mov     ip, sp
193         stmfd   sp!, {fp, ip, lr, pc}
194         sub     fp, ip, #4
195         swi     OS_EnterOS
196         ldmdb   fp, {fp, sp, pc}
198 ENTRY(xosfscontrol_shutdown)
199         mov     ip, sp
200         stmfd   sp!, {fp, ip, lr, pc}
201         sub     fp, ip, #4
202         mov     r0, #OSFSControl_Shutdown
203         swi     XOS_FSControl
204         movvc   r0, #0
205         ldmdb   fp, {fp, sp, pc}        
207 ENTRY(service_pre_reset)
208         mov     ip, sp
209         stmfd   sp!, {fp, ip, lr, pc}
210         sub     fp, ip, #4
211         mov     r1, #Service_PreReset
212         swi     OS_ServiceCall
213         ldmdb   fp, {fp, sp, pc}        
215 ENTRY(os_read_vdu_variables)
216         mov     ip, sp
217         stmfd   sp!, {fp, ip, lr, pc}
218         sub     fp, ip, #4
219         swi     OS_ReadVduVariables
220         ldmdb   fp, {fp, sp, pc}        
222 ENTRY(xos_swi_number_from_string)
223         mov     ip, sp
224         stmfd   sp!, {fp, ip, lr, pc}
225         sub     fp, ip, #4
226         mov     r2, r1
227         mov     r1, r0
228         swi     XOS_SWINumberFromString
229         ldmvsdb fp, {fp, sp, pc}
230         str     r0, [r2]
231         mov     r0, #0
232         ldmdb   fp, {fp, sp, pc}
233         
234 ENTRY(os_read_mem_map_info)
235         mov     ip, sp
236         stmfd   sp!, {fp, ip, lr, pc}
237         sub     fp, ip, #4
238         mov     r2, r0
239         mov     r3, r1
240         swi     OS_ReadMemMapInfo
241         teq     r2, #0
242         strne   r0, [r2]
243         teq     r3, #0
244         strne   r1, [r3]
245         ldmdb   fp, {fp, sp, pc}        
247 ENTRY(os_readsysinfo)
248         mov     ip, sp
249         stmfd   sp!, {r4-r9, fp, ip, lr, pc}
250         sub     fp, ip, #4
251         mov     r9, r5
252         mov     r8, r4
253         mov     r7, r3
254         mov     r6, r2
255         mov     r5, r1
256         swi     OS_ReadSysInfo
257         teq     r5, #0
258         strne   r0, [r5]
259         teq     r6, #0
260         strne   r1, [r6]
261         teq     r7, #0
262         strne   r2, [r7]
263         ldr     r1, [ip, #0]
264         teq     r1, #0
265         strne   r3, [r1]
266         ldr     r1, [ip, #4]
267         teq     r1, #0
268         strne   r4, [r1]
269         ldmdb   fp, {r4-r9, fp, sp, pc}
271 ENTRY(os_read_mem_map_entries)
272         mov     ip, sp
273         stmfd   sp!, {fp, ip, lr, pc}
274         sub     fp, ip, #4
275         swi     OS_ReadMemMapEntries
276         ldmdb   fp, {fp, sp, pc}
278 ENTRY(osmemory_read_arrangement_table_size)
279         mov     ip, sp
280         stmfd   sp!, {r4, fp, ip, lr, pc}
281         sub     fp, ip, #4
282         mov     r3, r0
283         mov     r4, r1
284         mov     r0, #OSMemory_ReadArrangementTableSize
285         swi     OS_Memory
286         cmp     r3, #0
287         strne   r1, [r3]
288         cmp     r4, #0
289         strne   r2, [r4]
290         ldmdb   fp, {r4, fp, sp, pc}
292 ENTRY(osmemory_read_arrangement_table)
293         mov     ip, sp
294         stmfd   sp!, {fp, ip, lr, pc}
295         sub     fp, ip, #4
296         mov     r1, r0
297         mov     r0, #OSMemory_ReadArrangementTable
298         swi     OS_Memory
299         ldmdb   fp, {fp, sp, pc}
301 ENTRY(osmemory_page_op)
302         mov     ip, sp
303         stmfd   sp!, {fp, ip, lr, pc}
304         sub     fp, ip, #4
305         add     r0, r0, #OSMemory_PageOp
306         swi     OS_Memory
307         ldmdb   fp, {fp, sp, pc}
309 ENTRY(xcache_control)
310         mov     ip, sp
311         stmfd   sp!, {fp, ip, lr, pc}
312         sub     fp, ip, #4
313         swi     XCache_Control
314         ldmvsdb fp, {fp, sp, pc}
315         teq     r2, #0
316         strne   r0, [r2]
317         mov     r0, #0
318         ldmdb   fp, {fp, sp, pc}