diff options
Diffstat (limited to 'src/usr/intr/intrrp.C')
-rw-r--r-- | src/usr/intr/intrrp.C | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/usr/intr/intrrp.C b/src/usr/intr/intrrp.C index b374c9f7d..39ea2d470 100644 --- a/src/usr/intr/intrrp.C +++ b/src/usr/intr/intrrp.C @@ -35,6 +35,7 @@ #include <sys/mmio.h> #include <sys/misc.h> #include <kernel/console.H> +#include <kernel/ipc.H> #include <sys/task.h> #include <vmmconst.h> #include <targeting/common/targetservice.H> @@ -181,6 +182,17 @@ errlHndl_t IntrRp::_init() TRACFCOMP(g_trac_intr,"INTR: vAddr = %lx",iv_baseAddr); + // Set up the IPC message Data area + TARGETING::Target * sys = NULL; + TARGETING::targetService().getTopLevelTarget( sys ); + assert(sys != NULL); + uint64_t hrmor_base = + sys->getAttr<TARGETING::ATTR_HB_HRMOR_NODAL_BASE>(); + + KernelIpc::ipc_data_area.pir = iv_masterCpu.word; + KernelIpc::ipc_data_area.hrmor_base = hrmor_base; + KernelIpc::ipc_data_area.msg_queue_id = 0; + // Set the BAR scom reg err = setBAR(procTarget,iv_masterCpu); |