Test initialisation of MUIA_List_AdjustWidth and MUIA_List_AdjustHeight, and
[AROS.git] / arch / .unmaintained / arm-all / exec / supervisor.S
blobabdd9c46023356a9060dd30d459506e69a7027bd
1 /*
2     Copyright © 1995-2001, The AROS Development Team. All rights reserved.
3     $Id$
4 */
6 /*****************************************************************************
7  
8     NAME
9  
10         AROS_LH1(ULONG, Supervisor,
12     SYNOPSIS
13         AROS_LHA(ULONG_FUNC, userFunction, A5),
15     LOCATION
16         struct ExecBase *, SysBase, 5, Exec)
18     FUNCTION
19         Call a routine in supervisor mode. This routine runs on the
20         supervisor stack and must end with a "rte". No registers are spilled,
21         i.e. Supervisor() effectively works like a function call.
23     INPUTS
24         userFunction - address of the function to be called.
26     RESULT
27         whatever the function left in the registers
29     NOTES
30         This function is CPU dependent.
32     EXAMPLE
34     BUGS
35         Context switches that happen during the duration of this call are lost.
37     SEE ALSO
39     INTERNALS
41     HISTORY
43 ******************************************************************************/
45         #include "../include/aros/machine.i"
47         .text
48         .balign 4
49         .globl  AROS_SLIB_ENTRY(Supervisor,Exec)
51 AROS_SLIB_ENTRY(Supervisor,Exec):
52         // userFunction parameter is in r0
53         // execbase is in r1
54         stmdb   sp!,{r4, lr}
55         mov     r4,r0
56         swi     #8         // #8 => call software interrupt handler
57         ldmdb   sp!,{r4, lr}
58         mov     pc, lr
60         .globl _sys_trap_Supervisor
61 _sys_trap_Supervisor:
62         strdb   sp!,{lr}
63         mov     lr, pc      // should add 4 to lr here?
64         mov     pc, r4
65         ldmdb   sp!,{lr}
66         mov     pc, lr
68