xref: /openbmc/linux/arch/mips/fw/arc/misc.c (revision 23c2b932)
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 
23 VOID __noreturn
24 ArcHalt(VOID)
25 {
26 	bc_disable();
27 	local_irq_disable();
28 	ARC_CALL0(halt);
29 
30 	unreachable();
31 }
32 
33 VOID __noreturn
34 ArcPowerDown(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 */
44 VOID __noreturn
45 ArcRestart(VOID)
46 {
47 	bc_disable();
48 	local_irq_disable();
49 	ARC_CALL0(restart);
50 
51 	unreachable();
52 }
53 
54 VOID __noreturn
55 ArcReboot(VOID)
56 {
57 	bc_disable();
58 	local_irq_disable();
59 	ARC_CALL0(reboot);
60 
61 	unreachable();
62 }
63 
64 VOID __noreturn
65 ArcEnterInteractiveMode(VOID)
66 {
67 	bc_disable();
68 	local_irq_disable();
69 	ARC_CALL0(imode);
70 
71 	unreachable();
72 }
73 
74 LONG
75 ArcSaveConfiguration(VOID)
76 {
77 	return ARC_CALL0(cfg_save);
78 }
79 
80 struct linux_sysid *
81 ArcGetSystemId(VOID)
82 {
83 	return (struct linux_sysid *) ARC_CALL0(get_sysid);
84 }
85 
86 VOID __init
87 ArcFlushAllCaches(VOID)
88 {
89 	ARC_CALL0(cache_flush);
90 }
91 
92 DISPLAY_STATUS * __init ArcGetDisplayStatus(ULONG FileID)
93 {
94 	return (DISPLAY_STATUS *) ARC_CALL1(GetDisplayStatus, FileID);
95 }
96