From 5daa45c2fe093527d22baa34fd69e2f408e202f3 Mon Sep 17 00:00:00 2001 From: Daisuke Nojiri Date: Wed, 4 Apr 2018 09:18:19 -0700 Subject: [PATCH] Features: Add EXEC_IN_RAM This patch adds execution-in-ram, opposite of XIP: execution-in-place (a.k.a. XIP) to the EC features. It can be currently implied by CONFIG_EXTERNAL_STORAGE. BUG=b:77306460 BRANCH=none TEST=Verify ectool prints EXEC_IN_RAM on Fizz. Change-Id: I4a7fb3b267864debe59fd211956371eceac57613 Signed-off-by: Daisuke Nojiri Reviewed-on: https://chromium-review.googlesource.com/995968 Reviewed-by: Vincent Palatin --- common/ec_features.c | 3 +++ include/ec_commands.h | 2 ++ util/ectool.c | 1 + 3 files changed, 6 insertions(+) diff --git a/common/ec_features.c b/common/ec_features.c index cab83df503..ff97df44cf 100644 --- a/common/ec_features.c +++ b/common/ec_features.c @@ -118,6 +118,9 @@ uint32_t get_feature_flags1(void) uint32_t result = EC_FEATURE_MASK_1(EC_FEATURE_UNIFIED_WAKE_MASKS) #ifdef CONFIG_HOST_EVENT64 | EC_FEATURE_MASK_1(EC_FEATURE_HOST_EVENT64) +#endif +#ifdef CONFIG_EXTERNAL_STORAGE + | EC_FEATURE_MASK_1(EC_FEATURE_EXEC_IN_RAM) #endif ; #ifdef CONFIG_EC_FEATURE_BOARD_OVERRIDE diff --git a/include/ec_commands.h b/include/ec_commands.h index 64b8193b93..15685b0ec2 100644 --- a/include/ec_commands.h +++ b/include/ec_commands.h @@ -1248,6 +1248,8 @@ enum ec_feature_code { EC_FEATURE_UNIFIED_WAKE_MASKS = 32, /* EC supports 64-bit host events */ EC_FEATURE_HOST_EVENT64 = 33, + /* EC runs code in RAM (not in place, a.k.a. XIP) */ + EC_FEATURE_EXEC_IN_RAM = 34, }; #define EC_FEATURE_MASK_0(event_code) (1UL << (event_code % 32)) diff --git a/util/ectool.c b/util/ectool.c index 83b263d74b..33c75ee17e 100644 --- a/util/ectool.c +++ b/util/ectool.c @@ -545,6 +545,7 @@ static const char * const ec_feature_names[] = { [EC_FEATURE_DEVICE_EVENT] = "Device events reporting", [EC_FEATURE_UNIFIED_WAKE_MASKS] = "Unified wake masks for LPC/eSPI", [EC_FEATURE_HOST_EVENT64] = "64-bit host events", + [EC_FEATURE_EXEC_IN_RAM] = "Execute code in RAM", }; int cmd_inventory(int argc, char *argv[])