diff options
author | Dean Sanner <dsanner@us.ibm.com> | 2013-01-03 10:16:18 -0600 |
---|---|---|
committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2013-08-09 13:43:19 -0500 |
commit | 97bd69daf028bec2f7d7f4fbd8feb49486fb4577 (patch) | |
tree | 3168aba491fb1cbdd181c40c3e3947410a47e28e /src/include/usr/intr/interrupt.H | |
parent | 7b0dcb2cc3a80cb09aa2af5d4cd2f2673c7146a6 (diff) | |
download | talos-hostboot-97bd69daf028bec2f7d7f4fbd8feb49486fb4577.tar.gz talos-hostboot-97bd69daf028bec2f7d7f4fbd8feb49486fb4577.zip |
Basic devtree support
Simple devtree support for Sapphire in SPless mode
Change-Id: I4a70bfc5cd3eb3dbd1b443869c046c789f98cc95
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/3739
Tested-by: Jenkins Server
Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/include/usr/intr/interrupt.H')
-rw-r--r-- | src/include/usr/intr/interrupt.H | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/include/usr/intr/interrupt.H b/src/include/usr/intr/interrupt.H index cf129712a..f41f8ccf6 100644 --- a/src/include/usr/intr/interrupt.H +++ b/src/include/usr/intr/interrupt.H @@ -33,6 +33,37 @@ namespace TARGETING namespace INTR { + /** + * cpu PIR register + */ + struct PIR_t + { + union + { + uint32_t word; + struct + { + //P8: + uint32_t reserved:19; //!< zeros + uint32_t nodeId:3; //!< node (0-3) + uint32_t chipId:3; //!< chip pos on node (0-5) + uint32_t coreId:4; //!< Core number (1-6,9-14)? + uint32_t threadId:3; //!< Thread number (0-7) + } PACKED; + }; + PIR_t(uint32_t i_word = 0) : word(i_word) {} + + PIR_t operator= (uint32_t i_word) + { + word = i_word; + return word; + } + + bool operator< (const PIR_t& r) const + { + return word < r.word; + } + }; /** * External Interrupt Types (XISR) @@ -165,6 +196,15 @@ namespace INTR */ errlHndl_t enablePsiIntr(TARGETING::Target * i_target); + /** + * Return the interrupt presenter for requested target/thread + * @param[in] i_ex The target EX + * @param[in] i_thread Which thread on EX (0-7) + * @return 64 bit address for the interrupt present addr + */ + uint64_t getIntpAddr(const TARGETING::Target * i_ex, + uint8_t i_thread); + }; #endif |