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