Lines Matching +full:open +full:- +full:pic

63  * This open source software license conforms to the BSD License template.
124 uint32_t us_pic; /* unshifted raw %pic value */
137 #define PIC0_MASK (((uint64_t)1 << 32) - 1)
577 "(Part No. 802-7220-02) "
645 return (-1); in us_pcbe_init()
649 * Initialize the list of events for each PIC. in us_pcbe_init()
655 for (n = events[i]; n->bits != NT_END; n++) in us_pcbe_init()
656 size += strlen(n->name) + 1; in us_pcbe_init()
657 for (gevp = generic_events[i]; gevp->name != NULL; gevp++) in us_pcbe_init()
658 size += strlen(gevp->name) + 1; in us_pcbe_init()
661 for (n = events[i]; n->bits != NT_END; n++) { in us_pcbe_init()
662 (void) strcat(pic_events[i], n->name); in us_pcbe_init()
665 for (gevp = generic_events[i]; gevp->name != NULL; gevp++) { in us_pcbe_init()
666 (void) strcat(pic_events[i], gevp->name); in us_pcbe_init()
673 pic_events[i][size - 1] = '\0'; in us_pcbe_init()
716 for (gevp = generic_events[regno]; gevp->name != NULL; gevp++) in find_generic_event()
717 if (strcmp(name, gevp->name) == 0) in find_generic_event()
730 for (; n->bits != NT_END; n++) in find_event()
731 if (strcmp(name, n->name) == 0) in find_event()
778 conf->us_pic = (uint32_t)preset; in us_pcbe_configure()
793 (other_config->us_flags != flags)) in us_pcbe_configure()
798 n = find_event(picnum, gevp->event); in us_pcbe_configure()
807 conf->us_picno = picnum; in us_pcbe_configure()
808 conf->us_bits = (uint32_t)n->bits; in us_pcbe_configure()
809 conf->us_flags = flags; in us_pcbe_configure()
810 conf->us_pic = (uint32_t)preset; in us_pcbe_configure()
832 empty.us_flags = pic0->us_flags; in us_pcbe_program()
835 if (pic0->us_picno != 0) { in us_pcbe_program()
841 empty.us_bits = 0x14; /* SW_count_0 - won't overflow */ in us_pcbe_program()
847 if (pic0->us_picno != 0 || pic1->us_picno != 1) in us_pcbe_program()
856 ASSERT(pic0->us_flags == pic1->us_flags); in us_pcbe_program()
859 ultra_setpic(((uint64_t)pic1->us_pic << 32) | (uint64_t)pic0->us_pic); in us_pcbe_program()
861 pcr = (pic0->us_bits & pcr_pic_mask) << in us_pcbe_program()
863 pcr |= (pic1->us_bits & pcr_pic_mask) << in us_pcbe_program()
866 if (pic0->us_flags & CPC_COUNT_USER) in us_pcbe_program()
868 if (pic0->us_flags & CPC_COUNT_SYSTEM) in us_pcbe_program()
876 * On UltraSPARC, only read-to-read counts are accurate. We cannot in us_pcbe_program()
877 * expect the value we wrote into the PIC, above, to be there after in us_pcbe_program()
882 pic0->us_pic = (uint32_t)(curpic & PIC0_MASK); in us_pcbe_program()
883 pic1->us_pic = (uint32_t)(curpic >> 32); in us_pcbe_program()
917 if (pic0->us_picno != 0) { in us_pcbe_sample()
927 if (pic0->us_picno != 0 || pic1->us_picno != 1) in us_pcbe_sample()
930 diff = (curpic & PIC0_MASK) - (uint64_t)pic0->us_pic; in us_pcbe_sample()
935 diff = (curpic >> 32) - (uint64_t)pic1->us_pic; in us_pcbe_sample()
940 pic0->us_pic = (uint32_t)(curpic & PIC0_MASK); in us_pcbe_sample()
941 pic1->us_pic = (uint32_t)(curpic >> 32); in us_pcbe_sample()