diff options
author | Per Fogelstrom <pefo@cvs.openbsd.org> | 2004-08-06 20:56:04 +0000 |
---|---|---|
committer | Per Fogelstrom <pefo@cvs.openbsd.org> | 2004-08-06 20:56:04 +0000 |
commit | 19482c63002c7cb4a197859fadbdf7ee9c9887e0 (patch) | |
tree | 85ac7924361e1b86243cebe50e7cfafcc77b9276 /sys/arch/mips64/include/db_machdep.h | |
parent | a3a7bb7b5dfb4c97516ef6cbb7192a26b04aa73d (diff) |
initial mips64
Diffstat (limited to 'sys/arch/mips64/include/db_machdep.h')
-rw-r--r-- | sys/arch/mips64/include/db_machdep.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/sys/arch/mips64/include/db_machdep.h b/sys/arch/mips64/include/db_machdep.h new file mode 100644 index 00000000000..ba008d3ab20 --- /dev/null +++ b/sys/arch/mips64/include/db_machdep.h @@ -0,0 +1,84 @@ +/* $OpenBSD: db_machdep.h,v 1.1 2004/08/06 20:56:01 pefo Exp $ */ + +/* + * Copyright (c) 1998-2003 Opsycon AB (www.opsycon.se) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by Opsycon AB, Sweden. + * 4. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS + * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#ifndef _MIPS_DB_MACHDEP_H_ +#define _MIPS_DB_MACHDEP_H_ + +#include <machine/frame.h> +#include <machine/trap.h> +#include <uvm/uvm_param.h> + +#define MID_MACHINE 0 /* XXX booo... */ +#define DB_MACHINE_COMMANDS /* We have machine specific commands */ +#define DB_ELF_SYMBOLS /* Elf style symbol table support */ +#define DB_NO_AOUT /* For crying out loud! */ +#define DB_ELFSIZE 32 /* This is the size of symtab stuff */ + +typedef struct trap_frame db_regs_t; +db_regs_t ddb_regs; + +typedef long db_expr_t; +typedef vaddr_t db_addr_t; + +#define SOFTWARE_SSTEP /* Need software single step */ +#define SOFTWARE_SSTEP_EMUL /* next_instr_address() emulates 100% */ +db_addr_t next_instr_address __P((db_addr_t, boolean_t)); +#define BKPT_SIZE (4) +#define BKPT_SET(ins) (BREAK_DDB) +#define DB_VALID_BREAKPOINT(addr) (((addr) & 3) == 0) + +#define IS_BREAKPOINT_TRAP(type, code) ((type) == T_BREAK) +#define IS_WATCHPOINT_TRAP(type, code) (0) /* XXX mips3 watchpoint */ + +#define PC_REGS(regs) ((db_addr_t)(regs)->pc) +#define DDB_REGS (&ddb_regs) + +/* + * Test of instructions to see class. + */ +#define IT_CALL 0x01 +#define IT_BRANCH 0x02 +#define IT_LOAD 0x03 +#define IT_STORE 0x04 + +#define inst_branch(i) (db_inst_type(i) == IT_BRANCH) +#define inst_trap_return(i) ((i) & 0) +#define inst_call(i) (db_inst_type(i) == IT_CALL) +#define inst_return(i) ((i) == 0x03e00008) +#define inst_load(i) (db_inst_type(i) == IT_LOAD) +#define inst_store(i) (db_inst_type(i) == IT_STORE) + +int db_inst_type __P((int)); +void db_machine_init __P((void)); + +#endif /* !_MIPS_DB_MACHDEP_H_ */ |