db_machdep.h revision 82899
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 82899 2001-09-03 22:27:23Z 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
4180709Sjakestruct db_regs {
4280709Sjake	u_long	dr_global[8];
4380709Sjake};
4480709Sjake
4580709Sjaketypedef struct trapframe db_regs_t;
4680709Sjakeextern db_regs_t ddb_regs;
4780709Sjake#define	DDB_REGS	(&ddb_regs)
4880709Sjake
4980709Sjake#define	PC_REGS(regs)	((db_addr_t)(regs)->tf_tpc)
5080709Sjake
5180709Sjake#define	BKPT_INST	(0)
5280709Sjake#define	BKPT_SIZE	(4)
5380709Sjake#define	BKPT_SET(inst)	(BKPT_INST)
5480709Sjake
5580709Sjake#define	FIXUP_PC_AFTER_BREAK do {					\
5680709Sjake	ddb_regs.tf_tpc = ddb_regs.tf_tnpc;				\
5780709Sjake	ddb_regs.tf_tnpc += BKPT_SIZE;					\
5880709Sjake} while (0);
5980709Sjake
6080709Sjake#define	db_clear_single_step(regs)
6180709Sjake#define	db_set_single_step(regs)
6280709Sjake
6380709Sjake#define	IS_BREAKPOINT_TRAP(type, code)	(type == T_BREAKPOINT)
6480709Sjake#define	IS_WATCHPOINT_TRAP(type, code)	(0)
6580709Sjake
6680709Sjake#define	inst_trap_return(ins)	(0)
6780709Sjake#define	inst_return(ins)	(0)
6880709Sjake#define	inst_call(ins)		(0)
6980709Sjake#define	inst_load(ins)		(0)
7080709Sjake#define	inst_store(ins)		(0)
7180709Sjake
7280709Sjake#define	DB_SMALL_VALUE_MAX	(0x7fffffff)
7380709Sjake#define	DB_SMALL_VALUE_MIN	(-0x40001)
7480709Sjake
7580709Sjake#define	DB_ELFSIZE		64
7680709Sjake
7780708Sjake#endif /* !_MACHINE_DB_MACHDEP_H_ */
78