Annotation of sys/arch/m68k/m68k/db_memrw.c, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: db_memrw.c,v 1.4 2002/03/14 03:15:54 millert Exp $ */
2: /* $NetBSD: db_memrw.c,v 1.1 1996/02/22 23:23:35 gwr Exp $ */
3:
4: /*
5: * Mach Operating System
6: * Copyright (c) 1992 Carnegie Mellon University
7: * All Rights Reserved.
8: *
9: * Permission to use, copy, modify and distribute this software and its
10: * documentation is hereby granted, provided that both the copyright
11: * notice and this permission notice appear in all copies of the
12: * software, derivative works or modified versions, and any portions
13: * thereof, and that both notices appear in supporting documentation.
14: *
15: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
16: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
17: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
18: *
19: * Carnegie Mellon requests users of this software to return to
20: *
21: * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
22: * School of Computer Science
23: * Carnegie Mellon University
24: * Pittsburgh PA 15213-3890
25: *
26: * any improvements or extensions that they make and grant Carnegie Mellon
27: * the rights to redistribute these changes.
28: */
29:
30: /*
31: * Interface to the debugger for virtual memory read/write.
32: * This is a simple version for kernels with writable text.
33: * For an example of read-only kernel text, see the file:
34: * sys/arch/sun3/sun3/db_memrw.c
35: *
36: * ALERT! If you want to access device registers with a
37: * specific size, then the read/write functions have to
38: * make sure to do the correct sized pointer access.
39: */
40:
41: #include <sys/param.h>
42: #include <sys/proc.h>
43:
44: #include <uvm/uvm_extern.h>
45:
46: #include <machine/db_machdep.h>
47:
48: #include <ddb/db_access.h>
49:
50: /*
51: * Read bytes from kernel address space for debugger.
52: */
53: void
54: db_read_bytes(addr, size, data)
55: db_addr_t addr;
56: register size_t size;
57: register char *data;
58: {
59: register char *src = (char *)addr;
60:
61: if (size == 4) {
62: *((int *)data) = *((int *)src);
63: return;
64: }
65:
66: if (size == 2) {
67: *((short *)data) = *((short *)src);
68: return;
69: }
70:
71: while (size > 0) {
72: --size;
73: *data++ = *src++;
74: }
75: }
76:
77: /*
78: * Write bytes to kernel address space for debugger.
79: */
80: void
81: db_write_bytes(addr, size, data)
82: db_addr_t addr;
83: register size_t size;
84: register char *data;
85: {
86: register char *dst = (char *)addr;
87:
88: if (size == 4) {
89: *((int *)dst) = *((int *)data);
90: return;
91: }
92:
93: if (size == 2) {
94: *((short *)dst) = *((short *)data);
95: return;
96: }
97:
98: while (size > 0) {
99: --size;
100: *dst++ = *data++;
101: }
102: }
103:
CVSweb