180709Sjake/*- 280709Sjake * Copyright (c) 2001 Jake Burkholder. 380709Sjake * All rights reserved. 480709Sjake * 580709Sjake * Redistribution and use in source and binary forms, with or without 680709Sjake * modification, are permitted provided that the following conditions 780709Sjake * are met: 880709Sjake * 1. Redistributions of source code must retain the above copyright 980709Sjake * notice, this list of conditions and the following disclaimer. 1080709Sjake * 2. Redistributions in binary form must reproduce the above copyright 1180709Sjake * notice, this list of conditions and the following disclaimer in the 1280709Sjake * documentation and/or other materials provided with the distribution. 1380709Sjake * 1481337Sobrien * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1580709Sjake * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1680709Sjake * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1781337Sobrien * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1880709Sjake * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1980709Sjake * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2080709Sjake * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2180709Sjake * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2280709Sjake * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2380709Sjake * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2480709Sjake * SUCH DAMAGE. 2580709Sjake * 2680709Sjake * $FreeBSD$ 2780709Sjake */ 2880709Sjake 2980709Sjake#include <sys/param.h> 3080709Sjake#include <sys/systm.h> 3180709Sjake#include <sys/reboot.h> 3280709Sjake#include <sys/cons.h> 33131952Smarcel#include <sys/kdb.h> 3480709Sjake#include <sys/ktr.h> 3580709Sjake#include <sys/lock.h> 3680709Sjake#include <sys/pcpu.h> 3780709Sjake#include <sys/proc.h> 3880709Sjake#include <sys/smp.h> 3980709Sjake 4080709Sjake#include <machine/cpu.h> 4180709Sjake#include <machine/md_var.h> 4280709Sjake 4380709Sjake#include <vm/vm.h> 4480709Sjake#include <vm/pmap.h> 4580709Sjake 4680709Sjake#include <ddb/ddb.h> 4780709Sjake#include <ddb/db_access.h> 4880709Sjake#include <ddb/db_sym.h> 4980709Sjake#include <ddb/db_variables.h> 5080709Sjake 5192205Sjake#include <machine/atomic.h> 5284181Sjake#include <machine/setjmp.h> 5380709Sjake 5480709Sjakeint 5580709Sjakedb_read_bytes(vm_offset_t addr, size_t size, char *data) 5680709Sjake{ 57131952Smarcel jmp_buf jb; 58131952Smarcel void *prev_jb; 5980709Sjake char *src; 60131952Smarcel int ret; 6180709Sjake 62131952Smarcel prev_jb = kdb_jmpbuf(jb); 63131952Smarcel ret = setjmp(jb); 64131952Smarcel if (ret == 0) { 65131952Smarcel src = (char *)addr; 66131952Smarcel while (size-- > 0) 67131952Smarcel *data++ = *src++; 68131952Smarcel } 69131952Smarcel (void)kdb_jmpbuf(prev_jb); 70131952Smarcel return (ret); 7180709Sjake} 7280709Sjake 73131952Smarcelint 7480709Sjakedb_write_bytes(vm_offset_t addr, size_t size, char *data) 7580709Sjake{ 76131952Smarcel jmp_buf jb; 77131952Smarcel void *prev_jb; 7880709Sjake char *dst; 79131952Smarcel int ret; 8080709Sjake 81131952Smarcel prev_jb = kdb_jmpbuf(jb); 82131952Smarcel ret = setjmp(jb); 83131952Smarcel if (ret == 0) { 84131952Smarcel dst = (char *)addr; 85131952Smarcel while (size-- > 0) 86131952Smarcel *dst++ = *data++; 87131952Smarcel } 88131952Smarcel (void)kdb_jmpbuf(prev_jb); 89131952Smarcel return (ret); 9080709Sjake} 9180709Sjake 9287702Sjhbvoid 9387702Sjhbdb_show_mdpcpu(struct pcpu *pc) 9487702Sjhb{ 9587702Sjhb} 96