summaryrefslogtreecommitdiff
path: root/i386/i386/loose_ends.c
diff options
context:
space:
mode:
Diffstat (limited to 'i386/i386/loose_ends.c')
-rw-r--r--i386/i386/loose_ends.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/i386/i386/loose_ends.c b/i386/i386/loose_ends.c
new file mode 100644
index 00000000..6a10adc3
--- /dev/null
+++ b/i386/i386/loose_ends.c
@@ -0,0 +1,82 @@
+/*
+ * Mach Operating System
+ * Copyright (c) 1991,1990,1989 Carnegie Mellon University
+ * All Rights Reserved.
+ *
+ * Permission to use, copy, modify and distribute this software and its
+ * documentation is hereby granted, provided that both the copyright
+ * notice and this permission notice appear in all copies of the
+ * software, derivative works or modified versions, and any portions
+ * thereof, and that both notices appear in supporting documentation.
+ *
+ * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+ * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+ * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+ *
+ * Carnegie Mellon requests users of this software to return to
+ *
+ * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+ * School of Computer Science
+ * Carnegie Mellon University
+ * Pittsburgh PA 15213-3890
+ *
+ * any improvements or extensions that they make and grant Carnegie Mellon
+ * the rights to redistribute these changes.
+ */
+/*
+ */
+#include <mach_assert.h>
+
+
+ /*
+ * For now we will always go to single user mode, since there is
+ * no way pass this request through the boot.
+ */
+int boothowto = 0;
+
+ /*
+ * Should be rewritten in asm anyway.
+ */
+/*
+ * ovbcopy - like bcopy, but recognizes overlapping ranges and handles
+ * them correctly.
+ */
+ovbcopy(from, to, bytes)
+ char *from, *to;
+ int bytes; /* num bytes to copy */
+{
+ /* Assume that bcopy copies left-to-right (low addr first). */
+ if (from + bytes <= to || to + bytes <= from || to == from)
+ bcopy(from, to, bytes); /* non-overlapping or no-op*/
+ else if (from > to)
+ bcopy(from, to, bytes); /* overlapping but OK */
+ else {
+ /* to > from: overlapping, and must copy right-to-left. */
+ from += bytes - 1;
+ to += bytes - 1;
+ while (bytes-- > 0)
+ *to-- = *from--;
+ }
+}
+
+/* Someone with time should write code to set cpuspeed automagically */
+int cpuspeed = 4;
+#define DELAY(n) { register int N = cpuspeed * (n); while (--N > 0); }
+delay(n)
+{
+ DELAY(n);
+}
+
+#if MACH_ASSERT
+
+/*
+ * Machine-dependent routine to fill in an array with up to callstack_max
+ * levels of return pc information.
+ */
+void machine_callstack(
+ unsigned long *buf,
+ int callstack_max)
+{
+}
+
+#endif /* MACH_ASSERT */