Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/include/db_machdep.h
Show All 30 Lines | |||||
#ifndef _MACHINE_DB_MACHDEP_H_ | #ifndef _MACHINE_DB_MACHDEP_H_ | ||||
#define _MACHINE_DB_MACHDEP_H_ | #define _MACHINE_DB_MACHDEP_H_ | ||||
#include <machine/armreg.h> | #include <machine/armreg.h> | ||||
#include <machine/frame.h> | #include <machine/frame.h> | ||||
#include <machine/trap.h> | #include <machine/trap.h> | ||||
#define T_BREAKPOINT (EXCP_BRK) | #define T_BREAKPOINT (EXCP_BRK) | ||||
#define T_HW_BREAKPOINT (EXCP_BRKPT_EL1) | |||||
#define T_SINGLESTEP (EXCP_SOFTSTP_EL1) | #define T_SINGLESTEP (EXCP_SOFTSTP_EL1) | ||||
#define T_WATCHPOINT (EXCP_WATCHPT_EL1) | #define T_WATCHPOINT (EXCP_WATCHPT_EL1) | ||||
typedef vm_offset_t db_addr_t; | typedef vm_offset_t db_addr_t; | ||||
typedef long db_expr_t; | typedef long db_expr_t; | ||||
#define PC_REGS() ((db_addr_t)kdb_thrctx->pcb_x[PCB_LR]) | #define PC_REGS() ((db_addr_t)kdb_thrctx->pcb_x[PCB_LR]) | ||||
#define BKPT_INST (0xd4200000) | #define BKPT_INST (0xd4200000) | ||||
#define BKPT_SIZE (4) | #define BKPT_SIZE (4) | ||||
#define BKPT_SET(inst) (BKPT_INST) | #define BKPT_SET(inst) (BKPT_INST) | ||||
#define BKPT_SKIP do { \ | #define BKPT_SKIP do { \ | ||||
kdb_frame->tf_elr += BKPT_SIZE; \ | kdb_frame->tf_elr += BKPT_SIZE; \ | ||||
kdb_thrctx->pcb_x[PCB_LR] += BKPT_SIZE; \ | kdb_thrctx->pcb_x[PCB_LR] += BKPT_SIZE; \ | ||||
} while (0) | } while (0) | ||||
#define db_clear_single_step kdb_cpu_clear_singlestep | #define db_clear_single_step kdb_cpu_clear_singlestep | ||||
#define db_set_single_step kdb_cpu_set_singlestep | #define db_set_single_step kdb_cpu_set_singlestep | ||||
#define IS_BREAKPOINT_TRAP(type, code) (type == T_BREAKPOINT) | #define IS_BREAKPOINT_TRAP(type, code) \ | ||||
(type == T_BREAKPOINT || type == T_HW_BREAKPOINT) | |||||
#define IS_SSTEP_TRAP(type, code) (type == T_SINGLESTEP) | #define IS_SSTEP_TRAP(type, code) (type == T_SINGLESTEP) | ||||
#define IS_WATCHPOINT_TRAP(type, code) (type == T_WATCHPOINT) | #define IS_WATCHPOINT_TRAP(type, code) (type == T_WATCHPOINT) | ||||
#define inst_trap_return(ins) (0) | #define inst_trap_return(ins) (0) | ||||
/* ret */ | /* ret */ | ||||
#define inst_return(ins) (((ins) & 0xfffffc1fu) == 0xd65f0000) | #define inst_return(ins) (((ins) & 0xfffffc1fu) == 0xd65f0000) | ||||
#define inst_call(ins) (((ins) & 0xfc000000u) == 0x94000000u || /* BL */ \ | #define inst_call(ins) (((ins) & 0xfc000000u) == 0x94000000u || /* BL */ \ | ||||
((ins) & 0xfffffc1fu) == 0xd63f0000u) /* BLR */ | ((ins) & 0xfffffc1fu) == 0xd63f0000u) /* BLR */ | ||||
▲ Show 20 Lines • Show All 57 Lines • Show Last 20 Lines |