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