|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * @OSF_COPYRIGHT@
24: */
25: /*
26: * Mach Operating System
27: * Copyright (c) 1991,1990,1989 Carnegie Mellon University
28: * All Rights Reserved.
29: *
30: * Permission to use, copy, modify and distribute this software and its
31: * documentation is hereby granted, provided that both the copyright
32: * notice and this permission notice appear in all copies of the
33: * software, derivative works or modified versions, and any portions
34: * thereof, and that both notices appear in supporting documentation.
35: *
36: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
37: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
38: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
39: *
40: * Carnegie Mellon requests users of this software to return to
41: *
42: * Software Distribution Coordinator or [email protected]
43: * School of Computer Science
44: * Carnegie Mellon University
45: * Pittsburgh PA 15213-3890
46: *
47: * any improvements or extensions that they make and grant Carnegie Mellon
48: * the rights to redistribute these changes.
49: */
50: /*
51: */
52: #include <mach_assert.h>
53:
54: #include <string.h>
55: #include <mach/boolean.h>
56: #include <mach/i386/vm_types.h>
57: #include <kern/kern_types.h>
58: #include <kern/misc_protos.h>
59: #include <i386/misc_protos.h>
60:
61: /*
62: * Should be rewritten in asm anyway.
63: */
64: /*
65: * ovbcopy - like bcopy, but recognizes overlapping ranges and handles
66: * them correctly.
67: */
68:
69: void
70: ovbcopy(
71: const char *from,
72: char *to,
73: vm_size_t bytes) /* num bytes to copy */
74: {
75: /* Assume that bcopy copies left-to-right (low addr first). */
76: if (from + bytes <= to || to + bytes <= from || to == from)
77: bcopy(from, to, bytes); /* non-overlapping or no-op*/
78: else if (from > to)
79: bcopy(from, to, bytes); /* overlapping but OK */
80: else {
81: /* to > from: overlapping, and must copy right-to-left. */
82: from += bytes - 1;
83: to += bytes - 1;
84: while (bytes-- > 0)
85: *to-- = *from--;
86: }
87: }
88:
89: int bcmp(
90: const char *a,
91: const char *b,
92: vm_size_t len)
93: {
94: if (len == 0)
95: return 0;
96:
97: do
98: if (*a++ != *b++)
99: break;
100: while (--len);
101:
102: return len;
103: }
104:
105: #if MACH_ASSERT
106:
107: /*
108: * Machine-dependent routine to fill in an array with up to callstack_max
109: * levels of return pc information.
110: */
111: void machine_callstack(
112: natural_t *buf,
113: vm_size_t callstack_max)
114: {
115: }
116:
117: #endif /* MACH_ASSERT */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.