summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorNick Bofferding <bofferdn@us.ibm.com>2013-10-30 16:41:53 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-11-13 14:40:10 -0600
commit1aa8f7551005dd48078b91be173e8bcc7e339061 (patch)
treea2e4c5deb1a7e51f76eab9d02170e8e7340ec951 /src/include
parent8ad97ccb3e986b673f040af80bc269b57a6f9341 (diff)
downloadtalos-hostboot-1aa8f7551005dd48078b91be173e8bcc7e339061.tar.gz
talos-hostboot-1aa8f7551005dd48078b91be173e8bcc7e339061.zip
Support cross-node association traversal
- Added specialized abstract pointer format for address translation - Added special decoding for addresses referencing other nodes Change-Id: I31b681a649effb103b8abfa4aefa13f26e76f348 RTC: 88619 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/7195 Tested-by: Jenkins Server Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/usr/targeting/common/pointer.H61
1 files changed, 37 insertions, 24 deletions
diff --git a/src/include/usr/targeting/common/pointer.H b/src/include/usr/targeting/common/pointer.H
index e42c59218..11c11ea28 100644
--- a/src/include/usr/targeting/common/pointer.H
+++ b/src/include/usr/targeting/common/pointer.H
@@ -1,26 +1,25 @@
-/* IBM_PROLOG_BEGIN_TAG
- * This is an automatically generated prolog.
- *
- * $Source: src/include/usr/targeting/common/pointer.H $
- *
- * IBM CONFIDENTIAL
- *
- * COPYRIGHT International Business Machines Corp. 2012
- *
- * p1
- *
- * Object Code Only (OCO) source materials
- * Licensed Internal Code Source Materials
- * IBM HostBoot Licensed Internal Code
- *
- * The source code for this program is not published or other-
- * wise divested of its trade secrets, irrespective of what has
- * been deposited with the U.S. Copyright Office.
- *
- * Origin: 30
- *
- * IBM_PROLOG_END_TAG
- */
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/targeting/common/pointer.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2012,2013 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
#ifndef __TARGETING_COMMON_POINTER_H
#define __TARGETING_COMMON_POINTER_H
@@ -41,11 +40,25 @@ namespace TARGETING
* and FSP
*/
template<typename T>
-union AbstractPointer
+union AbstractPointer
{
uint64_t raw; ///< Raw value of the container
/**
+ * @brief Specialized address format to support encoding address of
+ * a target/etc. outside a given node. This is used by platforms with
+ * address translation to traverse associations, and presumes that
+ * byte 0 of any virtual address is never set.
+ */
+ struct {
+ uint64_t nodeId : 8; ///< Node ID indexed to 1. Value of 0
+ ///< indicates node ID should not be used
+ ///< for address translation
+ uint64_t ptr : 56; ///< Address to translate
+
+ } TranslationEncoded;
+
+ /**
* @brief Returns the AbstractPointer as a platform specific pointer
*
* @return Platform specific pointer whose type matches the underlying
OpenPOWER on IntegriCloud