From nobody Sun May 07 17:59:55 2023 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 4QDsdS3VMtz49J2p; Sun, 7 May 2023 17:59:56 +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 4QDsdS1Jf3z48vj; Sun, 7 May 2023 17:59:56 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1683482396; 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=iYXKeCIdobdKPq+T9dSzF/SrCgpEKnJYUtvaXjbdGVU=; b=jpxC+zc1l8MIg508MaPlM6ix+6SVgIJ3N/6SAEcrq0FB9ujAhYh0qBGKDWC0eAw/lJwUq5 ANF+iaaa42alHP58m9cCu/sMRRdGWj9MjAjw3KP/rY00f3UOfdxTiQ9C99v6pVm5ygoGpW Or3mRSZUAaj43wOsBA9hQaTzcPN5oKz6/wt0wQj/mtW55Ohe22aDdvDIpnHNObMyCJv25d QXpkTBkwIqxEQDwt/G9FatzIbCizOUwg5/cjoKSGMjep3yxdcnTlwm54HzPDWjPTeLXHQc 86zUYmJReE1wqS6kyUW/tJeHI6Y/Oh8+lrPo13/SArKYQcJ/jDqVm9PoHE4AwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1683482396; 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=iYXKeCIdobdKPq+T9dSzF/SrCgpEKnJYUtvaXjbdGVU=; b=ccwPhlokC5NzHz4jLC83mTMy9PHKtO9heoyUoX7A8orWjUTT4XjHdVrhAFRkziICBmSIHq cTnQTjSZ8Pq2TjdV/9Jnhb8+5UamDxcOQrgw33NBYBWleqEq7LlJ/no1OFGV4nSn3uBDOz RtgSHRkhM6YlPaHGx89oHQ+0uFqMnp653Y9i8S55QXC7GUKNh/beYDqV+RUuAIOMguGZRK hRK0sFYSyEvAUHQJXU7cR4EcGY26k+Q+MQHDllXQW/busUmT7Cp7Rp7FjXGXVMyARIJS7U 6HX/YcyH1L2VGtISVzf8VZYwOG8Aq/aoq+NefFnFpBRgvwbo60ibGNjIwWJE9g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1683482396; a=rsa-sha256; cv=none; b=UB85BsAC4TBriNIrFBBtdVxkEP5tqw1xr9hld9UxQl/W9UzXUTuNdMBASpgylVlQ4uNORw Kpj1C/V/TRuci/ckA4JHDjkeG0H6i5htjr5G9uVisTrLWdqAi1ABNRPvvB+SvmktM88xq6 HcoYvhGoi1jhm0/+G7fIyosWr8ZVoqDcFk2fGjcmGRl65kWZ6RtAoqegMLaLxaLAagukjs ZbsxLYPC2MhqT60jDn89689PqRZmon7shwq5iEteHDU1d5nONv0sfZ5FD9u6yz63MUbqtt 2VZDY5G+6YNDX+OiCbGprpL+By5IQ1qlDnx6i/dnBCP7SJyIK3ZgX7s1iatnxw== 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 4QDsdS0CW6zSMZ; Sun, 7 May 2023 17:59:56 +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 347Hxtjj007816; Sun, 7 May 2023 17:59:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 347Hxt2Q007815; Sun, 7 May 2023 17:59:55 GMT (envelope-from git) Date: Sun, 7 May 2023 17:59:55 GMT Message-Id: <202305071759.347Hxt2Q007815@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: de552718943b - stable/13 - dtrace: add register bindings for RISC-V 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: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: de552718943b5ead511048d4e7b4b9f33c33d01a Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=de552718943b5ead511048d4e7b4b9f33c33d01a commit de552718943b5ead511048d4e7b4b9f33c33d01a Author: Christos Margiolis AuthorDate: 2023-04-20 16:25:37 +0000 Commit: Mark Johnston CommitDate: 2023-05-07 17:54:08 +0000 dtrace: add register bindings for RISC-V Reviewed by: mhorne, markj MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D39611 (cherry picked from commit 1fef7abdc76bd6f0c93775bd0c1b62b523abd20d) --- cddl/lib/libdtrace/Makefile | 1 + cddl/lib/libdtrace/regs_riscv.d | 74 ++++++++++++++++++++++++++++++++++ sys/cddl/dev/dtrace/riscv/dtrace_isa.c | 32 +++++++++++++-- sys/cddl/dev/dtrace/riscv/regset.h | 35 +++++++++++++++- 4 files changed, 137 insertions(+), 5 deletions(-) diff --git a/cddl/lib/libdtrace/Makefile b/cddl/lib/libdtrace/Makefile index 3fb0ec0bafb0..71b6e8c5d57d 100644 --- a/cddl/lib/libdtrace/Makefile +++ b/cddl/lib/libdtrace/Makefile @@ -131,6 +131,7 @@ DSRCS+= regs_x86.d .if ${MACHINE_CPUARCH} == "riscv" SRCS+= instr_size.c +DSRCS+= regs_riscv.d .endif YFLAGS+=-d diff --git a/cddl/lib/libdtrace/regs_riscv.d b/cddl/lib/libdtrace/regs_riscv.d new file mode 100644 index 000000000000..e8a9667d2efd --- /dev/null +++ b/cddl/lib/libdtrace/regs_riscv.d @@ -0,0 +1,74 @@ +/* + * SPDX-License-Identifier: CDDL 1.0 + * + * Copyright 2023 Christos Margiolis + */ + +inline int R_ZERO = 0; +#pragma D binding "1.13" R_ZERO +inline int R_RA = 1; +#pragma D binding "1.13" R_RA +inline int R_SP = 2; +#pragma D binding "1.13" R_SP +inline int R_GP = 3; +#pragma D binding "1.13" R_GP +inline int R_TP = 4; +#pragma D binding "1.13" R_TP +inline int R_T0 = 5; +#pragma D binding "1.13" R_T0 +inline int R_T1 = 6; +#pragma D binding "1.13" R_T1 +inline int R_T2 = 7; +#pragma D binding "1.13" R_T2 +inline int R_S0 = 8; +#pragma D binding "1.13" R_S0 +inline int R_FP = 8; +#pragma D binding "1.13" R_FP +inline int R_S1 = 9; +#pragma D binding "1.13" R_S1 +inline int R_A0 = 10; +#pragma D binding "1.13" R_A0 +inline int R_A1 = 11; +#pragma D binding "1.13" R_A1 +inline int R_A2 = 12; +#pragma D binding "1.13" R_A2 +inline int R_A3 = 13; +#pragma D binding "1.13" R_A3 +inline int R_A4 = 14; +#pragma D binding "1.13" R_A4 +inline int R_A5 = 15; +#pragma D binding "1.13" R_A5 +inline int R_A6 = 16; +#pragma D binding "1.13" R_A6 +inline int R_A7 = 17; +#pragma D binding "1.13" R_A7 +inline int R_S2 = 18; +#pragma D binding "1.13" R_S2 +inline int R_S3 = 19; +#pragma D binding "1.13" R_S3 +inline int R_S4 = 20; +#pragma D binding "1.13" R_S4 +inline int R_S5 = 21; +#pragma D binding "1.13" R_S5 +inline int R_S6 = 22; +#pragma D binding "1.13" R_S6 +inline int R_S7 = 23; +#pragma D binding "1.13" R_S7 +inline int R_S8 = 24; +#pragma D binding "1.13" R_S8 +inline int R_S9 = 25; +#pragma D binding "1.13" R_S9 +inline int R_S10 = 26; +#pragma D binding "1.13" R_S10 +inline int R_S11 = 27; +#pragma D binding "1.13" R_S11 +inline int R_T3 = 28; +#pragma D binding "1.13" R_T3 +inline int R_T4 = 29; +#pragma D binding "1.13" R_T4 +inline int R_T5 = 30; +#pragma D binding "1.13" R_T5 +inline int R_T6 = 31; +#pragma D binding "1.13" R_T6 +inline int R_PC = 32; +#pragma D binding "1.13" R_PC diff --git a/sys/cddl/dev/dtrace/riscv/dtrace_isa.c b/sys/cddl/dev/dtrace/riscv/dtrace_isa.c index 6e6459a8ce74..61743c42d9b7 100644 --- a/sys/cddl/dev/dtrace/riscv/dtrace_isa.c +++ b/sys/cddl/dev/dtrace/riscv/dtrace_isa.c @@ -311,10 +311,34 @@ dtrace_getstackdepth(int aframes) ulong_t dtrace_getreg(struct trapframe *rp, uint_t reg) { - - printf("IMPLEMENT ME: %s\n", __func__); - - return (0); + switch (reg) { + case REG_ZERO: + return (0); + case REG_RA: + return (rp->tf_ra); + case REG_SP: + return (rp->tf_sp); + case REG_GP: + return (rp->tf_gp); + case REG_TP: + return (rp->tf_tp); + case REG_T0 ... REG_T2: + return (rp->tf_t[reg - REG_T0]); + case REG_S0 ... REG_S1: + return (rp->tf_s[reg - REG_S0]); + case REG_A0 ... REG_A7: + return (rp->tf_a[reg - REG_A0]); + case REG_S2 ... REG_S11: + return (rp->tf_s[reg - REG_S2 + 2]); + case REG_T3 ... REG_T6: + return (rp->tf_t[reg - REG_T3 + 3]); + case REG_PC: + return (rp->tf_sepc); + default: + DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP); + return (0); + } + /* NOTREACHED */ } static int diff --git a/sys/cddl/dev/dtrace/riscv/regset.h b/sys/cddl/dev/dtrace/riscv/regset.h index f99b48f8354f..034781f11238 100644 --- a/sys/cddl/dev/dtrace/riscv/regset.h +++ b/sys/cddl/dev/dtrace/riscv/regset.h @@ -42,7 +42,40 @@ extern "C" { #endif -/* Place here */ +#define REG_ZERO 0 +#define REG_RA 1 +#define REG_SP 2 +#define REG_GP 3 +#define REG_TP 4 +#define REG_T0 5 +#define REG_T1 6 +#define REG_T2 7 +#define REG_S0 8 +#define REG_FP 8 +#define REG_S1 9 +#define REG_A0 10 +#define REG_A1 11 +#define REG_A2 12 +#define REG_A3 13 +#define REG_A4 14 +#define REG_A5 15 +#define REG_A6 16 +#define REG_A7 17 +#define REG_S2 18 +#define REG_S3 19 +#define REG_S4 20 +#define REG_S5 21 +#define REG_S6 22 +#define REG_S7 23 +#define REG_S8 24 +#define REG_S9 25 +#define REG_S10 26 +#define REG_S11 27 +#define REG_T3 28 +#define REG_T4 29 +#define REG_T5 30 +#define REG_T6 31 +#define REG_PC 32 #ifdef __cplusplus }