brintos

brintos / linux-shallow public Read only

0
0
Text · 1.0 KiB · bb9f587 Raw
59 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright 2014, Michael Ellerman, IBM Corp.4 */5 6#include <stdio.h>7#include <stdlib.h>8 9#include "ebb.h"10 11 12/*13 * Basic test that counts user cycles and takes EBBs.14 */15int cycles(void)16{17	struct event event;18 19	SKIP_IF(!ebb_is_supported());20 21	event_init_named(&event, 0x1001e, "cycles");22	event_leader_ebb_init(&event);23 24	event.attr.exclude_kernel = 1;25	event.attr.exclude_hv = 1;26	event.attr.exclude_idle = 1;27 28	FAIL_IF(event_open(&event));29 30	ebb_enable_pmc_counting(1);31	setup_ebb_handler(standard_ebb_callee);32	ebb_global_enable();33	FAIL_IF(ebb_event_enable(&event));34 35	mtspr(SPRN_PMC1, pmc_sample_period(sample_period));36 37	while (ebb_state.stats.ebb_count < 10) {38		FAIL_IF(core_busy_loop());39		FAIL_IF(ebb_check_mmcr0());40	}41 42	ebb_global_disable();43	ebb_freeze_pmcs();44 45	dump_ebb_state();46 47	event_close(&event);48 49	FAIL_IF(ebb_state.stats.ebb_count == 0);50	FAIL_IF(!ebb_check_count(1, sample_period, 100));51 52	return 0;53}54 55int main(void)56{57	return test_harness(cycles, "cycles");58}59