From b75bdb7b0428add602c2e4beb7e059da5d4a6c95 Mon Sep 17 00:00:00 2001
From: Øyvind Harboe <oyvind.harboe@zylin.com>
Date: Wed, 30 Mar 2011 13:32:47 +0200
Subject: target: add -dbgbase option to target configuration
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Really a Cortex-A specific option, but there is no
system in place to support target specific options
currently and there has been no need for such a system
until now.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
---
 src/target/target.c | 18 ++++++++++++++++++
 src/target/target.h |  5 +++++
 2 files changed, 23 insertions(+)

(limited to 'src')

diff --git a/src/target/target.c b/src/target/target.c
index 00d4309c..df38c837 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -3703,6 +3703,7 @@ enum target_cfg_param {
 	TCFG_VARIANT,
 	TCFG_COREID,
 	TCFG_CHAIN_POSITION,
+	TCFG_DBGBASE,
 };
 
 static Jim_Nvp nvp_config_opts[] = {
@@ -3716,6 +3717,7 @@ static Jim_Nvp nvp_config_opts[] = {
 	{ .name = "-variant",          .value = TCFG_VARIANT },
 	{ .name = "-coreid",           .value = TCFG_COREID },
 	{ .name = "-chain-position",   .value = TCFG_CHAIN_POSITION },
+	{ .name = "-dbgbase",          .value = TCFG_DBGBASE },
 	{ .name = NULL, .value = -1 }
 };
 
@@ -4006,6 +4008,22 @@ static int target_configure(Jim_GetOptInfo *goi, struct target *target)
 			Jim_SetResultString(goi->interp, target->tap->dotted_name, -1);
 			/* loop for more e*/
 			break;
+		case TCFG_DBGBASE:
+			if (goi->isconfigure) {
+				e = Jim_GetOpt_Wide(goi, &w);
+				if (e != JIM_OK) {
+					return e;
+				}
+				target->dbgbase = (uint32_t)w;
+				target->dbgbase_set = true;
+			} else {
+				if (goi->argc != 0) {
+					goto no_params;
+				}
+			}
+			Jim_SetResult(goi->interp, Jim_NewIntObj(goi->interp, target->dbgbase));
+			/* loop for more */
+			break;
 		}
 	} /* while (goi->argc) */
 
diff --git a/src/target/target.h b/src/target/target.h
index d6e7431e..32fa87a1 100644
--- a/src/target/target.h
+++ b/src/target/target.h
@@ -155,6 +155,11 @@ struct target
 										 * lots of halted/resumed info when stepping in debugger. */
 	bool halt_issued;					/* did we transition to halted state? */
 	long long halt_issued_time;			/* Note time when halt was issued */
+
+	bool dbgbase_set;					/* By default the debug base is not set */
+	uint32_t dbgbase;					/* Really a Cortex-A specific option, but there is no
+	 	 	 	 	 	 	 	 	 	   system in place to support target specific options
+	 	 	 	 	 	 	 	 	 	   currently. */
 };
 
 /** Returns the instance-specific name of the specified target. */
-- 
cgit v1.2.3