PATCH: abstract out mach_reboot for x86 platforms

Alan Cox (alan@lxorguk.ukuu.org.uk)
Sat, 22 Mar 2003 23:52:39 GMT


diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.5.65-bk3/arch/i386/kernel/reboot.c linux-2.5.65-ac3/arch/i386/kernel/reboot.c
--- linux-2.5.65-bk3/arch/i386/kernel/reboot.c 2003-03-22 19:33:19.000000000 +0000
+++ linux-2.5.65-ac3/arch/i386/kernel/reboot.c 2003-02-14 22:48:47.000000000 +0000
@@ -8,6 +8,7 @@
#include <linux/interrupt.h>
#include <linux/mc146818rtc.h>
#include <asm/uaccess.h>
+#include "mach_reboot.h"

/*
* Power off function, if any
@@ -125,15 +126,6 @@
0xea, 0x00, 0x00, 0xff, 0xff /* ljmp $0xffff,$0x0000 */
};

-static inline void kb_wait(void)
-{
- int i;
-
- for (i=0; i<0x10000; i++)
- if ((inb_p(0x64) & 0x02) == 0)
- break;
-}
-
/*
* Switch to real mode and then execute the code
* specified by the code and length parameters.
@@ -264,13 +256,7 @@
/* rebooting needs to touch the page at absolute addr 0 */
*((unsigned short *)__va(0x472)) = reboot_mode;
for (;;) {
- int i;
- for (i=0; i<100; i++) {
- kb_wait();
- udelay(50);
- outb(0xfe,0x64); /* pulse reset low */
- udelay(50);
- }
+ mach_reboot();
/* That didn't work - force a triple fault.. */
__asm__ __volatile__("lidt %0": :"m" (no_idt));
__asm__ __volatile__("int3");
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.5.65-bk3/include/asm-i386/mach-default/mach_reboot.h linux-2.5.65-ac3/include/asm-i386/mach-default/mach_reboot.h
--- linux-2.5.65-bk3/include/asm-i386/mach-default/mach_reboot.h 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.5.65-ac3/include/asm-i386/mach-default/mach_reboot.h 2003-02-14 22:59:20.000000000 +0000
@@ -0,0 +1,30 @@
+/*
+ * arch/i386/mach-generic/mach_reboot.h
+ *
+ * Machine specific reboot functions for generic.
+ * Split out from reboot.c by Osamu Tomita <tomita@cinet.co.jp>
+ */
+#ifndef _MACH_REBOOT_H
+#define _MACH_REBOOT_H
+
+static inline void kb_wait(void)
+{
+ int i;
+
+ for (i = 0; i < 0x10000; i++)
+ if ((inb_p(0x64) & 0x02) == 0)
+ break;
+}
+
+static inline void mach_reboot(void)
+{
+ int i;
+ for (i = 0; i < 100; i++) {
+ kb_wait();
+ udelay(50);
+ outb(0xfe, 0x64); /* pulse reset low */
+ udelay(50);
+ }
+}
+
+#endif /* !_MACH_REBOOT_H */
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.5.65-bk3/include/asm-i386/mach-pc9800/mach_reboot.h linux-2.5.65-ac3/include/asm-i386/mach-pc9800/mach_reboot.h
--- linux-2.5.65-bk3/include/asm-i386/mach-pc9800/mach_reboot.h 1970-01-01 01:00:00.000000000 +0100
+++ linux-2.5.65-ac3/include/asm-i386/mach-pc9800/mach_reboot.h 2003-02-14 22:59:47.000000000 +0000
@@ -0,0 +1,21 @@
+/*
+ * arch/i386/mach-pc9800/mach_reboot.h
+ *
+ * Machine specific reboot functions for PC-9800.
+ * Written by Osamu Tomita <tomita@cinet.co.jp>
+ */
+#ifndef _MACH_REBOOT_H
+#define _MACH_REBOOT_H
+
+#ifdef CMOS_WRITE
+#undef CMOS_WRITE
+#define CMOS_WRITE(a,b) do{}while(0)
+#endif
+
+static inline void mach_reboot(void)
+{
+ outb(0, 0xf0); /* signal CPU reset */
+ mdelay(1);
+}
+
+#endif /* !_MACH_REBOOT_H */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/