From nobody Tue May 23 14:19:51 2023 X-Original-To: dev-commits-src-all@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 4QQc080gXPz4CXM8; Tue, 23 May 2023 14:19:52 +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 4QQc0803kFz43GT; Tue, 23 May 2023 14:19:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1684851592; 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=14+c6lL3dDomuS6qil4n/FRHLJnoqeAbsqgWOst25SA=; b=wpQrZaOYICvijbrQbbdd/MIgMs9VHc6UjL1TKb4gluXqyDYViuE4DV9+XgKT4K0GJPHpyy /AVfkp327aTTE/nfoqDsEYykIuEeqFYVbwIgNLTdnskEdbUZDh/KqB//utj0Ijo3QWOYSn CP5Tp3VpMLsZGB8UVp1tOvIA5NKeqqWuRRtpxoMHkYeGZhYjuESLXPTdYmhlMRdwPZ9kKE B59+gY/TIU7rJenFV7f1YuAu5Hy2ErfME2c2oeQSH+3yfe3aZinnTsfYFEyZ1XfH/JzUWB zLZS+Qgs4f+qMACYSGHxmKwiicifejTENLAm5pVRETUfSufHITt8wAaTxELExg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1684851592; 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=14+c6lL3dDomuS6qil4n/FRHLJnoqeAbsqgWOst25SA=; b=jxLfXWFYW0mFKU7spKYUHqZIU76QLh8RwpLdLEXI1SokzteEEBmbi9Vp+AjLacUt8w6Ahv SQlGv7gc3SLBmMud8DxCz7zNUYyVaThP5eXonhTk26IGd1Nx0ebPHO+quhCzq4iOM5Z0Bq NTFRL1cYAfXzmGYCPygnDKR4Zp2x46qZ9UwIi59OAREdqlEQ2qQOppmR3aspSGwVXz6gfv GSFuItNMZz+T1gwR2YfMIje+WEz3cx7qBVaJKCakHY1p+RBVrjOM+vSXlhawSOLhXaXoKe o6dK/1AxEzZvjm2DDlVgRxAcrNpdqa6kHHZZkS4YNUM1mbTmiRy2ZEljmcNHnw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1684851592; a=rsa-sha256; cv=none; b=FwMA7c1s16CSF1Ujwm8Lmr91qbcaXDPs9nya1C5hHkErmKRrI6b2cm/jv6HdrC9TaXIjLd JsrZyegVZELgriZL4heWd9BYTpIg9xo6EGDLxDtSJnjAW2KGv9MijQNg1ixKC6h4omMpJ1 JuUT2NEuhaTes5c+PYgQlIGWed6Y/5qf18E2ohYrwfAiWrkOv0juy7Rw0B7q7e4GwZjhw5 Si6AWFUAhrmHpplp3RAlWu7BxMuYboFmTpNSsocbG/AMO5MR5XYTWwqYoKq24QRHxYzgWI dYto6wPXgBtrVDzAB+8795hjTsrWnfFCo1lDloMSYY4LXPnOmZFj8RoOXo6SKQ== 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 4QQc075wv9z13PL; Tue, 23 May 2023 14:19:51 +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 34NEJpq2099941; Tue, 23 May 2023 14:19:51 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 34NEJpBJ099940; Tue, 23 May 2023 14:19:51 GMT (envelope-from git) Date: Tue, 23 May 2023 14:19:51 GMT Message-Id: <202305231419.34NEJpBJ099940@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Christos Margiolis Subject: git: 21a16d55cc15 - main - dtrace: add register bindings for arm64 List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: christos X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 21a16d55cc15b12809b982c2026a26bcf97fe79b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by christos: URL: https://cgit.FreeBSD.org/src/commit/?id=21a16d55cc15b12809b982c2026a26bcf97fe79b commit 21a16d55cc15b12809b982c2026a26bcf97fe79b Author: Christos Margiolis AuthorDate: 2023-05-23 14:19:25 +0000 Commit: Christos Margiolis CommitDate: 2023-05-23 14:19:25 +0000 dtrace: add register bindings for arm64 Reviewed by: mhorne, markj Approved by: markj (mentor) Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D39956 --- cddl/lib/libdtrace/Makefile | 1 + cddl/lib/libdtrace/regs_aarch64.d | 74 ++++++++++++++++++++++++++++++++ sys/cddl/dev/dtrace/aarch64/dtrace_isa.c | 18 ++++++-- sys/cddl/dev/dtrace/aarch64/regset.h | 35 ++++++++++++++- 4 files changed, 123 insertions(+), 5 deletions(-) diff --git a/cddl/lib/libdtrace/Makefile b/cddl/lib/libdtrace/Makefile index 5232293e0be5..23cc8d2db574 100644 --- a/cddl/lib/libdtrace/Makefile +++ b/cddl/lib/libdtrace/Makefile @@ -133,6 +133,7 @@ DSRCS+= regs_riscv.d .if ${MACHINE_CPUARCH} == "aarch64" SRCS+= instr_size.c +DSRCS+= regs_aarch64.d .endif YFLAGS+=-d diff --git a/cddl/lib/libdtrace/regs_aarch64.d b/cddl/lib/libdtrace/regs_aarch64.d new file mode 100644 index 000000000000..7d20b5c546c5 --- /dev/null +++ b/cddl/lib/libdtrace/regs_aarch64.d @@ -0,0 +1,74 @@ +/* + * SPDX-License-Identifier: CDDL 1.0 + * + * Copyright 2023 Christos Margiolis + */ + +inline int R_X0 = 0; +#pragma D binding "1.13" R_X0 +inline int R_X1 = 1; +#pragma D binding "1.13" R_X1 +inline int R_X2 = 2; +#pragma D binding "1.13" R_X2 +inline int R_X3 = 3; +#pragma D binding "1.13" R_X3 +inline int R_X4 = 4; +#pragma D binding "1.13" R_X4 +inline int R_X5 = 5; +#pragma D binding "1.13" R_X5 +inline int R_X6 = 6; +#pragma D binding "1.13" R_X6 +inline int R_X7 = 7; +#pragma D binding "1.13" R_X7 +inline int R_X8 = 8; +#pragma D binding "1.13" R_X8 +inline int R_X9 = 9; +#pragma D binding "1.13" R_X9 +inline int R_X10 = 10; +#pragma D binding "1.13" R_X10 +inline int R_X11 = 11; +#pragma D binding "1.13" R_X11 +inline int R_X12 = 12; +#pragma D binding "1.13" R_X12 +inline int R_X13 = 13; +#pragma D binding "1.13" R_X13 +inline int R_X14 = 14; +#pragma D binding "1.13" R_X14 +inline int R_X15 = 15; +#pragma D binding "1.13" R_X15 +inline int R_X16 = 16; +#pragma D binding "1.13" R_X16 +inline int R_X17 = 17; +#pragma D binding "1.13" R_X17 +inline int R_X18 = 18; +#pragma D binding "1.13" R_X18 +inline int R_X19 = 19; +#pragma D binding "1.13" R_X19 +inline int R_X20 = 20; +#pragma D binding "1.13" R_X20 +inline int R_X21 = 21; +#pragma D binding "1.13" R_X21 +inline int R_X22 = 22; +#pragma D binding "1.13" R_X22 +inline int R_X23 = 23; +#pragma D binding "1.13" R_X23 +inline int R_X24 = 24; +#pragma D binding "1.13" R_X24 +inline int R_X25 = 25; +#pragma D binding "1.13" R_X25 +inline int R_X26 = 26; +#pragma D binding "1.13" R_X26 +inline int R_X27 = 27; +#pragma D binding "1.13" R_X27 +inline int R_X28 = 28; +#pragma D binding "1.13" R_X28 +inline int R_X29 = 29; +#pragma D binding "1.13" R_X29 +inline int R_FP= 29; +#pragma D binding "1.13" R_FP +inline int R_LR = 30; +#pragma D binding "1.13" R_LR +inline int R_SP = 31; +#pragma D binding "1.13" R_SP +inline int R_PC = 32; +#pragma D binding "1.13" R_PC diff --git a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c index 98a0e6e498ed..09dc0b729928 100644 --- a/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c +++ b/sys/cddl/dev/dtrace/aarch64/dtrace_isa.c @@ -280,10 +280,20 @@ 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_X0 ... REG_X29: + return (rp->tf_x[reg]); + case REG_LR: + return (rp->tf_lr); + case REG_SP: + return (rp->tf_sp); + case REG_PC: + return (rp->tf_elr); + default: + DTRACE_CPUFLAG_SET(CPU_DTRACE_ILLOP); + return (0); + } + /* NOTREACHED */ } static int diff --git a/sys/cddl/dev/dtrace/aarch64/regset.h b/sys/cddl/dev/dtrace/aarch64/regset.h index f99b48f8354f..492405d4a258 100644 --- a/sys/cddl/dev/dtrace/aarch64/regset.h +++ b/sys/cddl/dev/dtrace/aarch64/regset.h @@ -42,7 +42,40 @@ extern "C" { #endif -/* Place here */ +#define REG_X0 0 +#define REG_X1 1 +#define REG_X2 2 +#define REG_X3 3 +#define REG_X4 4 +#define REG_X5 5 +#define REG_X6 6 +#define REG_X7 7 +#define REG_X8 8 +#define REG_X9 9 +#define REG_X10 10 +#define REG_X11 11 +#define REG_X12 12 +#define REG_X13 13 +#define REG_X14 14 +#define REG_X15 15 +#define REG_X16 16 +#define REG_X17 17 +#define REG_X18 18 +#define REG_X19 19 +#define REG_X20 20 +#define REG_X21 21 +#define REG_X22 22 +#define REG_X23 23 +#define REG_X24 24 +#define REG_X25 25 +#define REG_X26 26 +#define REG_X27 27 +#define REG_X28 28 +#define REG_X29 29 +#define REG_FP REG_X29 +#define REG_LR 30 +#define REG_SP 31 +#define REG_PC 32 #ifdef __cplusplus }