1379 rp->r_pc);
1380 } else {
1381 #ifdef DEBUG
1382 descrp = &CPU->cpu_gdt[idx];
1383 baseaddr = (caddr_t)(uintptr_t)USEGD_GETBASE(descrp);
1384 /* GDT-based descriptors' base addresses should always be 0 */
1385 ASSERT(baseaddr == 0);
1386 #endif
1387 *linearp = (caddr_t)(uintptr_t)rp->r_pc;
1388 }
1389
1390 return (0);
1391 }
1392
1393 /*
1394 * We need to post a soft interrupt to reprogram the lbolt cyclic when
1395 * switching from event to cyclic driven lbolt. The following code adds
1396 * and posts the softint for x86.
1397 */
1398 static ddi_softint_hdl_impl_t lbolt_softint_hdl =
1399 {0, NULL, NULL, NULL, 0, NULL, NULL, NULL};
1400
1401 void
1402 lbolt_softint_add(void)
1403 {
1404 (void) add_avsoftintr((void *)&lbolt_softint_hdl, LOCK_LEVEL,
1405 (avfunc)lbolt_ev_to_cyclic, "lbolt_ev_to_cyclic", NULL, NULL);
1406 }
1407
1408 void
1409 lbolt_softint_post(void)
1410 {
1411 (*setsoftint)(CBE_LOCK_PIL, lbolt_softint_hdl.ih_pending);
1412 }
1413
1414 boolean_t
1415 plat_dr_check_capability(uint64_t features)
1416 {
1417 return ((plat_dr_options & features) == features);
1418 }
1419
|
1379 rp->r_pc);
1380 } else {
1381 #ifdef DEBUG
1382 descrp = &CPU->cpu_gdt[idx];
1383 baseaddr = (caddr_t)(uintptr_t)USEGD_GETBASE(descrp);
1384 /* GDT-based descriptors' base addresses should always be 0 */
1385 ASSERT(baseaddr == 0);
1386 #endif
1387 *linearp = (caddr_t)(uintptr_t)rp->r_pc;
1388 }
1389
1390 return (0);
1391 }
1392
1393 /*
1394 * We need to post a soft interrupt to reprogram the lbolt cyclic when
1395 * switching from event to cyclic driven lbolt. The following code adds
1396 * and posts the softint for x86.
1397 */
1398 static ddi_softint_hdl_impl_t lbolt_softint_hdl =
1399 {NULL, 0, {{NULL}}, NULL, NULL, NULL, NULL, NULL};
1400
1401 void
1402 lbolt_softint_add(void)
1403 {
1404 (void) add_avsoftintr((void *)&lbolt_softint_hdl, LOCK_LEVEL,
1405 (avfunc)lbolt_ev_to_cyclic, "lbolt_ev_to_cyclic", NULL, NULL);
1406 }
1407
1408 void
1409 lbolt_softint_post(void)
1410 {
1411 (*setsoftint)(CBE_LOCK_PIL, lbolt_softint_hdl.ih_pending);
1412 }
1413
1414 boolean_t
1415 plat_dr_check_capability(uint64_t features)
1416 {
1417 return ((plat_dr_options & features) == features);
1418 }
1419
|