summaryrefslogtreecommitdiff
path: root/usr/src/lib/efcode
diff options
context:
space:
mode:
authormv143129 <none@none>2006-05-15 17:14:12 -0700
committermv143129 <none@none>2006-05-15 17:14:12 -0700
commit531232457f24de82ba95346b3de302b990fe50f4 (patch)
treea77b313bd71adac97d429701514829d82b89f5c5 /usr/src/lib/efcode
parent9e5275af6cf0ea025cdb5c3f5a77bd7fce318e28 (diff)
downloadillumos-joyent-531232457f24de82ba95346b3de302b990fe50f4.tar.gz
6403912 px: WARNING: px0: px_ib_intr_dist_en: timeout
Diffstat (limited to 'usr/src/lib/efcode')
-rw-r--r--usr/src/lib/efcode/jupiter/jupiter.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/usr/src/lib/efcode/jupiter/jupiter.c b/usr/src/lib/efcode/jupiter/jupiter.c
index 2fc159bc20..821a24656a 100644
--- a/usr/src/lib/efcode/jupiter/jupiter.c
+++ b/usr/src/lib/efcode/jupiter/jupiter.c
@@ -370,14 +370,28 @@ do_get_intrp_name(fcode_env_t *env)
static void
do_master_interrupt(fcode_env_t *env)
{
- int portid;
- token_t xt;
+ private_data_t *pdp = DEVICE_PRIVATE(env);
+ char *service = "master-interrupt";
+ int portid;
+ token_t xt;
+ int error;
+ fc_cell_t status;
- CHECK_DEPTH(env, 2, "jupiter:master-interrput");
+ CHECK_DEPTH(env, 2, "jupiter:master-interrupt");
portid = POP(DS);
xt = POP(DS);
+ /*
+ * Install the master interrupt handler for this port id.
+ */
+ error = fc_run_priv(pdp->common, service, 2, 1,
+ fc_uint32_t2cell(portid), fc_uint32_t2cell(xt), &status);
+
+ if (error || !status)
+ throw_from_fclib(env, 1, "jupiter:%s: failed\n", service);
+
PUSH(DS, FALSE);
+
debug_msg(DEBUG_REG_ACCESS,
"jupiter:master-interrupt ( %x %x ) -> %x\n",
portid, xt, (int)FALSE);