ddb.h revision 798
1193323Sed/*-
2193323Sed * Copyright (c) 1993, Garrett A. Wollman.
3193323Sed * Copyright (c) 1993, University of Vermont and State Agricultural College.
4193323Sed * All rights reserved.
5193323Sed *
6193323Sed * Redistribution and use in source and binary forms, with or without
7193323Sed * modification, are permitted provided that the following conditions
8193323Sed * are met:
9193323Sed * 1. Redistributions of source code must retain the above copyright
10193323Sed *    notice, this list of conditions and the following disclaimer.
11193323Sed * 2. Redistributions in binary form must reproduce the above copyright
12193323Sed *    notice, this list of conditions and the following disclaimer in the
13193323Sed *    documentation and/or other materials provided with the distribution.
14193323Sed * 3. Neither the name of the University nor the names of its contributors
15193323Sed *    may be used to endorse or promote products derived from this software
16193323Sed *    without specific prior written permission.
17198090Srdivacky *
18193323Sed * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19193323Sed * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20193323Sed * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21193323Sed * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22198090Srdivacky * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23202878Srdivacky * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24202878Srdivacky * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25202878Srdivacky * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26202878Srdivacky * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27193323Sed * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28193323Sed * SUCH DAMAGE.
29193323Sed *
30193323Sed *	$Id$
31202878Srdivacky */
32202878Srdivacky
33193323Sed/*
34193323Sed * Necessary declarations for the `ddb' kernel debugger.
35193323Sed */
36193323Sed
37193323Sed#ifndef __h_ddb_ddb
38193323Sed#define __h_ddb_ddb 1
39193323Sed
40193323Sed#include "machine/db_machdep.h"		/* type definitions */
41193323Sed
42193323Sed/*
43193323Sed * Global variables...
44193323Sed */
45193323Sedextern char *esym;
46193323Sedextern unsigned int db_maxoff;
47193323Sedextern int db_inst_count;
48193323Sedextern int db_load_count;
49193323Sedextern int db_store_count;
50193323Sedextern int db_radix;
51193323Sedextern int db_max_width;
52193323Sedextern int db_tab_stop_width;
53193323Sed
54193323Sed/*
55193323Sed * Functions...
56193323Sed */
57193323Sedextern void
58193323Seddb_read_bytes(vm_offset_t addr, register int size, register char *data);
59193323Sed				/* machine-dependent */
60193323Sed
61193323Sedextern void
62193323Seddb_write_bytes(vm_offset_t addr, register int size, register char *data);
63193323Sed				/* machine-dependent */
64193323Sed
65193323Sedstruct vm_map;			/* forward declaration */
66193323Sed
67193323Sedextern boolean_t db_map_equal(struct vm_map *, struct vm_map *);
68193323Sedextern boolean_t db_map_current(struct vm_map *);
69193323Sedextern struct vm_map *db_map_addr(vm_offset_t);
70193323Sed
71193323Sed#define db_strcpy strcpy
72193323Sedextern int db_expression (db_expr_t *valuep);
73193323Sed
74193323Sedtypedef void db_cmd_fcn(db_expr_t, int, db_expr_t, char *);
75193323Sed
76193323Sedextern db_cmd_fcn db_listbreak_cmd, db_listwatch_cmd, db_show_regs;
77193323Sedextern db_cmd_fcn db_print_cmd, db_examine_cmd, db_set_cmd, db_search_cmd;
78193323Sedextern db_cmd_fcn db_write_cmd, db_delete_cmd, db_breakpoint_cmd;
79193323Sedextern db_cmd_fcn db_deletewatch_cmd, db_watchpoint_cmd;
80193323Sedextern db_cmd_fcn db_single_step_cmd, db_trace_until_call_cmd;
81193323Sedextern db_cmd_fcn db_trace_until_matching_cmd, db_continue_cmd;
82193323Sedextern db_cmd_fcn db_stack_trace_cmd;
83193323Sed
84202878Srdivackyextern db_addr_t db_disasm(db_addr_t loc, boolean_t altfmt);
85202878Srdivacky			/* instruction disassembler */
86202878Srdivacky
87202878Srdivackyextern int db_value_of_name (char *name, db_expr_t *valuep);
88202878Srdivackyextern int db_get_variable (db_expr_t *valuep);
89202878Srdivackyextern void db_putchar (int c);
90202878Srdivackyextern void db_error (char *s);
91202878Srdivackyextern int db_readline (char *lstart, int lsize);
92202878Srdivackyextern void db_printf (const char *fmt, ...);
93202878Srdivackyextern void db_check_interrupt(void);
94202878Srdivackyextern void db_print_loc_and_inst (db_addr_t loc);
95202878Srdivacky
96202878Srdivackyextern void db_clear_watchpoints (void);
97202878Srdivackyextern void db_set_watchpoints (void);
98202878Srdivacky
99202878Srdivackyextern void db_restart_at_pc(boolean_t watchpt);
100202878Srdivackyextern boolean_t db_stop_at_pc(boolean_t *is_breakpoint);
101202878Srdivacky
102202878Srdivackyextern void db_skip_to_eol (void);
103202878Srdivackyextern void db_single_step (db_regs_t *regs);
104202878Srdivacky
105202878Srdivackyextern void db_trap (int type, int code);
106202878Srdivacky
107202878Srdivackyextern void kdbprinttrap(int, int);
108202878Srdivacky
109202878Srdivacky#endif /* __h_ddb_ddb */
110202878Srdivacky