From patchwork Thu May 31 05:29:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rashmica Gupta X-Patchwork-Id: 923194 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40xGHt2Wz6z9s0x for ; Thu, 31 May 2018 15:30:02 +1000 (AEST) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KlP6cS7b"; dkim-atps=neutral Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 40xGHt0R2nzDrbS for ; Thu, 31 May 2018 15:30:02 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: lists.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KlP6cS7b"; dkim-atps=neutral X-Original-To: pdbg@lists.ozlabs.org Delivered-To: pdbg@lists.ozlabs.org Authentication-Results: lists.ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gmail.com (client-ip=2607:f8b0:400e:c05::236; helo=mail-pg0-x236.google.com; envelope-from=rashmica.g@gmail.com; receiver=) Authentication-Results: lists.ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="KlP6cS7b"; dkim-atps=neutral Received: from mail-pg0-x236.google.com (mail-pg0-x236.google.com [IPv6:2607:f8b0:400e:c05::236]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 40xGHm3731zDrbm for ; Thu, 31 May 2018 15:29:56 +1000 (AEST) Received: by mail-pg0-x236.google.com with SMTP id 15-v6so8856130pge.2 for ; Wed, 30 May 2018 22:29:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=gq5ZZheYlZU2xmiqvmN3h3r6mbtsGXmXk5OqP1yK008=; b=KlP6cS7bK89lfLQz9Wrsj2fmRH94RUpRQNFUMJbAx3gsd/RgXygwW7x72Uzr0oAB4q ajVHnzlL/ATkrbZ+EdnQoiIJAbvpLF56kDRGT07mGxDQF4nyZaH1NORk/EEfayD0rUIj iq554+L7ueurKsYlZE521eCm5+Bxx4iyvv+36nFUE5wN6PQBtchIoWsZTyyTO76eQGCC 1is0/ddodmTd4LB89b3RiDz3Jh6l0pmur96qnCHNdhbQQwlzssoFcuCX7CV2cNmNkne0 mDgRHQIWWUcZ4rF8P0itXAA3fhfH6Hq1YIgfbhP8QE819zHEOeogWDxPfQXnD16CvQac +YEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=gq5ZZheYlZU2xmiqvmN3h3r6mbtsGXmXk5OqP1yK008=; b=ivwupShnc3/MOjE53HvJ/gf/sVmyqDLY8jmNQMMNYm051dp+H5YpAKz4qzMMx5CHCs QDN/z13ZWkoBgqijPtKLfjJMn38ZnkxGv5UCXLnMk0ONi0kSBwWuZ6Cs9PNElshXNfJ2 7+yDva0D9FAWSH36No78HiazZFkYOOwo+evkfbCLvvMH9iL8c5dYjQBxpZ3iCH3hiZ/I 0ZFLqnuRq9+isTh2UXbxjtl9xaSUZ3mFhhMgB2wBOW2UnCLluTG5ixzVHCsCYXqEhPOx icsY/NlV82NWDwwCkaOu6Tqg1B3vWKs07nyztaK8TNy1zCYPTaUdShGdTA7BNyMKP1WQ TU+g== X-Gm-Message-State: ALKqPwctzO0kVTwe1izKVY9przV6wqOl1neZ3XwmOoJcn2WWmcUs+Z4F qREKmAFctNQoXY7h1KQ3EkkGfw== X-Google-Smtp-Source: ADUXVKJ2tBsaJYIKKqiVyQe2CK5IWqR+/tPuODriCFBxhaJb7FUi8nJGfZBHJQU5F1bP+KsEtadKLg== X-Received: by 2002:a65:53c9:: with SMTP id z9-v6mr4398862pgr.356.1527744594076; Wed, 30 May 2018 22:29:54 -0700 (PDT) Received: from rashmica.ozlabs.ibm.com ([122.99.82.10]) by smtp.gmail.com with ESMTPSA id h10-v6sm4500515pgc.28.2018.05.30.22.29.52 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 30 May 2018 22:29:53 -0700 (PDT) From: Rashmica Gupta To: pdbg@lists.ozlabs.org Date: Thu, 31 May 2018 15:29:13 +1000 Message-Id: <20180531052915.31171-8-rashmica.g@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180531052915.31171-1-rashmica.g@gmail.com> References: <20180531052915.31171-1-rashmica.g@gmail.com> Subject: [Pdbg] [PATCH 08/10] pdbg: Add getcr and putcr options X-BeenThere: pdbg@lists.ozlabs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: "mailing list for https://github.com/open-power/pdbg development" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: pdbg-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Pdbg" Signed-off-by: Rashmica Gupta Reviewed-by: Alistair Popple --- src/main.c | 2 ++ src/reg.c | 34 ++++++++++++++++++++++++++++++++++ src/reg.h | 1 + 3 files changed, 37 insertions(+) diff --git a/src/main.c b/src/main.c index 90fb729..e714377 100644 --- a/src/main.c +++ b/src/main.c @@ -96,6 +96,8 @@ static struct action expert_actions[] = { { "putspr", " ", "Write Special Purpose Register (SPR)", &handle_spr }, { "getmsr", "", "Get Machine State Register (MSR)", &handle_msr }, { "putmsr", "", "Write Machine State Register (MSR)", &handle_msr }, + { "getcr", "", "Get Condition Register (CR)", &handle_cr }, + { "putcr", "", "Write Condition Register (CR)", &handle_cr }, { "getxer", "", "Get Fixed Point Exception Register (XER)", &handle_xer }, { "putxer", "", "Write Fixed Point Exception Register (XER)", &handle_xer }, { "getring", " ", "Read a ring. Length must be correct", &handle_getring }, diff --git a/src/reg.c b/src/reg.c index e252ab8..0a87006 100644 --- a/src/reg.c +++ b/src/reg.c @@ -24,6 +24,7 @@ #include "main.h" +#define REG_CR -5 #define REG_XER -4 #define REG_MEM -3 #define REG_MSR -2 @@ -45,6 +46,8 @@ static void print_proc_reg(struct pdbg_target *target, uint64_t reg, uint64_t va printf("nia: "); else if (reg == REG_XER) printf("xer: "); + else if (reg == REG_CR) + printf("cr: "); else if (reg > REG_R31) printf("spr%03" PRIu64 ": ", reg - REG_R31); else if (reg >= 0 && reg <= 31) @@ -68,6 +71,8 @@ static int putprocreg(struct pdbg_target *target, uint32_t index, uint64_t *reg, rc = ram_putnia(target, *value); else if (*reg == REG_XER) rc = ram_putxer(target, *value); + else if (*reg == REG_CR) + rc = ram_putcr(target, *value); else if (*reg > REG_R31) rc = ram_putspr(target, *reg - REG_R31, *value); else if (*reg >= 0 && *reg <= 31) @@ -89,6 +94,8 @@ static int getprocreg(struct pdbg_target *target, uint32_t index, uint64_t *reg, rc = ram_getnia(target, &value); else if (*reg == REG_XER) rc = ram_getxer(target, &value); + else if (*reg == REG_CR) + rc = ram_getcr(target, &value); else if (*reg > REG_R31) rc = ram_getspr(target, *reg - REG_R31, &value); else if (*reg >= 0 && *reg <= 31) @@ -268,3 +275,30 @@ int handle_xer(int optind, int argc, char *argv[]) PR_WARNING("We can only get part of the XER register.\n"); return for_each_target("thread", getprocreg, &xer, NULL); } + +int handle_cr(int optind, int argc, char *argv[]) +{ + uint64_t cr = REG_CR; + char *endptr; + + if (strcmp(argv[optind], "putcr") == 0) { + uint64_t data; + + if (optind + 1 >= argc) { + printf("%s: command '%s' requires data\n", argv[0], argv[optind]); + return -1; + } + + errno = 0; + data = strtoull(argv[optind + 1], &endptr, 0); + if (errno || *endptr != '\0') { + printf("%s: command '%s' couldn't parse data '%s'\n", + argv[0], argv[optind], argv[optind + 1]); + return -1; + } + + return for_each_target("thread", putprocreg, &cr, &data); + } + + return for_each_target("thread", getprocreg, &cr, NULL); +} diff --git a/src/reg.h b/src/reg.h index ca548a6..96d3f73 100644 --- a/src/reg.h +++ b/src/reg.h @@ -19,3 +19,4 @@ int handle_nia(int optind, int argc, char *argv[]); int handle_spr(int optind, int argc, char *argv[]); int handle_msr(int optind, int argc, char *argv[]); int handle_xer(int optind, int argc, char *argv[]); +int handle_cr(int optind, int argc, char *argv[]);