Lines Matching +full:open +full:- +full:pic
62 * This open source software license conforms to the BSD License template.
131 uint32_t pcbe_pic; /* unshifted raw %pic value */
188 { "MD5_SHA-1_SHA-256_op", 0x608, 0xff },
194 { "MD5_SHA-1_SHA-256_busy_cycle", 0x708, 0xff },
201 { "MD5_SHA-1_SHA-256_op", 0x608, 0x3f },
207 { "MD5_SHA-1_SHA-256_busy_cycle", 0x708, 0x3f },
302 for (evp = ni2_events; evp->name != NULL; evp++) in ni2_pcbe_init()
303 evlist_sz += strlen(evp->name) + 1; in ni2_pcbe_init()
305 for (gevp = ni2_generic_events; gevp->name != NULL; gevp++) in ni2_pcbe_init()
306 evlist_sz += strlen(gevp->name) + 1; in ni2_pcbe_init()
311 for (evp = ni2_events; evp->name != NULL; evp++) { in ni2_pcbe_init()
312 (void) strcat(evlist, evp->name); in ni2_pcbe_init()
316 for (gevp = ni2_generic_events; gevp->name != NULL; gevp++) { in ni2_pcbe_init()
317 (void) strcat(evlist, gevp->name); in ni2_pcbe_init()
324 evlist[evlist_sz - 1] = '\0'; in ni2_pcbe_init()
379 for (gevp = ni2_generic_events; gevp->name != NULL; gevp++) { in find_generic_event()
380 if (strcmp(name, gevp->name) == 0) in find_generic_event()
392 for (evp = ni2_events; evp->name != NULL; evp++) in find_event()
393 if (strcmp(name, evp->name) == 0) in find_event()
419 uint64_t pic; in ni2_pcbe_overflow_bitmap() local
432 pic = ultra_getpic(); in ni2_pcbe_overflow_bitmap()
433 pic0 = (uint32_t)(pic & PIC0_MASK); in ni2_pcbe_overflow_bitmap()
434 pic1 = (uint32_t)((pic >> PIC1_SHIFT) & PIC0_MASK); in ni2_pcbe_overflow_bitmap()
500 cfg->pcbe_pic = (uint32_t)preset; in ni2_pcbe_configure()
510 evp = find_event(gevp->event); in ni2_pcbe_configure()
520 evsel = evp->emask; in ni2_pcbe_configure()
527 if ((attrs[i].ka_val | evp->emask_valid) != in ni2_pcbe_configure()
528 evp->emask_valid) in ni2_pcbe_configure()
564 (other_config->pcbe_flags != flags)) in ni2_pcbe_configure()
574 * If this is a static per-CPU configuration, the CPC in ni2_pcbe_configure()
576 * CPU. If this is a per-LWP configuration, the driver in ni2_pcbe_configure()
577 * ensures no static per-CPU counting is ongoing and that in ni2_pcbe_configure()
599 cfg->pcbe_picno = picnum; in ni2_pcbe_configure()
600 cfg->pcbe_evsel = evsel; in ni2_pcbe_configure()
601 cfg->pcbe_flags = flags; in ni2_pcbe_configure()
602 cfg->pcbe_pic = (uint32_t)preset; in ni2_pcbe_configure()
619 /* enable trap-on-event for pic0 and pic1 */ in ni2_pcbe_program()
628 nullcfg.pcbe_flags = pic0->pcbe_flags; in ni2_pcbe_program()
629 toe = CPC_PCR_TOE0; /* enable trap-on-event for pic0 */ in ni2_pcbe_program()
632 if (pic0->pcbe_picno != 0) { in ni2_pcbe_program()
641 toe = CPC_PCR_TOE1; /* enable trap-on-event for pic1 */ in ni2_pcbe_program()
644 if (pic0->pcbe_picno != 0 || pic1->pcbe_picno != 1) in ni2_pcbe_program()
653 ASSERT(pic0->pcbe_flags == pic1->pcbe_flags); in ni2_pcbe_program()
657 ultra_setpic(((uint64_t)pic1->pcbe_pic << PIC1_SHIFT) | in ni2_pcbe_program()
658 (uint64_t)pic0->pcbe_pic); in ni2_pcbe_program()
660 pcr = (pic0->pcbe_evsel & pcr_pic0_mask) << CPC_PCR_PIC0_SHIFT; in ni2_pcbe_program()
661 pcr |= (pic1->pcbe_evsel & pcr_pic1_mask) << in ni2_pcbe_program()
664 if (pic0->pcbe_flags & CPC_COUNT_USER) in ni2_pcbe_program()
666 if (pic0->pcbe_flags & CPC_COUNT_SYSTEM) in ni2_pcbe_program()
668 if (pic0->pcbe_flags & CPC_COUNT_HV) in ni2_pcbe_program()
671 if (pic0->pcbe_flags & CPC_COUNT_SAMPLE_MODE) in ni2_pcbe_program()
681 if ((pic0->pcbe_evsel & L2_dmiss_ld_event) == L2_dmiss_ld_event) in ni2_pcbe_program()
684 if ((pic1->pcbe_evsel & L2_dmiss_ld_event) == L2_dmiss_ld_event) in ni2_pcbe_program()
691 if (pic0->pcbe_flags & CPC_COUNT_HV) { in ni2_pcbe_program()
708 ni2_cpc_counting[CPU->cpu_id] = B_TRUE; in ni2_pcbe_program()
711 * On UltraSPARC, only read-to-read counts are accurate. We cannot in ni2_pcbe_program()
712 * expect the value we wrote into the PIC, above, to be there after in ni2_pcbe_program()
717 pic0->pcbe_pic = (uint32_t)(curpic & PIC0_MASK); in ni2_pcbe_program()
718 pic1->pcbe_pic = (uint32_t)(curpic >> PIC1_SHIFT); in ni2_pcbe_program()
736 ni2_cpc_counting[CPU->cpu_id] = B_FALSE; in ni2_pcbe_allstop()
765 if (pic0->pcbe_picno != 0) { in ni2_pcbe_sample()
775 if (pic0->pcbe_picno != 0 || pic1->pcbe_picno != 1) in ni2_pcbe_sample()
779 if (pic0->pcbe_flags & CPC_COUNT_HV) { in ni2_pcbe_sample()
788 if (ni2_cpc_counting[CPU->cpu_id] && in ni2_pcbe_sample()
795 diff = (curpic & PIC0_MASK) - (uint64_t)pic0->pcbe_pic; in ni2_pcbe_sample()
800 diff = (curpic >> 32) - (uint64_t)pic1->pcbe_pic; in ni2_pcbe_sample()
805 pic0->pcbe_pic = (uint32_t)(curpic & PIC0_MASK); in ni2_pcbe_sample()
806 pic1->pcbe_pic = (uint32_t)(curpic >> PIC1_SHIFT); in ni2_pcbe_sample()