From nobody Tue Feb 22 16:40:24 2022 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id C048019E0AD2; Tue, 22 Feb 2022 16:40:25 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4K34fJ5lYcz3KC1; Tue, 22 Feb 2022 16:40:24 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645548024; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jN5Bu4Cdmo+tqaYXqxiUHxRyvnIJDxvPPqyQcH9sZr4=; b=spUWWtCHJJ4lRf4VmiGHQhaYeZtZcCopQ3oor45r78yviAaNKj927U2yKSGpmzrLXzbkRA VjYCalLVk6lerRgIJZjxFHuCPh68I56A04JERwv0mCiPx6M2hjcueT8w/ryC6kEDSX5nx5 p9geNuff/ZrYU20ShiX1DeQsrhKDOefNeABbx6MnmT6OK7O6lKgUGMgHH/ypJfKeM6hAJr 0gV5wEe4erYG+vRp5Xtn6A7A7PB+gat1mB+jlXeYqLkYN/ZhxRD+svxxeN4Y+c5jNdN0T4 3CZiUEyB6nqn2oH1vela0g6JZt8xR2WL9DQBIzeH+A1jjYJhSbevkHO7KSqZAw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3F6BB26FF4; Tue, 22 Feb 2022 16:40:24 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 21MGeOgj063871; Tue, 22 Feb 2022 16:40:24 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21MGeOi8063870; Tue, 22 Feb 2022 16:40:24 GMT (envelope-from git) Date: Tue, 22 Feb 2022 16:40:24 GMT Message-Id: <202202221640.21MGeOi8063870@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Andrew Turner Subject: git: de87d94008c8 - stable/13 - Sort the names of the arm64 debug registers List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: de87d94008c8035a9d05d3f6e813170ed6371505 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1645548024; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jN5Bu4Cdmo+tqaYXqxiUHxRyvnIJDxvPPqyQcH9sZr4=; b=tlzV4rOmXVrFUlaH9x1tvRJU+h0qzU3AJxPZHnApUuA+013bDbV8xyzAXfgTdWMciQPl5/ 80AoP12xzUuBb3WJcn2iTNY4oAaMcxq42mdHJmhw779TQqehJ8+EC+7JpKJA/8IudC/gVV l5czNNSNgEJt8LVis8i8FvvfHjQZKrvVPSho3l0TNJH1hcoWt+hMSm/LiaAHq0Z0b44Vra cgtu+nwRNMWG4/OCv91GTl0IWh4L14TOC++4/a+qL6bWLxHV9Y0YsWweEAcb8f1CkC4E47 pulCiWZ29s8H6MrljNCIz6TTTIBx/Q1iyhTflZbFbc3L3r1+UjB8Bbk0j3zoeQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1645548024; a=rsa-sha256; cv=none; b=mWDRZRnhb+875pEdLLl8G1m79vMrE5ai2XlScQfp7YxEZ/wmWM/Bln8vtNMKSXfNRlZSjo ol4Xs7I4pAE0kLgYOU0NGCTejez28yfHpRX7L8pgSW6bczOSD+kebf+c9BZBCUAoslygbm UaBilxaXHzF3aoTXN5Ktr+m199VTU7nZHNmmIWkpR0qa8EwIr4FoqhcUVsKZnEOdcAUGXF iPVQW9XoO9ewrBjYL/AaG/1Wrqr4SeszOF53c8W8gMz9lG2+JXRbWT09LnwHAPVTm+4bS4 2VA6kloZtUg8d3WF+exRm192o3/yuvHSoB7F819p+7pchglLarhFSYx7CNcI3g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=de87d94008c8035a9d05d3f6e813170ed6371505 commit de87d94008c8035a9d05d3f6e813170ed6371505 Author: Andrew Turner AuthorDate: 2022-01-26 15:43:14 +0000 Commit: Andrew Turner CommitDate: 2022-02-22 16:23:07 +0000 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 (cherry picked from commit 664640ba6ccd0c14b607e9babd101dc85ac9c28a) --- sys/arm64/arm64/debug_monitor.c | 24 +++++------ sys/arm64/arm64/exec_machdep.c | 20 ++++----- sys/arm64/arm64/swtch.S | 4 +- sys/arm64/arm64/trap.c | 2 +- sys/arm64/include/armreg.h | 92 ++++++++++++++++++++--------------------- 5 files changed, 70 insertions(+), 72 deletions(-) diff --git a/sys/arm64/arm64/debug_monitor.c b/sys/arm64/arm64/debug_monitor.c index 83d8af00e3e3..4abf89a4fb37 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(); @@ -561,8 +561,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(); } } @@ -595,8 +594,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 c4cf89071de1..a00d616a6663 100644 --- a/sys/arm64/arm64/exec_machdep.c +++ b/sys/arm64/arm64/exec_machdep.c @@ -243,10 +243,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++; @@ -271,24 +271,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 5d0cf1c59465..1f64dbfa3182 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 2eee1392ca49..6524679a64ba 100644 --- a/sys/arm64/arm64/trap.c +++ b/sys/arm64/arm64/trap.c @@ -607,7 +607,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 8fb93da218c7..773f0b8d9402 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_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_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 @@ -1056,6 +1094,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 @@ -1378,52 +1424,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 */