From a6ab2972787fd4662a69ec7c76834d320bff704a Mon Sep 17 00:00:00 2001 From: Joachim Fenkes Date: Tue, 19 Mar 2019 18:21:51 +0100 Subject: FAPI2: Add method to Target to query core select vector from CORE targets Add fapi2::Target::getCoreSelect() which will return the core select bits for a TARGET_TYPE_CORE target or a TARGET_TYPE_CORE|TARGET_TYPE_MULTICAST target. Other target types don't have the notion of a core select value, so attempting to call getCoreSelect() will result in a compile-time error. Change-Id: I427028876b18126493192db53686707c662bafd7 Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/74675 Tested-by: Jenkins Server Reviewed-by: Matt K. Light Reviewed-by: Gregory S. Still Reviewed-by: Jennifer A. Stofer Reviewed-on: http://rchgit01.rchland.ibm.com/gerrit1/75432 Tested-by: Jenkins OP Build CI Tested-by: FSP CI Jenkins Tested-by: Jenkins OP HW Reviewed-by: Christian R. Geddes --- src/import/hwpf/fapi2/include/fapi2_target.H | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/import/hwpf') diff --git a/src/import/hwpf/fapi2/include/fapi2_target.H b/src/import/hwpf/fapi2/include/fapi2_target.H index 444fe3396..9c7c97cd3 100644 --- a/src/import/hwpf/fapi2/include/fapi2_target.H +++ b/src/import/hwpf/fapi2/include/fapi2_target.H @@ -378,6 +378,19 @@ class Target inline uint8_t getChipletNumber(void) const; + /// + /// @brief Returns the core select vector associated with a Core target + /// @return The core select value for the target. For unicast core targets + /// the return value will have exactly one bit set. For multicast core + /// targets it will have between one and four bits set. + /// + inline MulticastCoreSelect + getCoreSelect(void) const + { + static_assert(K & TARGET_TYPE_CORE, "getCoreSelect is only applicable to TARGET_TYPE_CORE targets"); + return _getCoreSelect(); + } + /// /// @brief Copy from a Target to a Target /// @tparam O the target type of the other @@ -410,7 +423,10 @@ class Target V iv_handle; /// @brief if iv_handle is a multicast target, update its multicast type to M - inline void mcUpdateHandle(); + inline void mcUpdateHandle(void); + + /// @brief Internal implementation of getCoreSelect, filtered for CORE targets + inline MulticastCoreSelect _getCoreSelect(void) const; }; // EX threads map to CORE threads: -- cgit v1.2.1