diff options
author | Nick Bofferding <bofferdn@us.ibm.com> | 2013-10-30 16:41:53 -0500 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-11-13 14:40:10 -0600 |
commit | 1aa8f7551005dd48078b91be173e8bcc7e339061 (patch) | |
tree | a2e4c5deb1a7e51f76eab9d02170e8e7340ec951 /src/include/usr/targeting | |
parent | 8ad97ccb3e986b673f040af80bc269b57a6f9341 (diff) | |
download | talos-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/usr/targeting')
-rw-r--r-- | src/include/usr/targeting/common/pointer.H | 61 |
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 |