1/*
2 * This file is subject to the terms and conditions of the GNU General Public
3 * License.  See the file "COPYING" in the main directory of this archive
4 * for more details.
5 *
6 * Miscellaneous ARCS PROM routines.
7 *
8 * Copyright (C) 1996 David S. Miller (davem@davemloft.net)
9 * Copyright (C) 1999 Ralf Baechle (ralf@gnu.org)
10 * Copyright (C) 1999 Silicon Graphics, Inc.
11 */
12#include <linux/compiler.h>
13#include <linux/init.h>
14#include <linux/kernel.h>
15#include <linux/irqflags.h>
16
17#include <asm/bcache.h>
18
19#include <asm/fw/arc/types.h>
20#include <asm/sgialib.h>
21#include <asm/bootinfo.h>
22
23VOID __noreturn
24ArcHalt(VOID)
25{
26	bc_disable();
27	local_irq_disable();
28	ARC_CALL0(halt);
29
30	unreachable();
31}
32
33VOID __noreturn
34ArcPowerDown(VOID)
35{
36	bc_disable();
37	local_irq_disable();
38	ARC_CALL0(pdown);
39
40	unreachable();
41}
42
43/* XXX is this a soft reset basically? XXX */
44VOID __noreturn
45ArcRestart(VOID)
46{
47	bc_disable();
48	local_irq_disable();
49	ARC_CALL0(restart);
50
51	unreachable();
52}
53
54VOID __noreturn
55ArcReboot(VOID)
56{
57	bc_disable();
58	local_irq_disable();
59	ARC_CALL0(reboot);
60
61	unreachable();
62}
63
64VOID __noreturn
65ArcEnterInteractiveMode(VOID)
66{
67	bc_disable();
68	local_irq_disable();
69	ARC_CALL0(imode);
70
71	unreachable();
72}
73
74LONG
75ArcSaveConfiguration(VOID)
76{
77	return ARC_CALL0(cfg_save);
78}
79
80struct linux_sysid *
81ArcGetSystemId(VOID)
82{
83	return (struct linux_sysid *) ARC_CALL0(get_sysid);
84}
85
86VOID __init
87ArcFlushAllCaches(VOID)
88{
89	ARC_CALL0(cache_flush);
90}
91
92DISPLAY_STATUS * __init ArcGetDisplayStatus(ULONG FileID)
93{
94	return (DISPLAY_STATUS *) ARC_CALL1(GetDisplayStatus, FileID);
95}
96