Home | History | Annotate | Line # | Download | only in lib
      1  1.12  sborrill /*	$NetBSD: riscoscalls.S,v 1.12 2019/01/23 14:49:00 sborrill Exp $	*/
      2   1.1   reinoud 
      3   1.1   reinoud /*-
      4   1.1   reinoud  * Copyright (c) 2001 Ben Harris
      5   1.1   reinoud  * Copyright (c) 2002 Reinoud Zandijk
      6   1.1   reinoud  * All rights reserved.
      7   1.1   reinoud  *
      8   1.1   reinoud  * Redistribution and use in source and binary forms, with or without
      9   1.1   reinoud  * modification, are permitted provided that the following conditions
     10   1.1   reinoud  * are met:
     11   1.1   reinoud  * 1. Redistributions of source code must retain the above copyright
     12   1.1   reinoud  *    notice, this list of conditions and the following disclaimer.
     13   1.1   reinoud  * 2. Redistributions in binary form must reproduce the above copyright
     14   1.1   reinoud  *    notice, this list of conditions and the following disclaimer in the
     15   1.1   reinoud  *    documentation and/or other materials provided with the distribution.
     16   1.1   reinoud  * 3. The name of the author may not be used to endorse or promote products
     17   1.1   reinoud  *    derived from this software without specific prior written permission.
     18   1.1   reinoud  *
     19   1.1   reinoud  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     20   1.1   reinoud  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     21   1.1   reinoud  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     22   1.1   reinoud  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     23   1.1   reinoud  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     24   1.1   reinoud  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25   1.1   reinoud  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26   1.1   reinoud  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27   1.1   reinoud  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     28   1.1   reinoud  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29   1.1   reinoud  */
     30   1.1   reinoud 
     31   1.1   reinoud #include <machine/asm.h>
     32   1.1   reinoud #include <riscoscalls.h>
     33   1.1   reinoud 
     34   1.1   reinoud ENTRY(os_writec)
     35   1.1   reinoud 	mov	ip, sp
     36   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
     37   1.1   reinoud 	sub	fp, ip, #4
     38   1.1   reinoud 	swi	OS_WriteC
     39   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
     40   1.1   reinoud 
     41   1.1   reinoud ENTRY(os_new_line)
     42   1.1   reinoud 	mov	ip, sp
     43   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
     44   1.1   reinoud 	sub	fp, ip, #4
     45   1.1   reinoud 	swi	OS_NewLine
     46   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
     47   1.1   reinoud 
     48   1.1   reinoud ENTRY(os_readc)
     49   1.1   reinoud 	mov	ip, sp
     50   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
     51   1.1   reinoud 	sub	fp, ip, #4
     52   1.1   reinoud 	swi	OS_ReadC
     53   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
     54   1.1   reinoud 
     55   1.3     bjh21 ENTRY(os_cli)
     56   1.1   reinoud 	mov	ip, sp
     57   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
     58   1.1   reinoud 	sub	fp, ip, #4
     59   1.1   reinoud 	swi	OS_CLI
     60   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
     61   1.1   reinoud 
     62   1.3     bjh21 ENTRY(xos_cli)
     63   1.1   reinoud 	mov	ip, sp
     64   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
     65   1.1   reinoud 	sub	fp, ip, #4
     66   1.9     bjh21 	swi	XOS_CLI
     67   1.1   reinoud 	movvc	r0, #0
     68   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
     69   1.1   reinoud 
     70   1.1   reinoud ENTRY(os_byte)
     71   1.1   reinoud 	mov	ip, sp
     72   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
     73   1.1   reinoud 	sub	fp, ip, #4
     74   1.1   reinoud 	swi	OS_Byte
     75   1.1   reinoud 	teq	r3, #0
     76   1.1   reinoud 	strne	r1, [r3]
     77   1.1   reinoud 	ldr	r3, [fp, #4]
     78   1.1   reinoud 	teq	r3, #0
     79   1.1   reinoud 	strne	r2, [r3]
     80   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
     81   1.1   reinoud 
     82  1.10     bjh21 ENTRY(osbyte_read)
     83  1.10     bjh21 	mov	ip, sp
     84  1.10     bjh21 	stmfd	sp!, {fp, ip, lr, pc}
     85  1.10     bjh21 	sub	fp, ip, #4
     86  1.10     bjh21 	mov	r1, #0
     87  1.10     bjh21 	mov	r2, #255
     88  1.10     bjh21 	swi	OS_Byte
     89  1.10     bjh21 	mov	r0, r1
     90  1.10     bjh21 	ldmdb	fp, {fp, sp, pc}
     91  1.10     bjh21 
     92   1.1   reinoud ENTRY(os_word)
     93   1.1   reinoud 	mov	ip, sp
     94   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
     95   1.1   reinoud 	sub	fp, ip, #4
     96   1.1   reinoud 	swi	OS_Word
     97   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
     98   1.1   reinoud 
     99   1.1   reinoud ENTRY(xosargs_read)
    100   1.1   reinoud 	mov	ip, sp
    101   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    102   1.1   reinoud 	sub	fp, ip, #4
    103   1.1   reinoud 	mov	r3, r2
    104   1.6     bjh21 	swi	XOS_Args
    105  1.11     skrll 	ldmdbvs	fp, {fp, sp, pc}
    106   1.1   reinoud 	teq	r3, #0
    107   1.1   reinoud 	strne	r2, [r3]
    108   1.1   reinoud 	mov	r0, #0
    109   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    110   1.1   reinoud 
    111   1.1   reinoud ENTRY(xosargs_set)
    112   1.1   reinoud 	mov	ip, sp
    113   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    114   1.1   reinoud 	sub	fp, ip, #4
    115   1.6     bjh21 	swi	XOS_Args
    116   1.1   reinoud 	movvc	r0, #0
    117   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    118   1.1   reinoud 
    119   1.1   reinoud ENTRY(xosgbpb_write)
    120   1.1   reinoud 	mov	ip, sp
    121   1.1   reinoud 	stmfd	sp!, {r4, fp, ip, lr, pc}
    122   1.1   reinoud 	sub	fp, ip, #4
    123   1.1   reinoud 	mov	ip, r3
    124   1.1   reinoud 	mov	r3, r2
    125   1.1   reinoud 	mov	r2, r1
    126   1.1   reinoud 	mov	r1, r0
    127   1.1   reinoud 	mov	r0, #OSGBPB_Write
    128   1.1   reinoud 	swi	XOS_GBPB
    129   1.1   reinoud 	teq	ip, #0
    130   1.1   reinoud 	strne	r3, [ip]
    131   1.1   reinoud 	movvc	r0, #0
    132   1.1   reinoud 	ldmdb	fp, {r4, fp, sp, pc}
    133   1.1   reinoud 
    134   1.1   reinoud ENTRY(xosgbpb_read)
    135   1.1   reinoud 	mov	ip, sp
    136   1.1   reinoud 	stmfd	sp!, {r4, fp, ip, lr, pc}
    137   1.1   reinoud 	sub	fp, ip, #4
    138   1.1   reinoud 	mov	ip, r3
    139   1.1   reinoud 	mov	r3, r2
    140   1.1   reinoud 	mov	r2, r1
    141   1.1   reinoud 	mov	r1, r0
    142   1.1   reinoud 	mov	r0, #OSGBPB_Read
    143   1.1   reinoud 	swi	XOS_GBPB
    144   1.1   reinoud 	teq	ip, #0
    145   1.1   reinoud 	strne	r3, [ip]
    146   1.1   reinoud 	movvc	r0, #0
    147   1.1   reinoud 	ldmdb	fp, {r4, fp, sp, pc}
    148   1.1   reinoud 
    149   1.1   reinoud ENTRY(xosfind_close)
    150   1.1   reinoud 	mov	ip, sp
    151   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    152   1.1   reinoud 	sub	fp, ip, #4
    153   1.1   reinoud 	mov	r1, r0
    154   1.1   reinoud 	mov	r0, #OSFind_Close
    155   1.1   reinoud 	swi	XOS_Find
    156   1.1   reinoud 	movvc	r0, #0
    157   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    158   1.1   reinoud 
    159   1.1   reinoud ENTRY(xosfind_open)
    160   1.1   reinoud 	mov	ip, sp
    161   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    162   1.1   reinoud 	sub	fp, ip, #4
    163   1.1   reinoud 	swi	XOS_Find
    164  1.11     skrll 	ldmdbvs	fp, {fp, sp, pc}
    165   1.1   reinoud 	teq	r3, #0
    166   1.1   reinoud 	strne	r0, [r3]
    167   1.1   reinoud 	mov	r0, #0
    168   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    169   1.1   reinoud 
    170   1.1   reinoud ENTRY(os_get_env)
    171   1.1   reinoud 	mov	ip, sp
    172   1.1   reinoud 	stmfd	sp!, {r4, fp, ip, lr, pc}
    173   1.1   reinoud 	sub	fp, ip, #4
    174   1.2     gavan 	mov	r3, r0
    175   1.2     gavan 	mov	r4, r1
    176   1.1   reinoud 	swi	OS_GetEnv
    177   1.1   reinoud 	teq	r3, #0
    178   1.1   reinoud 	strne	r1, [r3]
    179   1.1   reinoud 	teq	r4, #0
    180   1.1   reinoud 	strne	r2, [r4]
    181   1.1   reinoud 	ldmdb	fp, {r4, fp, sp, pc}
    182   1.1   reinoud 
    183   1.1   reinoud ENTRY(os_exit)
    184   1.1   reinoud 	mov	ip, sp
    185   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    186   1.1   reinoud 	sub	fp, ip, #4
    187   1.1   reinoud 	mov	r2, r1
    188   1.1   reinoud 	ldr	r1, Labex
    189   1.1   reinoud 	swi	OS_Exit
    190   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    191   1.1   reinoud Labex:
    192   1.1   reinoud 	.ascii	"ABEX"
    193   1.1   reinoud 
    194   1.1   reinoud ENTRY(os_int_off)
    195   1.1   reinoud 	mov	ip, sp
    196   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    197   1.1   reinoud 	sub	fp, ip, #4
    198   1.1   reinoud 	swi	OS_IntOff
    199   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    200   1.1   reinoud 
    201   1.1   reinoud ENTRY(os_enter_os)
    202   1.1   reinoud 	mov	ip, sp
    203   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    204   1.1   reinoud 	sub	fp, ip, #4
    205   1.1   reinoud 	swi	OS_EnterOS
    206   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    207   1.1   reinoud 
    208   1.6     bjh21 ENTRY(xosmodule_alloc)
    209   1.6     bjh21 	mov	ip, sp
    210   1.6     bjh21 	stmfd	sp!, {fp, ip, lr, pc}
    211   1.6     bjh21 	sub	fp, ip, #4
    212   1.6     bjh21 	mov	r3, r0
    213   1.6     bjh21 	mov	r0, #OSModule_Alloc
    214   1.6     bjh21 	swi	XOS_Module
    215  1.11     skrll 	ldmdbvs	fp, {fp, sp, pc}
    216   1.6     bjh21 	teq	r1, #0
    217   1.6     bjh21 	strne	r2, [r1]
    218   1.6     bjh21 	mov	r0, #0
    219   1.6     bjh21 	ldmdb	fp, {fp, sp, pc}
    220   1.6     bjh21 
    221   1.6     bjh21 ENTRY(xosmodule_free)
    222   1.6     bjh21 	mov	ip, sp
    223   1.6     bjh21 	stmfd	sp!, {fp, ip, lr, pc}
    224   1.6     bjh21 	sub	fp, ip, #4
    225   1.8     bjh21 	mov	r2, r0
    226   1.6     bjh21 	mov	r0, #OSModule_Free
    227   1.6     bjh21 	swi	XOS_Module
    228   1.6     bjh21 	movvc	r0, #0
    229   1.6     bjh21 	ldmdb	fp, {fp, sp, pc}
    230   1.6     bjh21 
    231   1.6     bjh21 ENTRY(xosmodule_lookup)
    232   1.6     bjh21 	mov	ip, sp
    233   1.6     bjh21 	stmfd	sp!, {r4-r8, fp, ip, lr, pc}
    234   1.6     bjh21 	sub	fp, ip, #4
    235   1.6     bjh21 	mov	r6, r1
    236   1.6     bjh21 	mov	r7, r2
    237   1.6     bjh21 	mov	r8, r3
    238   1.6     bjh21 	mov	r1, r0
    239   1.6     bjh21 	mov	r0, #OSModule_Lookup
    240   1.6     bjh21 	swi	XOS_Module
    241  1.11     skrll 	ldmdbvs	fp, {r4-r8, fp, sp, pc}
    242   1.6     bjh21 	teq	r6, #0
    243   1.6     bjh21 	strne	r1, [r6]
    244   1.6     bjh21 	teq	r7, #0
    245   1.6     bjh21 	strne	r2, [r7]
    246   1.6     bjh21 	teq	r8, #0
    247   1.6     bjh21 	strne	r3, [r8]
    248   1.6     bjh21 	ldr	r8, [fp, #4]
    249   1.6     bjh21 	teq	r8, #0
    250   1.6     bjh21 	strne	r4, [r8]
    251   1.6     bjh21 	ldr	r8, [fp, #8]
    252   1.6     bjh21 	teq	r8, #0
    253   1.6     bjh21 	strne	r5, [r8]
    254   1.6     bjh21 	mov	r0, #0
    255   1.6     bjh21 	ldmdb	fp, {r4-r8, fp, sp, pc}
    256   1.6     bjh21 
    257  1.12  sborrill ENTRY(xosmodule_enumeratewithversion)
    258  1.12  sborrill 	mov	ip, sp
    259  1.12  sborrill 	stmfd	sp!, {r4-r10, fp, ip, lr, pc}
    260  1.12  sborrill 	sub	fp, ip, #4
    261  1.12  sborrill 	mov	r7, r0
    262  1.12  sborrill 	mov	r8, r1
    263  1.12  sborrill 	mov	r9, r2
    264  1.12  sborrill 	mov	r10, r3
    265  1.12  sborrill 	ldr	r1, [r7]
    266  1.12  sborrill 	ldr	r2, [r8]
    267  1.12  sborrill 	mov	r0, #OSModule_EnumerateWithVersion
    268  1.12  sborrill 	swi	XOS_Module
    269  1.12  sborrill 	ldmdbvs	fp, {r4-r10, fp, sp, pc}
    270  1.12  sborrill 	str	r1, [r7]
    271  1.12  sborrill 	str	r2, [r8]
    272  1.12  sborrill 	teq	r9, #0
    273  1.12  sborrill 	strne	r3, [r9]
    274  1.12  sborrill 	teq	r9, #0
    275  1.12  sborrill 	strne	r3, [r9]
    276  1.12  sborrill 	teq	r10, #0
    277  1.12  sborrill 	strne	r4, [r10]
    278  1.12  sborrill 	ldr	r10, [fp, #4]
    279  1.12  sborrill 	teq	r10, #0
    280  1.12  sborrill 	strne	r5, [r10]
    281  1.12  sborrill 	ldr	r10, [fp, #8]
    282  1.12  sborrill 	teq	r10, #0
    283  1.12  sborrill 	strne	r6, [r10]
    284  1.12  sborrill 	mov	r0, #0
    285  1.12  sborrill 	ldmdb	fp, {r4-r10, fp, sp, pc}
    286  1.12  sborrill 
    287   1.1   reinoud ENTRY(xosfscontrol_shutdown)
    288   1.1   reinoud 	mov	ip, sp
    289   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    290   1.1   reinoud 	sub	fp, ip, #4
    291   1.1   reinoud 	mov	r0, #OSFSControl_Shutdown
    292   1.1   reinoud 	swi	XOS_FSControl
    293   1.1   reinoud 	movvc	r0, #0
    294   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    295   1.1   reinoud 
    296   1.1   reinoud ENTRY(service_pre_reset)
    297   1.1   reinoud 	mov	ip, sp
    298   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    299   1.1   reinoud 	sub	fp, ip, #4
    300   1.1   reinoud 	mov	r1, #Service_PreReset
    301   1.1   reinoud 	swi	OS_ServiceCall
    302   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    303   1.1   reinoud 
    304   1.1   reinoud ENTRY(os_read_vdu_variables)
    305   1.1   reinoud 	mov	ip, sp
    306   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    307   1.1   reinoud 	sub	fp, ip, #4
    308   1.1   reinoud 	swi	OS_ReadVduVariables
    309   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    310   1.1   reinoud 
    311   1.1   reinoud ENTRY(xos_swi_number_from_string)
    312   1.1   reinoud 	mov	ip, sp
    313   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    314   1.1   reinoud 	sub	fp, ip, #4
    315   1.1   reinoud 	mov	r2, r1
    316   1.1   reinoud 	mov	r1, r0
    317   1.1   reinoud 	swi	XOS_SWINumberFromString
    318  1.11     skrll 	ldmdbvs	fp, {fp, sp, pc}
    319   1.1   reinoud 	str	r0, [r2]
    320   1.1   reinoud 	mov	r0, #0
    321   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    322  1.10     bjh21 
    323  1.10     bjh21 ENTRY(os_read_monotonic_time)
    324  1.10     bjh21 	mov	ip, sp
    325  1.10     bjh21 	stmfd	sp!, {fp, ip, lr, pc}
    326  1.10     bjh21 	sub	fp, ip, #4
    327  1.10     bjh21 	swi	OS_ReadMonotonicTime
    328  1.10     bjh21 	ldmdb	fp, {fp, sp, pc}
    329   1.1   reinoud 
    330   1.1   reinoud ENTRY(os_read_mem_map_info)
    331   1.1   reinoud 	mov	ip, sp
    332   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    333   1.1   reinoud 	sub	fp, ip, #4
    334   1.1   reinoud 	mov	r2, r0
    335   1.1   reinoud 	mov	r3, r1
    336   1.1   reinoud 	swi	OS_ReadMemMapInfo
    337   1.1   reinoud 	teq	r2, #0
    338   1.1   reinoud 	strne	r0, [r2]
    339   1.1   reinoud 	teq	r3, #0
    340   1.1   reinoud 	strne	r1, [r3]
    341   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    342   1.1   reinoud 
    343   1.1   reinoud ENTRY(os_readsysinfo)
    344   1.1   reinoud 	mov	ip, sp
    345   1.1   reinoud 	stmfd	sp!, {r4-r9, fp, ip, lr, pc}
    346   1.1   reinoud 	sub	fp, ip, #4
    347   1.1   reinoud 	mov	r9, r5
    348   1.1   reinoud 	mov	r8, r4
    349   1.1   reinoud 	mov	r7, r3
    350   1.1   reinoud 	mov	r6, r2
    351   1.1   reinoud 	mov	r5, r1
    352   1.1   reinoud 	swi	OS_ReadSysInfo
    353   1.1   reinoud 	teq	r5, #0
    354   1.1   reinoud 	strne	r0, [r5]
    355   1.1   reinoud 	teq	r6, #0
    356   1.1   reinoud 	strne	r1, [r6]
    357   1.1   reinoud 	teq	r7, #0
    358   1.1   reinoud 	strne	r2, [r7]
    359   1.1   reinoud 	ldr	r1, [ip, #0]
    360   1.1   reinoud 	teq	r1, #0
    361   1.1   reinoud 	strne	r3, [r1]
    362   1.1   reinoud 	ldr	r1, [ip, #4]
    363   1.1   reinoud 	teq	r1, #0
    364   1.1   reinoud 	strne	r4, [r1]
    365   1.1   reinoud 	ldmdb	fp, {r4-r9, fp, sp, pc}
    366   1.1   reinoud 
    367   1.1   reinoud ENTRY(os_read_mem_map_entries)
    368   1.1   reinoud 	mov	ip, sp
    369   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    370   1.1   reinoud 	sub	fp, ip, #4
    371   1.1   reinoud 	swi	OS_ReadMemMapEntries
    372   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    373   1.1   reinoud 
    374   1.1   reinoud ENTRY(osmemory_read_arrangement_table_size)
    375   1.1   reinoud 	mov	ip, sp
    376   1.1   reinoud 	stmfd	sp!, {r4, fp, ip, lr, pc}
    377   1.1   reinoud 	sub	fp, ip, #4
    378   1.1   reinoud 	mov	r3, r0
    379   1.1   reinoud 	mov	r4, r1
    380   1.1   reinoud 	mov	r0, #OSMemory_ReadArrangementTableSize
    381   1.1   reinoud 	swi	OS_Memory
    382   1.1   reinoud 	cmp	r3, #0
    383   1.1   reinoud 	strne	r1, [r3]
    384   1.1   reinoud 	cmp	r4, #0
    385   1.1   reinoud 	strne	r2, [r4]
    386   1.1   reinoud 	ldmdb	fp, {r4, fp, sp, pc}
    387   1.1   reinoud 
    388   1.7     bjh21 ENTRY(xosmemory_read_arrangement_table_size)
    389   1.7     bjh21 	mov	ip, sp
    390   1.7     bjh21 	stmfd	sp!, {r4, fp, ip, lr, pc}
    391   1.7     bjh21 	sub	fp, ip, #4
    392   1.7     bjh21 	mov	r3, r0
    393   1.7     bjh21 	mov	r4, r1
    394   1.7     bjh21 	mov	r0, #OSMemory_ReadArrangementTableSize
    395   1.7     bjh21 	swi	XOS_Memory
    396  1.11     skrll 	ldmdbvs	fp, {r4, fp, sp, pc}
    397   1.7     bjh21 	cmp	r3, #0
    398   1.7     bjh21 	strne	r1, [r3]
    399   1.7     bjh21 	cmp	r4, #0
    400   1.7     bjh21 	strne	r2, [r4]
    401   1.7     bjh21 	mov	r0, #0
    402   1.7     bjh21 	ldmdb	fp, {r4, fp, sp, pc}
    403   1.7     bjh21 
    404   1.1   reinoud ENTRY(osmemory_read_arrangement_table)
    405   1.1   reinoud 	mov	ip, sp
    406   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    407   1.1   reinoud 	sub	fp, ip, #4
    408   1.1   reinoud 	mov	r1, r0
    409   1.1   reinoud 	mov	r0, #OSMemory_ReadArrangementTable
    410   1.1   reinoud 	swi	OS_Memory
    411   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    412   1.1   reinoud 
    413   1.7     bjh21 ENTRY(xosmemory_read_arrangement_table)
    414   1.7     bjh21 	mov	ip, sp
    415   1.7     bjh21 	stmfd	sp!, {fp, ip, lr, pc}
    416   1.7     bjh21 	sub	fp, ip, #4
    417   1.7     bjh21 	mov	r1, r0
    418   1.7     bjh21 	mov	r0, #OSMemory_ReadArrangementTable
    419   1.7     bjh21 	swi	XOS_Memory
    420   1.7     bjh21 	movvc	r0, #0
    421   1.7     bjh21 	ldmdb	fp, {fp, sp, pc}
    422   1.7     bjh21 
    423   1.1   reinoud ENTRY(osmemory_page_op)
    424   1.1   reinoud 	mov	ip, sp
    425   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    426   1.1   reinoud 	sub	fp, ip, #4
    427   1.1   reinoud 	add	r0, r0, #OSMemory_PageOp
    428   1.1   reinoud 	swi	OS_Memory
    429   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    430   1.1   reinoud 
    431   1.1   reinoud ENTRY(xcache_control)
    432   1.1   reinoud 	mov	ip, sp
    433   1.1   reinoud 	stmfd	sp!, {fp, ip, lr, pc}
    434   1.1   reinoud 	sub	fp, ip, #4
    435   1.1   reinoud 	swi	XCache_Control
    436  1.11     skrll 	ldmdbvs	fp, {fp, sp, pc}
    437   1.1   reinoud 	teq	r2, #0
    438   1.1   reinoud 	strne	r0, [r2]
    439   1.1   reinoud 	mov	r0, #0
    440   1.1   reinoud 	ldmdb	fp, {fp, sp, pc}
    441   1.6     bjh21 
    442   1.6     bjh21 ENTRY(xfilecorediscop_read_sectors)
    443   1.6     bjh21 	mov	ip, sp
    444   1.6     bjh21 	stmfd	sp!, {r4, r8, fp, ip, lr, pc}
    445   1.6     bjh21 	sub	fp, ip, #4
    446   1.6     bjh21 	mov	r4, r3
    447   1.6     bjh21 	mov	r3, r2
    448   1.6     bjh21 	mov	r2, r1
    449   1.6     bjh21 	orr	r1, r0, #FileCoreDiscOp_ReadSectors
    450   1.6     bjh21 	ldr	r8, [fp, #4]
    451   1.6     bjh21 	swi	XFileCore_DiscOp
    452  1.11     skrll 	ldmdbvs	fp, {r4, r8, fp, sp, pc}
    453   1.6     bjh21 	ldr	r0, [fp, #8]
    454   1.6     bjh21 	teq	r0, #0
    455   1.6     bjh21 	strne	r2, [r0]
    456   1.6     bjh21 	ldr	r0, [fp, #12]
    457   1.6     bjh21 	teq	r0, #0
    458   1.6     bjh21 	strne	r3, [r0]
    459   1.6     bjh21 	ldr	r0, [fp, #16]
    460   1.6     bjh21 	teq	r0, #0
    461   1.6     bjh21 	strne	r4, [r0]
    462   1.6     bjh21 	mov	r0, #0
    463   1.6     bjh21 	ldmdb	fp, {r4, r8, fp, sp, pc}
    464   1.6     bjh21 
    465   1.6     bjh21 ENTRY(xfilecore_drives)
    466   1.6     bjh21 	mov	ip, sp
    467   1.6     bjh21 	stmfd	sp!, {r4-r5, r8, fp, ip, lr, pc}
    468   1.6     bjh21 	sub	fp, ip, #4
    469   1.6     bjh21 	mov	r5, r3
    470   1.6     bjh21 	mov	r4, r2
    471   1.6     bjh21 	mov	r3, r1
    472   1.6     bjh21 	mov	r8, r0
    473   1.6     bjh21 	swi	XFileCore_Drives
    474  1.11     skrll 	ldmdbvs	fp, {r4-r5, r8, fp, sp, pc}
    475   1.6     bjh21 	teq	r3, #0
    476   1.6     bjh21 	strne	r0, [r3]
    477   1.6     bjh21 	teq	r4, #0
    478   1.6     bjh21 	strne	r1, [r4]
    479   1.6     bjh21 	teq	r5, #0
    480   1.6     bjh21 	strne	r2, [r5]
    481   1.6     bjh21 	mov	r0, #0
    482   1.6     bjh21 	ldmdb	fp, {r4-r5, r8, fp, sp, pc}
    483   1.6     bjh21 
    484   1.6     bjh21 ENTRY(xfilecoresectorop_read_sectors)
    485   1.6     bjh21 	mov	ip, sp
    486   1.6     bjh21 	stmfd	sp!, {r4, r8, fp, ip, lr, pc}
    487   1.6     bjh21 	sub	fp, ip, #4
    488   1.6     bjh21 	mov	r4, r3
    489   1.6     bjh21 	mov	r3, r2
    490   1.6     bjh21 	mov	r2, r1
    491   1.6     bjh21 	orr	r1, r0, #FileCoreDiscOp_ReadSectors
    492   1.6     bjh21 	ldr	r8, [fp, #4]
    493   1.6     bjh21 	swi	XFileCore_SectorOp
    494  1.11     skrll 	ldmdbvs	fp, {r4, r8, fp, sp, pc}
    495   1.6     bjh21 	ldr	r0, [fp, #8]
    496   1.6     bjh21 	teq	r0, #0
    497   1.6     bjh21 	strne	r2, [r0]
    498   1.6     bjh21 	ldr	r0, [fp, #12]
    499   1.6     bjh21 	teq	r0, #0
    500   1.6     bjh21 	strne	r3, [r0]
    501   1.6     bjh21 	ldr	r0, [fp, #16]
    502   1.6     bjh21 	teq	r0, #0
    503   1.6     bjh21 	strne	r4, [r0]
    504   1.6     bjh21 	mov	r0, #0
    505   1.6     bjh21 	ldmdb	fp, {r4, r8, fp, sp, pc}
    506   1.6     bjh21 
    507   1.6     bjh21 ENTRY(xfilecorediscop64_read_sectors)
    508   1.6     bjh21 	mov	ip, sp
    509   1.6     bjh21 	stmfd	sp!, {r4, r5, r8, fp, ip, lr, pc}
    510   1.6     bjh21 	sub	fp, ip, #4
    511   1.6     bjh21 	mov	r4, r3
    512   1.6     bjh21 	mov	r3, r2
    513   1.6     bjh21 	mov	r2, r1
    514   1.6     bjh21 	orr	r1, r0, #FileCoreDiscOp_ReadSectors
    515   1.6     bjh21 	ldr	r5, [fp, #4]
    516   1.6     bjh21 	ldr	r8, [fp, #8]
    517   1.6     bjh21 	swi	XFileCore_DiscOp64
    518  1.11     skrll 	ldmdbvs	fp, {r4, r5, r8, fp, sp, pc}
    519   1.6     bjh21 	ldr	r0, [fp, #12]
    520   1.6     bjh21 	teq	r0, #0
    521   1.6     bjh21 	strne	r2, [r0]
    522   1.6     bjh21 	ldr	r0, [fp, #16]
    523   1.6     bjh21 	teq	r0, #0
    524   1.6     bjh21 	strne	r3, [r0]
    525   1.6     bjh21 	ldr	r0, [fp, #20]
    526   1.6     bjh21 	teq	r0, #0
    527   1.6     bjh21 	strne	r4, [r0]
    528   1.6     bjh21 	mov	r0, #0
    529   1.6     bjh21 	ldmdb	fp, {r4, r5, r8, fp, sp, pc}
    530