db_interface.c revision 163192
1/*	$FreeBSD: head/sys/powerpc/powerpc/db_interface.c 163192 2006-10-10 07:26:54Z bde $ */
2/*	$NetBSD: db_interface.c,v 1.20 2002/05/13 20:30:09 matt Exp $ */
3/*	$OpenBSD: db_interface.c,v 1.2 1996/12/28 06:21:50 rahnds Exp $	*/
4
5
6#include <sys/param.h>
7#include <sys/systm.h>
8#include <sys/cons.h>
9#include <sys/kdb.h>
10#include <sys/ktr.h>
11#include <sys/lock.h>
12#include <sys/pcpu.h>
13#include <sys/proc.h>
14#include <sys/smp.h>
15
16#include <machine/cpu.h>
17#include <machine/md_var.h>
18
19#include <vm/vm.h>
20#include <vm/pmap.h>
21
22#include <ddb/ddb.h>
23#include <ddb/db_sym.h>
24#include <ddb/db_command.h>
25#include <ddb/db_access.h>
26#include <ddb/db_output.h>
27
28#include <dev/ofw/openfirm.h>
29
30int
31db_read_bytes(vm_offset_t addr, size_t size, char *data)
32{
33	jmp_buf jb;
34	void *prev_jb;
35	char *src;
36	int ret;
37
38	prev_jb = kdb_jmpbuf(jb);
39	ret = setjmp(jb);
40	if (ret == 0) {
41		src = (char *)addr;
42
43		if (size == 4)
44			*((int *)data) = *((int *)src);
45		else if (size == 2)
46			*((short *)data) = *((short *)src);
47		else
48			while (size-- > 0)
49				*data++ = *src++;
50	}
51	(void)kdb_jmpbuf(prev_jb);
52	return (ret);
53}
54
55int
56db_write_bytes(vm_offset_t addr, size_t size, char *data)
57{
58	jmp_buf jb;
59	void *prev_jb;
60	char *dst;
61	int ret;
62
63	prev_jb = kdb_jmpbuf(jb);
64	ret = setjmp(jb);
65	if (ret == 0) {
66		dst = (char *)addr;
67
68		if (size == 4)
69			*((int *)dst) = *((int *)data);
70		else if (size == 2)
71			*((short *)dst) = *((short *)data);
72		else
73			while (size-- > 0)
74				*dst++ = *data++;
75	}
76	__syncicache((void *)addr, size);
77
78	(void)kdb_jmpbuf(prev_jb);
79	return (ret);
80}
81
82void
83db_show_mdpcpu(struct pcpu *pc)
84{
85}
86