mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-22 02:37:15 +00:00
arm64: Add EL1 hardware breakpoint exceptions
Reviewed by: jhb Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D44353
This commit is contained in:
parent
d93b3a65f7
commit
c802b486dd
|
@ -110,6 +110,7 @@ gdb_cpu_signal(int type, int code __unused)
|
|||
switch (type) {
|
||||
case EXCP_WATCHPT_EL1:
|
||||
case EXCP_SOFTSTP_EL1:
|
||||
case EXCP_BRKPT_EL1:
|
||||
case EXCP_BRK:
|
||||
return (SIGTRAP);
|
||||
}
|
||||
|
|
|
@ -500,6 +500,7 @@ do_el1h_sync(struct thread *td, struct trapframe *frame)
|
|||
*/
|
||||
switch (exception) {
|
||||
case EXCP_BRK:
|
||||
case EXCP_BRKPT_EL1:
|
||||
case EXCP_WATCHPT_EL1:
|
||||
case EXCP_SOFTSTP_EL1:
|
||||
break;
|
||||
|
@ -551,6 +552,7 @@ do_el1h_sync(struct thread *td, struct trapframe *frame)
|
|||
panic("No debugger in kernel.");
|
||||
#endif
|
||||
break;
|
||||
case EXCP_BRKPT_EL1:
|
||||
case EXCP_WATCHPT_EL1:
|
||||
case EXCP_SOFTSTP_EL1:
|
||||
#ifdef KDB
|
||||
|
|
|
@ -439,6 +439,7 @@
|
|||
#define EXCP_TRAP_FP 0x2c /* Trapped FP exception */
|
||||
#define EXCP_SERROR 0x2f /* SError interrupt */
|
||||
#define EXCP_BRKPT_EL0 0x30 /* Hardware breakpoint, from same EL */
|
||||
#define EXCP_BRKPT_EL1 0x31 /* Hardware breakpoint, from same EL */
|
||||
#define EXCP_SOFTSTP_EL0 0x32 /* Software Step, from lower EL */
|
||||
#define EXCP_SOFTSTP_EL1 0x33 /* Software Step, from same EL */
|
||||
#define EXCP_WATCHPT_EL0 0x34 /* Watchpoint, from lower EL */
|
||||
|
|
|
@ -36,6 +36,7 @@
|
|||
#include <machine/trap.h>
|
||||
|
||||
#define T_BREAKPOINT (EXCP_BRK)
|
||||
#define T_HW_BREAKPOINT (EXCP_BRKPT_EL1)
|
||||
#define T_SINGLESTEP (EXCP_SOFTSTP_EL1)
|
||||
#define T_WATCHPOINT (EXCP_WATCHPT_EL1)
|
||||
|
||||
|
@ -56,7 +57,8 @@ typedef long db_expr_t;
|
|||
#define db_clear_single_step kdb_cpu_clear_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_WATCHPOINT_TRAP(type, code) (type == T_WATCHPOINT)
|
||||
|
||||
|
|
Loading…
Reference in a new issue