diff --git a/sys/arm64/arm64/debug_monitor.c b/sys/arm64/arm64/debug_monitor.c --- a/sys/arm64/arm64/debug_monitor.c +++ b/sys/arm64/arm64/debug_monitor.c @@ -40,6 +40,7 @@ #include #include #include +#include #include #include @@ -86,6 +87,7 @@ #define DBG_WATCH_CTRL_ACCESS_MASK(x) ((x) & (0x3 << 3)) /* Common for breakpoint and watchpoint */ +#define DBG_WB_CTRL_HMC (0x1 << 13) #define DBG_WB_CTRL_EL1 (0x1 << 1) #define DBG_WB_CTRL_EL0 (0x2 << 1) #define DBG_WB_CTRL_ELX_MASK(x) ((x) & (0x3 << 1)) @@ -457,6 +459,8 @@ if ((monitor->dbg_flags & DBGMON_KERNEL) == 0) bcr_priv = DBG_WB_CTRL_EL0; + else if (in_vhe()) + bcr_priv = DBG_WB_CTRL_EL1 | DBG_WB_CTRL_HMC; else bcr_priv = DBG_WB_CTRL_EL1; @@ -530,6 +534,8 @@ if ((monitor->dbg_flags & DBGMON_KERNEL) == 0) wcr_priv = DBG_WB_CTRL_EL0; + else if (in_vhe()) + wcr_priv = DBG_WB_CTRL_EL1 | DBG_WB_CTRL_HMC; else wcr_priv = DBG_WB_CTRL_EL1;