2df01bc69c4cd0a22a37fde914ec2935ffb82e05
2 Copyright © 1995-2009, The AROS Development Team. All rights reserved.
5 Desc: ShutdownA() - Shut down the operating system.
9 #include <aros/debug.h>
10 #include <proto/exec.h>
12 #include "exec_util.h"
14 /*****************************************************************************
18 AROS_LH1(ULONG
, ShutdownA
,
21 AROS_LHA(ULONG
, action
, D0
),
24 struct ExecBase
*, SysBase
, 173, Exec
)
27 This function will shut down the operating system.
31 * SD_ACTION_POWEROFF - power off the machine.
32 * SD_ACTION_COLDREBOOT - cold reboot the machine (not only AROS).
35 This function does not return in case of success. Otherwise is returns
39 It can be quite harmful to call this function. It may be possible that
40 you will lose data from other tasks not having saved, or disk buffers
41 not being flushed. Plus you could annoy the (other) users.
50 ******************************************************************************/
55 case SD_ACTION_POWEROFF
:
57 /* No stock Amiga hardware is known to support this.
58 * Emulation will support it (unless high compatibility setting enabled). */
59 typedef ULONG (*UAELIBFUNC
)(ULONG
);
60 UAELIBFUNC uaelibfunc
= NULL
;
63 uaeres
= OpenResource("uae.resource");
64 if (uaeres
) { /* new method that allows dynamic UAE ROM location */
65 uaelibfunc
= AROS_LVO_CALL1(APTR
,
66 AROS_LCA(UBYTE
*, "uaelib_demux", A0
),
69 if (uaelibfunc
== NULL
) {
70 /* old-style absolute address */
71 uaelibfunc
= (UAELIBFUNC
)(0x00F00000 + 0xFF60);
72 if ((((ULONG
*)uaelibfunc
)[0] & 0xff00ffff) != 0xa0004e75)
77 /* This may return. Quits when next vblank arrives */
83 case SD_ACTION_COLDREBOOT
: