db_machdep.h revision 115970
182899Sjake/*
282899Sjake * Mach Operating System
382899Sjake * Copyright (c) 1991,1990 Carnegie Mellon University
482899Sjake * All Rights Reserved.
580708Sjake *
682899Sjake * Permission to use, copy, modify and distribute this software and its
782899Sjake * documentation is hereby granted, provided that both the copyright
882899Sjake * notice and this permission notice appear in all copies of the
982899Sjake * software, derivative works or modified versions, and any portions
1082899Sjake * thereof, and that both notices appear in supporting documentation.
1180708Sjake *
1282899Sjake * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
1382899Sjake * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
1482899Sjake * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
1580708Sjake *
1682899Sjake * Carnegie Mellon requests users of this software to return to
1782899Sjake *
1882899Sjake *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
1982899Sjake *  School of Computer Science
2082899Sjake *  Carnegie Mellon University
2182899Sjake *  Pittsburgh PA 15213-3890
2282899Sjake *
2382899Sjake * any improvements or extensions that they make and grant Carnegie Mellon
2482899Sjake * the rights to redistribute these changes.
2582899Sjake *
2682899Sjake *	from: FreeBSD: src/sys/i386/include/db_machdep.h,v 1.16 1999/10/04
2780708Sjake * $FreeBSD: head/sys/sparc64/include/db_machdep.h 115970 2003-06-07 18:24:37Z jake $
2880708Sjake */
2980708Sjake
3080708Sjake#ifndef	_MACHINE_DB_MACHDEP_H_
3180708Sjake#define	_MACHINE_DB_MACHDEP_H_
3280708Sjake
3380709Sjake#include <machine/frame.h>
3480709Sjake#include <machine/trap.h>
3580709Sjake
3680709Sjake#define	BYTE_MSF	(1)
3780709Sjake
3880709Sjaketypedef vm_offset_t	db_addr_t;
3982004Sjaketypedef long		db_expr_t;
4080709Sjake
4180709Sjaketypedef struct trapframe db_regs_t;
4280709Sjakeextern db_regs_t ddb_regs;
4380709Sjake#define	DDB_REGS	(&ddb_regs)
4480709Sjake
4580709Sjake#define	PC_REGS(regs)	((db_addr_t)(regs)->tf_tpc)
4680709Sjake
47115970Sjake#define	BKPT_INST	(0x91d03001)
4880709Sjake#define	BKPT_SIZE	(4)
4980709Sjake#define	BKPT_SET(inst)	(BKPT_INST)
5080709Sjake
5186525Sjake#define	BKPT_SKIP do {							\
5286525Sjake	ddb_regs.tf_tpc = ddb_regs.tf_tnpc + 4;				\
5386525Sjake	ddb_regs.tf_tnpc += 8;						\
5486525Sjake} while (0)
5580709Sjake
5680709Sjake#define	db_clear_single_step(regs)
5780709Sjake#define	db_set_single_step(regs)
5880709Sjake
5980709Sjake#define	IS_BREAKPOINT_TRAP(type, code)	(type == T_BREAKPOINT)
6080709Sjake#define	IS_WATCHPOINT_TRAP(type, code)	(0)
6180709Sjake
6280709Sjake#define	inst_trap_return(ins)	(0)
6380709Sjake#define	inst_return(ins)	(0)
6480709Sjake#define	inst_call(ins)		(0)
6580709Sjake#define	inst_load(ins)		(0)
6680709Sjake#define	inst_store(ins)		(0)
6780709Sjake
6880709Sjake#define	DB_SMALL_VALUE_MAX	(0x7fffffff)
6980709Sjake#define	DB_SMALL_VALUE_MIN	(-0x40001)
7080709Sjake
7180709Sjake#define	DB_ELFSIZE		64
7280709Sjake
7380708Sjake#endif /* !_MACHINE_DB_MACHDEP_H_ */
74