aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Turner <andrew@FreeBSD.org>2022-01-26 15:43:14 +0000
committerAndrew Turner <andrew@FreeBSD.org>2022-02-04 10:49:27 +0000
commit664640ba6ccd0c14b607e9babd101dc85ac9c28a (patch)
tree579c8eb707df9963ae07131939274df5179f838f
parentcd7306bb1fd1c4f2b2875bb7947ef5ee905f5f26 (diff)
downloadsrc-664640ba6ccd0c14b607e9babd101dc85ac9c28a.tar.gz
src-664640ba6ccd0c14b607e9babd101dc85ac9c28a.zip
Sort the names of the arm64 debug registers
While here clean up the names for the naming convention of the other registers in this file. Reviewed by: kib, mhorne (earlier version) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D34060
-rw-r--r--sys/arm64/arm64/debug_monitor.c24
-rw-r--r--sys/arm64/arm64/exec_machdep.c20
-rw-r--r--sys/arm64/arm64/swtch.S4
-rw-r--r--sys/arm64/arm64/trap.c2
-rw-r--r--sys/arm64/include/armreg.h92
5 files changed, 70 insertions, 72 deletions
diff --git a/sys/arm64/arm64/debug_monitor.c b/sys/arm64/arm64/debug_monitor.c
index 83b1f2b8b65b..2ec76c9a2f33 100644
--- a/sys/arm64/arm64/debug_monitor.c
+++ b/sys/arm64/arm64/debug_monitor.c
@@ -189,9 +189,9 @@ kdb_cpu_set_singlestep(void)
KASSERT((READ_SPECIALREG(daif) & PSR_D) == PSR_D,
("%s: debug exceptions are not masked", __func__));
- kdb_frame->tf_spsr |= DBG_SPSR_SS;
+ kdb_frame->tf_spsr |= PSR_SS;
WRITE_SPECIALREG(mdscr_el1, READ_SPECIALREG(mdscr_el1) |
- DBG_MDSCR_SS | DBG_MDSCR_KDE);
+ MDSCR_SS | MDSCR_KDE);
/*
* Disable breakpoints and watchpoints, e.g. stepping
@@ -200,7 +200,7 @@ kdb_cpu_set_singlestep(void)
*/
if ((kernel_monitor.dbg_flags & DBGMON_ENABLED) != 0) {
WRITE_SPECIALREG(mdscr_el1,
- READ_SPECIALREG(mdscr_el1) & ~DBG_MDSCR_MDE);
+ READ_SPECIALREG(mdscr_el1) & ~MDSCR_MDE);
}
}
@@ -212,16 +212,16 @@ kdb_cpu_clear_singlestep(void)
("%s: debug exceptions are not masked", __func__));
WRITE_SPECIALREG(mdscr_el1, READ_SPECIALREG(mdscr_el1) &
- ~(DBG_MDSCR_SS | DBG_MDSCR_KDE));
+ ~(MDSCR_SS | MDSCR_KDE));
/* Restore breakpoints and watchpoints */
if ((kernel_monitor.dbg_flags & DBGMON_ENABLED) != 0) {
WRITE_SPECIALREG(mdscr_el1,
- READ_SPECIALREG(mdscr_el1) | DBG_MDSCR_MDE);
+ READ_SPECIALREG(mdscr_el1) | MDSCR_MDE);
if ((kernel_monitor.dbg_flags & DBGMON_KERNEL) != 0) {
WRITE_SPECIALREG(mdscr_el1,
- READ_SPECIALREG(mdscr_el1) | DBG_MDSCR_KDE);
+ READ_SPECIALREG(mdscr_el1) | MDSCR_KDE);
}
}
}
@@ -482,7 +482,7 @@ dbg_register_sync(struct debug_monitor_state *monitor)
mdscr = READ_SPECIALREG(mdscr_el1);
if ((monitor->dbg_flags & DBGMON_ENABLED) == 0) {
- mdscr &= ~(DBG_MDSCR_MDE | DBG_MDSCR_KDE);
+ mdscr &= ~(MDSCR_MDE | MDSCR_KDE);
} else {
for (i = 0; i < dbg_breakpoint_num; i++) {
dbg_wb_write_reg(DBG_REG_BASE_BCR, i,
@@ -497,9 +497,9 @@ dbg_register_sync(struct debug_monitor_state *monitor)
dbg_wb_write_reg(DBG_REG_BASE_WVR, i,
monitor->dbg_wvr[i]);
}
- mdscr |= DBG_MDSCR_MDE;
+ mdscr |= MDSCR_MDE;
if ((monitor->dbg_flags & DBGMON_KERNEL) == DBGMON_KERNEL)
- mdscr |= DBG_MDSCR_KDE;
+ mdscr |= MDSCR_KDE;
}
WRITE_SPECIALREG(mdscr_el1, mdscr);
isb();
@@ -563,8 +563,7 @@ dbg_monitor_enter(struct thread *thread)
dbg_wb_write_reg(DBG_REG_BASE_BVR, i, 0);
}
WRITE_SPECIALREG(mdscr_el1,
- READ_SPECIALREG(mdscr_el1) &
- ~(DBG_MDSCR_MDE | DBG_MDSCR_KDE));
+ READ_SPECIALREG(mdscr_el1) & ~(MDSCR_MDE | MDSCR_KDE));
isb();
}
}
@@ -597,8 +596,7 @@ dbg_monitor_exit(struct thread *thread, struct trapframe *frame)
dbg_wb_write_reg(DBG_REG_BASE_BVR, i, 0);
}
WRITE_SPECIALREG(mdscr_el1,
- READ_SPECIALREG(mdscr_el1) &
- ~(DBG_MDSCR_MDE | DBG_MDSCR_KDE));
+ READ_SPECIALREG(mdscr_el1) & ~(MDSCR_MDE | MDSCR_KDE));
isb();
}
}
diff --git a/sys/arm64/arm64/exec_machdep.c b/sys/arm64/arm64/exec_machdep.c
index a2727b78b204..820bb4a68108 100644
--- a/sys/arm64/arm64/exec_machdep.c
+++ b/sys/arm64/arm64/exec_machdep.c
@@ -241,10 +241,10 @@ set_dbregs(struct thread *td, struct dbreg *regs)
* constrained undefined behaviour. If the user mis-programs
* these, there is no risk to the system.
*/
- ctrl &= DBG_BCR_EN | DBG_BCR_PMC | DBG_BCR_BAS;
- if ((ctrl & DBG_BCR_EN) != 0) {
+ ctrl &= DBGBCR_EN | DBGBCR_PMC | DBGBCR_BAS;
+ if ((ctrl & DBGBCR_EN) != 0) {
/* Only target EL0. */
- if ((ctrl & DBG_BCR_PMC) != DBG_BCR_PMC_EL0)
+ if ((ctrl & DBGBCR_PMC) != DBGBCR_PMC_EL0)
return (EINVAL);
monitor->dbg_enable_count++;
@@ -269,24 +269,24 @@ set_dbregs(struct thread *td, struct dbreg *regs)
* Some control fields are ignored, and other bits reserved.
* Only unlinked watchpoints are supported.
*/
- ctrl &= DBG_WCR_EN | DBG_WCR_PAC | DBG_WCR_LSC | DBG_WCR_BAS |
- DBG_WCR_MASK;
+ ctrl &= DBGWCR_EN | DBGWCR_PAC | DBGWCR_LSC | DBGWCR_BAS |
+ DBGWCR_MASK;
- if ((ctrl & DBG_WCR_EN) != 0) {
+ if ((ctrl & DBGWCR_EN) != 0) {
/* Only target EL0. */
- if ((ctrl & DBG_WCR_PAC) != DBG_WCR_PAC_EL0)
+ if ((ctrl & DBGWCR_PAC) != DBGWCR_PAC_EL0)
return (EINVAL);
/* Must set at least one of the load/store bits. */
- if ((ctrl & DBG_WCR_LSC) == 0)
+ if ((ctrl & DBGWCR_LSC) == 0)
return (EINVAL);
/*
* When specifying the address range with BAS, the MASK
* field must be zero.
*/
- if ((ctrl & DBG_WCR_BAS) != DBG_WCR_BAS_MASK &&
- (ctrl & DBG_WCR_MASK) != 0)
+ if ((ctrl & DBGWCR_BAS) != DBGWCR_BAS &&
+ (ctrl & DBGWCR_MASK) != 0)
return (EINVAL);
monitor->dbg_enable_count++;
diff --git a/sys/arm64/arm64/swtch.S b/sys/arm64/arm64/swtch.S
index 851dfa386e80..081bdfe88126 100644
--- a/sys/arm64/arm64/swtch.S
+++ b/sys/arm64/arm64/swtch.S
@@ -41,7 +41,7 @@ __FBSDID("$FreeBSD$");
.macro clear_step_flag pcbflags, tmp
tbz \pcbflags, #PCB_SINGLE_STEP_SHIFT, 999f
mrs \tmp, mdscr_el1
- bic \tmp, \tmp, #1
+ bic \tmp, \tmp, #MDSCR_SS
msr mdscr_el1, \tmp
isb
999:
@@ -50,7 +50,7 @@ __FBSDID("$FreeBSD$");
.macro set_step_flag pcbflags, tmp
tbz \pcbflags, #PCB_SINGLE_STEP_SHIFT, 999f
mrs \tmp, mdscr_el1
- orr \tmp, \tmp, #1
+ orr \tmp, \tmp, #MDSCR_SS
msr mdscr_el1, \tmp
isb
999:
diff --git a/sys/arm64/arm64/trap.c b/sys/arm64/arm64/trap.c
index 3e4bc196e194..4a2a6b2f7c7c 100644
--- a/sys/arm64/arm64/trap.c
+++ b/sys/arm64/arm64/trap.c
@@ -623,7 +623,7 @@ do_el0_sync(struct thread *td, struct trapframe *frame)
td->td_frame->tf_spsr &= ~PSR_SS;
td->td_pcb->pcb_flags &= ~PCB_SINGLE_STEP;
WRITE_SPECIALREG(mdscr_el1,
- READ_SPECIALREG(mdscr_el1) & ~DBG_MDSCR_SS);
+ READ_SPECIALREG(mdscr_el1) & ~MDSCR_SS);
call_trapsignal(td, SIGTRAP, TRAP_TRACE,
(void *)frame->tf_elr, exception);
userret(td, frame);
diff --git a/sys/arm64/include/armreg.h b/sys/arm64/include/armreg.h
index 8529c2a177b3..79473a41099e 100644
--- a/sys/arm64/include/armreg.h
+++ b/sys/arm64/include/armreg.h
@@ -133,6 +133,44 @@
#define DAIF_INTR (DAIF_I) /* All exceptions that pass */
/* through the intr framework */
+/* DBGBCR<n>_EL1 - Debug Breakpoint Control Registers */
+#define DBGBCR_EN 0x1
+#define DBGBCR_PMC_SHIFT 1
+#define DBGBCR_PMC (0x3 << DBGBCR_PMC_SHIFT)
+#define DBGBCR_PMC_EL1 (0x1 << DBGBCR_PMC_SHIFT)
+#define DBGBCR_PMC_EL0 (0x2 << DBGBCR_PMC_SHIFT)
+#define DBGBCR_BAS_SHIFT 5
+#define DBGBCR_BAS (0xf << DBGBCR_BAS_SHIFT)
+#define DBGBCR_HMC_SHIFT 13
+#define DBGBCR_HMC (0x1 << DBGBCR_HMC_SHIFT)
+#define DBGBCR_SSC_SHIFT 14
+#define DBGBCR_SSC (0x3 << DBGBCR_SSC_SHIFT)
+#define DBGBCR_LBN_SHIFT 16
+#define DBGBCR_LBN (0xf << DBGBCR_LBN_SHIFT)
+#define DBGBCR_BT_SHIFT 20
+#define DBGBCR_BT (0xf << DBGBCR_BT_SHIFT)
+
+/* DBGWCR<n>_EL1 - Debug Watchpoint Control Registers */
+#define DBGWCR_EN 0x1
+#define DBGWCR_PAC_SHIFT 1
+#define DBGWCR_PAC (0x3 << DBGWCR_PAC_SHIFT)
+#define DBGWCR_PAC_EL1 (0x1 << DBGWCR_PAC_SHIFT)
+#define DBGWCR_PAC_EL0 (0x2 << DBGWCR_PAC_SHIFT)
+#define DBGWCR_LSC_SHIFT 3
+#define DBGWCR_LSC (0x3 << DBGWCR_LSC_SHIFT)
+#define DBGWCR_BAS_SHIFT 5
+#define DBGWCR_BAS (0xff << DBGWCR_BAS_SHIFT)
+#define DBGWCR_HMC_SHIFT 13
+#define DBGWCR_HMC (0x1 << DBGWCR_HMC_SHIFT)
+#define DBGWCR_SSC_SHIFT 14
+#define DBGWCR_SSC (0x3 << DBGWCR_SSC_SHIFT)
+#define DBGWCR_LBN_SHIFT 16
+#define DBGWCR_LBN (0xf << DBGWCR_LBN_SHIFT)
+#define DBGWCR_WT_SHIFT 20
+#define DBGWCR_WT (0x1 << DBGWCR_WT_SHIFT)
+#define DBGWCR_MASK_SHIFT 24
+#define DBGWCR_MASK (0x1f << DBGWCR_MASK_SHIFT)
+
/* DCZID_EL0 - Data Cache Zero ID register */
#define DCZID_DZP (1 << 4) /* DC ZVA prohibited if non-0 */
#define DCZID_BS_SHIFT 0
@@ -1059,6 +1097,14 @@
#define MAIR_NORMAL_WT 0xbb
#define MAIR_NORMAL_WB 0xff
+/* MDSCR_EL1 - Monitor Debug System Control Register */
+#define MDSCR_SS_SHIFT 0
+#define MDSCR_SS (UL(0x1) << MDSCR_SS_SHIFT)
+#define MDSCR_KDE_SHIFT 13
+#define MDSCR_KDE (UL(0x1) << MDSCR_KDE_SHIFT)
+#define MDSCR_MDE_SHIFT 15
+#define MDSCR_MDE (UL(0x1) << MDSCR_MDE_SHIFT)
+
/* MVFR0_EL1 */
#define MVFR0_EL1 MRS_REG(MVFR0_EL1)
#define MVFR0_EL1_op0 0x3
@@ -1381,52 +1427,6 @@
#define TTBR_CnP_SHIFT 0
#define TTBR_CnP (1ul << TTBR_CnP_SHIFT)
-/* Saved Program Status Register */
-#define DBG_SPSR_SS (0x1 << 21)
-
-/* Monitor Debug System Control Register */
-#define DBG_MDSCR_SS (0x1 << 0)
-#define DBG_MDSCR_KDE (0x1 << 13)
-#define DBG_MDSCR_MDE (0x1 << 15)
-
-/* Debug Breakpoint Control Registers */
-#define DBG_BCR_EN 0x1
-#define DBG_BCR_PMC_SHIFT 1
-#define DBG_BCR_PMC (0x3 << DBG_BCR_PMC_SHIFT)
-#define DBG_BCR_PMC_EL1 (0x1 << DBG_BCR_PMC_SHIFT)
-#define DBG_BCR_PMC_EL0 (0x2 << DBG_BCR_PMC_SHIFT)
-#define DBG_BCR_BAS_SHIFT 5
-#define DBG_BCR_BAS (0xf << DBG_BCR_BAS_SHIFT)
-#define DBG_BCR_HMC_SHIFT 13
-#define DBG_BCR_HMC (0x1 << DBG_BCR_HMC_SHIFT)
-#define DBG_BCR_SSC_SHIFT 14
-#define DBG_BCR_SSC (0x3 << DBG_BCR_SSC_SHIFT)
-#define DBG_BCR_LBN_SHIFT 16
-#define DBG_BCR_LBN (0xf << DBG_BCR_LBN_SHIFT)
-#define DBG_BCR_BT_SHIFT 20
-#define DBG_BCR_BT (0xf << DBG_BCR_BT_SHIFT)
-
-/* Debug Watchpoint Control Registers */
-#define DBG_WCR_EN 0x1
-#define DBG_WCR_PAC_SHIFT 1
-#define DBG_WCR_PAC (0x3 << DBG_WCR_PAC_SHIFT)
-#define DBG_WCR_PAC_EL1 (0x1 << DBG_WCR_PAC_SHIFT)
-#define DBG_WCR_PAC_EL0 (0x2 << DBG_WCR_PAC_SHIFT)
-#define DBG_WCR_LSC_SHIFT 3
-#define DBG_WCR_LSC (0x3 << DBG_WCR_LSC_SHIFT)
-#define DBG_WCR_BAS_SHIFT 5
-#define DBG_WCR_BAS (0xff << DBG_WCR_BAS_SHIFT)
-#define DBG_WCR_BAS_MASK DBG_WCR_BAS
-#define DBG_WCR_HMC_SHIFT 13
-#define DBG_WCR_HMC (0x1 << DBG_WCR_HMC_SHIFT)
-#define DBG_WCR_SSC_SHIFT 14
-#define DBG_WCR_SSC (0x3 << DBG_WCR_SSC_SHIFT)
-#define DBG_WCR_LBN_SHIFT 16
-#define DBG_WCR_LBN (0xf << DBG_WCR_LBN_SHIFT)
-#define DBG_WCR_WT_SHIFT 20
-#define DBG_WCR_WT (0x1 << DBG_WCR_WT_SHIFT)
-#define DBG_WCR_MASK_SHIFT 24
-#define DBG_WCR_MASK (0x1f << DBG_WCR_MASK_SHIFT)
/* Perfomance Monitoring Counters */
#define PMCR_E (1 << 0) /* Enable all counters */